-
-
+ updateThreadLocal()"
+ @open-image="openImage"
/>
@@ -127,9 +140,11 @@
-
+
-
+
+
+ {{ formatMessage(messages.replyAddresses) }}
+
+
+ {{ facet.label }}
+
+
+
+
sendReply(null, true))"
>
-
-
- {{ formatMessage(messages.actionResubmitForReviewWithReply) }}
-
-
-
- {{ formatMessage(messages.actionResubmitForReview) }}
-
+
+
+ {{ formatMessage(messages.actionResubmitForReviewWithReply) }}
+
+
+
+ {{ formatMessage(messages.actionResubmitForReview) }}
+
+
@@ -313,10 +348,7 @@
runBlockingAction('send-to-review-reply', () =>
sendReply('processing', true),
),
- disabled:
- project.status === 'processing' ||
- isLoading ||
- reviewSubmissionDisabled,
+ disabled: project.status === 'processing' || isLoading,
},
]
: [
@@ -345,10 +377,7 @@
hoverFilled: true,
action: () =>
runBlockingAction('send-to-review', () => setStatus('processing')),
- disabled:
- project.status === 'processing' ||
- isLoading ||
- reviewSubmissionDisabled,
+ disabled: project.status === 'processing' || isLoading,
},
]
"
@@ -400,6 +429,25 @@
+
+
+
+
+
+
+
@@ -407,6 +455,7 @@
import {
CheckCircleIcon,
CheckIcon,
+ ExternalIcon,
EyeOffIcon,
FileTextIcon,
ReplyIcon,
@@ -418,27 +467,57 @@ import {
} from '@modrinth/assets'
import {
Button,
+ ButtonLink,
Checkbox,
commonMessages,
CopyCode,
defineMessages,
+ ImageViewerEditor,
+ injectModrinthClient,
injectNotificationManager,
IntlFormatted,
MarkdownEditor,
NewModal,
SplitButton,
+ Tooltip,
useVIntl,
} from '@modrinth/ui'
+import { useMutation, useQueryClient } from '@tanstack/vue-query'
+import { computed, nextTick, ref, watch } from 'vue'
-import ThreadMessage from '~/components/ui/thread/ThreadMessage.vue'
+import ThreadTimeline from '~/components/ui/thread/ThreadTimeline.vue'
import { useImageUpload } from '~/composables/image-upload.ts'
import { isApproved, isRejected } from '~/helpers/projects.js'
+import { sendThreadReply } from '~/helpers/thread-issues'
import { isStaff } from '~/helpers/users.js'
+const client = injectModrinthClient()
+const queryClient = useQueryClient()
+const route = useRoute()
const { addNotification } = injectNotificationManager()
const { formatMessage } = useVIntl()
const messages = defineMessages({
+ replyAddresses: {
+ id: 'conversation-thread.reply.addresses',
+ defaultMessage: 'This reply addresses the following requested explanations:',
+ },
+ replyFacet: {
+ id: 'conversation-thread.reply.facet',
+ defaultMessage: 'Explanation for {issue}',
+ },
+ unknownIssue: {
+ id: 'conversation-thread.reply.unknown-issue',
+ defaultMessage: 'Moderation issue',
+ },
+ changedThread: {
+ id: 'conversation-thread.reply.changed-thread',
+ defaultMessage: 'The selected thread changed. Open it again before replying.',
+ },
+ openImageExternally: {
+ id: 'conversation-thread.image.open-externally',
+ defaultMessage: 'Open externally',
+ },
resubmitModalHeaderResubmitting: {
id: 'conversation-thread.resubmit-modal.header.resubmitting',
defaultMessage: 'Resubmitting for review',
@@ -448,9 +527,14 @@ const messages = defineMessages({
defaultMessage: 'Submitting for review',
},
resubmitModalDescription: {
- id: 'conversation-thread.resubmit-modal.description',
+ id: 'conversation-thread.resubmit-modal.description.auto-approval',
+ defaultMessage:
+ "You're resubmitting
{projectTitle} . If all moderation issues are resolved, it may be approved automatically. Otherwise, it will be sent to the moderators for review.",
+ },
+ submitModalDescription: {
+ id: 'conversation-thread.submit-modal.description',
defaultMessage:
- "You're submitting
{projectTitle} to be reviewed again by the moderators.",
+ "You're submitting
{projectTitle} to be reviewed by the moderators.",
},
resubmitModalReminder: {
id: 'conversation-thread.resubmit-modal.reminder',
@@ -507,6 +591,10 @@ const messages = defineMessages({
id: 'conversation-thread.action.resubmit-for-review',
defaultMessage: 'Resubmit for review',
},
+ resubmitRequiredActionsTooltip: {
+ id: 'conversation-thread.resubmit-required-actions-tooltip',
+ defaultMessage: 'You must complete all required actions above to resubmit',
+ },
actionReplyToThread: {
id: 'conversation-thread.action.reply-to-thread',
defaultMessage: 'Reply to thread',
@@ -594,6 +682,10 @@ const messages = defineMessages({
})
const props = defineProps({
+ projectOwnerId: {
+ type: String,
+ default: null,
+ },
reviewSubmissionDisabled: {
type: Boolean,
default: false,
@@ -643,6 +735,78 @@ const members = computed(() => {
})
const replyBody = ref('')
+const replyEditor = ref(null)
+const selectedReplyFacetIds = ref([])
+const replyFacets = computed(() =>
+ props.project && (props.currentMember?.accepted || isStaff(props.auth.user))
+ ? (props.thread.issues ?? []).flatMap((issue) =>
+ issue.facets
+ .filter(
+ (facet) =>
+ facet.verdict === 'open' &&
+ facet.what.type === 'acknowledge' &&
+ facet.what.value.mode === 'reply',
+ )
+ .map((facet) => ({
+ id: facet.id,
+ label: formatMessage(messages.replyFacet, {
+ issue: issue.why?.title ?? formatMessage(messages.unknownIssue),
+ }),
+ })),
+ )
+ : [],
+)
+function selectReplyFacet(id, selected) {
+ selectedReplyFacetIds.value = selected
+ ? [...new Set([...selectedReplyFacetIds.value, id])]
+ : selectedReplyFacetIds.value.filter((entry) => entry !== id)
+}
+watch(
+ [() => route.query.reply_to_facet, replyFacets, replyEditor],
+ async ([id, facets]) => {
+ const ids = (Array.isArray(id) ? id : [id]).filter(
+ (id) => typeof id === 'string' && facets.some((facet) => facet.id === id),
+ )
+ if (!ids.length) return
+ for (const id of ids) selectReplyFacet(id, true)
+ await nextTick()
+ await replyEditor.value?.focus?.()
+ },
+ { immediate: true, flush: 'post' },
+)
+watch(
+ () => props.thread.id,
+ () => {
+ replyBody.value = ''
+ selectedReplyFacetIds.value = []
+ imageIDs.value = []
+ },
+)
+
+const imageViewer = ref(null)
+const imageItems = ref([])
+let imageTrigger
+
+async function openImage(image) {
+ imageTrigger = image.element
+ imageItems.value = [{ id: image.src, src: image.src, alt: image.alt }]
+ await nextTick()
+ imageViewer.value?.show(0)
+}
+
+function restoreImageFocus() {
+ if (imageTrigger?.isConnected) imageTrigger.focus({ preventScroll: true })
+ imageTrigger = undefined
+}
+
+watch(
+ () => props.thread?.id,
+ () => {
+ imageTrigger = undefined
+ imageViewer.value?.hide()
+ imageItems.value = []
+ },
+)
const sortedMessages = computed(() => {
if (props.thread !== null) {
@@ -671,78 +835,119 @@ async function runBlockingAction(actionId, action) {
}
}
-async function updateThreadLocal() {
- let threadId = null
- if (props.project) {
- threadId = props.project.thread_id
- } else if (props.report) {
- threadId = props.report.thread_id
- }
- let thread = null
- if (threadId) {
- thread = await useBaseFetch(`thread/${threadId}`)
- }
- emit('update-thread', thread)
+async function updateThreadLocal(threadId = props.thread.id) {
+ const thread = await queryClient.fetchQuery({
+ queryKey: ['thread', threadId],
+ queryFn: () => client.labrinth.threads_v3.getThread(threadId),
+ staleTime: 0,
+ })
+ if (props.thread.id === threadId) emit('update-thread', thread)
}
const imageIDs = ref([])
async function onUploadImage(file) {
- const response = await useImageUpload(file, { context: 'thread_message' })
-
- imageIDs.value.push(response.id)
- // Keep the last 10 entries of image IDs
- imageIDs.value = imageIDs.value.slice(-10)
+ try {
+ const response = await useImageUpload(file, { context: 'thread_message' })
- return response.url
-}
+ imageIDs.value.push(response.id)
+ imageIDs.value = imageIDs.value.slice(-10)
-async function sendReplyFromModal(status = null, privateMessage = false) {
- await sendReply(status, privateMessage)
- modalReply.value.hide()
+ return response.url
+ } catch (error) {
+ addNotification({
+ title: formatMessage(commonMessages.errorNotificationTitle),
+ text: error instanceof Error ? error.message : String(error),
+ type: 'error',
+ })
+ throw error
+ }
}
-async function sendReply(status = null, privateMessage = false) {
- if (status === 'processing' && props.reviewSubmissionDisabled) return
- try {
- const body = {
- body: {
- type: 'text',
- body: replyBody.value,
- private: privateMessage,
- },
+const replyMutation = useMutation({
+ mutationFn: async ({ threadId, projectId, status, privateMessage }) => {
+ const assertCurrent = () => {
+ if (props.thread.id !== threadId) throw new Error(formatMessage(messages.changedThread))
}
-
- if (imageIDs.value.length > 0) {
- body.body = {
- ...body.body,
- uploaded_images: imageIDs.value,
+ if (replyBody.value.trim()) {
+ const reply = {
+ threadId,
+ body: replyBody.value,
+ images: [...imageIDs.value],
+ privateMessage,
+ }
+ const facetIds = privateMessage
+ ? []
+ : (props.thread.issues ?? []).flatMap((issue) =>
+ issue.facets.some((facet) => selectedReplyFacetIds.value.includes(facet.id))
+ ? issue.facets
+ .filter(
+ (facet) =>
+ facet.verdict === 'open' &&
+ facet.what.type === 'acknowledge' &&
+ (facet.what.value.mode === 'checkbox' ||
+ selectedReplyFacetIds.value.includes(facet.id)),
+ )
+ .map(({ id }) => id)
+ : [],
+ )
+ await sendThreadReply(reply, client, assertCurrent)
+ replyBody.value = ''
+ imageIDs.value = []
+ selectedReplyFacetIds.value = []
+ for (const facetId of facetIds) {
+ assertCurrent()
+ await client.labrinth.threads_v3.user_addressed(facetId)
}
}
-
- await useBaseFetch(`thread/${props.thread.id}`, {
- method: 'POST',
- body,
- })
-
- replyBody.value = ''
-
- await updateThreadLocal()
- if (status !== null) {
- await props.setStatus(status)
- }
- } catch (err) {
+ assertCurrent()
+ await updateThreadLocal(threadId)
+ if (projectId)
+ await queryClient.invalidateQueries({
+ queryKey: ['project', projectId, 'validation'],
+ })
+ assertCurrent()
+ if (status !== null) return (await props.setStatus(status)) !== false
+ return true
+ },
+ onError: (error) =>
addNotification({
title: formatMessage(messages.errorSendingMessage),
- text: err.data ? err.data.description : err,
+ text: error instanceof Error ? error.message : String(error),
type: 'error',
+ }),
+ onSettled: async (_, __, { threadId, projectId }) => {
+ await Promise.all([
+ queryClient.invalidateQueries({ queryKey: ['thread', threadId] }),
+ projectId
+ ? queryClient.invalidateQueries({
+ queryKey: ['project', projectId, 'validation'],
+ })
+ : Promise.resolve(),
+ ])
+ },
+})
+
+async function sendReplyFromModal(status = null, privateMessage = false) {
+ if (await sendReply(status, privateMessage)) modalReply.value.hide()
+}
+
+async function sendReply(status = null, privateMessage = false) {
+ if (status === 'processing' && props.reviewSubmissionDisabled && !isStaff(props.auth.user))
+ return false
+ return await replyMutation
+ .mutateAsync({
+ threadId: props.thread.id,
+ projectId: props.project?.id,
+ status,
+ privateMessage,
})
- }
+ .catch(() => false)
}
async function closeReport(reply) {
if (reply) {
- await sendReply()
+ if (!(await sendReply())) return
}
try {
@@ -798,14 +1003,18 @@ function openReplyModal() {
async function resubmit() {
if (props.reviewSubmissionDisabled) return
if (replyWithSubmission.value) {
- await sendReply('processing')
+ if (!(await sendReply('processing'))) return
} else {
- await props.setStatus('processing')
+ if ((await props.setStatus('processing')) === false) return
}
modalSubmit.value.hide()
}
-const requestedStatus = computed(() => props.project.requested_status ?? 'approved')
+const requestedStatus = computed(() =>
+ ['approved', 'unlisted', 'private'].includes(props.project?.requested_status)
+ ? props.project.requested_status
+ : 'approved',
+)
defineOptions({
inheritAttrs: false,
diff --git a/apps/frontend/src/components/ui/thread/ThreadIssueHistory.vue b/apps/frontend/src/components/ui/thread/ThreadIssueHistory.vue
new file mode 100644
index 00000000000..fda95c57725
--- /dev/null
+++ b/apps/frontend/src/components/ui/thread/ThreadIssueHistory.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ author.username }}
+
+
{{
+ formatMessage(messages.moderator)
+ }}
+
+ {{ ' ' }}
+
+
+
+
{{
+ relativeTime(entry.created)
+ }}
+
+
+
+
+
+
diff --git a/apps/frontend/src/components/ui/thread/ThreadMessage.vue b/apps/frontend/src/components/ui/thread/ThreadMessage.vue
index 08dd9399b96..0c5805b8b23 100644
--- a/apps/frontend/src/components/ui/thread/ThreadMessage.vue
+++ b/apps/frontend/src/components/ui/thread/ThreadMessage.vue
@@ -1,152 +1,208 @@
-
-
-
-
-
-
- {{ members[message.author_id].username }}
-
-
-
-
-
+
+
+
+
+
+
+
+
+ {{ author.username }}
+
+
+
+
+
+ {{ formatMessage(imageMessages.preview) }}
+
+
+
+
- Preview
+ {{ formatMessage(isAutoApproval ? imageMessages.projectOwner : imageMessages.moderator) }}
+
-
-
-
+
-
-
-
-
+
- Moderator
-
-
-
-
-
-
- This project was published on Modrinth before moderation threads existed and may be missing
- moderation history.
-
- posted a message that has been deleted.
-
-
- submitted the project for review.
+
+ {{ formatMessage(imageMessages.legacyProjectMessage) }}
-
- reviewed the project and set its status to .
+
+ {{ formatMessage(imageMessages.deletedMessage) }}
-
- reverted this project back to a .
+
+
+
+
-
- changed the project's status from to
- .
+
+
+ {{ formatMessage(imageMessages.submittedForReview) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ formatMessage(imageMessages.threadClosed) }}
-
- closed the thread.
- reopened the thread.
-
- completed technical review and marked project as
- .
-
-
- The project has entered the technical review queue.
-
-
- The project has left the technical review queue as all pending traces have been resolved.
-
-
- The project has left the technical review queue as all files pending review were deleted by
- the user.
-
-
-
-
- {{ timeSincePosted }}
-
-
-
-
-
- Delete
-
+
+ {{ formatMessage(imageMessages.threadReopened) }}
+
+
+
+
+
+
+
+
+
+ {{ formatMessage(imageMessages.techReviewEntered) }}
+
+
+ {{ formatMessage(imageMessages.techReviewExited) }}
+
+
+ {{ formatMessage(imageMessages.techReviewExitFileDeleted) }}
+
+
+
+
+
+ {{ timeSincePosted }}
+
+
+
+
+
+ {{ formatMessage(imageMessages.delete) }}
+
+
+
@@ -156,9 +212,7 @@ import {
EyeOffIcon,
InfoIcon,
MicrophoneIcon,
- ModrinthIcon,
MoreHorizontalIcon,
- ScaleIcon,
TrashIcon,
} from '@modrinth/assets'
import { moderationSettings } from '@modrinth/moderation'
@@ -166,19 +220,33 @@ import {
AutoLink,
Avatar,
Badge,
+ defineMessages,
+ injectModrinthClient,
+ IntlFormatted,
TeleportOverflowMenu,
useFormatDateTime,
useRelativeTime,
+ useVIntl,
} from '@modrinth/ui'
import { renderString } from '@modrinth/utils'
import { isStaff } from '~/helpers/users.js'
+import ThreadRoleBadge from './ThreadRoleBadge.vue'
+
const props = defineProps({
message: {
type: Object,
required: true,
},
+ reviewIssueCount: {
+ type: Number,
+ default: 0,
+ },
+ projectOwnerId: {
+ type: String,
+ default: null,
+ },
report: {
type: Object,
default: null,
@@ -199,14 +267,149 @@ const props = defineProps({
type: Boolean,
default: false,
},
+ imagePreviews: {
+ type: Boolean,
+ default: false,
+ },
auth: {
type: Object,
required: true,
},
})
-const emit = defineEmits(['update-thread'])
+const hasBody = computed(() => props.message.body.type === 'text' && !props.forceCompact)
+const authorClasses = 'inline [&>svg]:ms-1 [&>svg]:me-1 [&>svg]:inline-block [&>svg]:align-middle'
+const bodyClasses = computed(() => (hasBody.value ? 'mt-1' : 'ms-1 inline'))
+
+const emit = defineEmits(['update-thread', 'open-image'])
const settings = useModerationSettings()
+const client = injectModrinthClient()
+const isAutoApproval = computed(() => props.message.body.type === 'auto_approval')
+const author = computed(
+ () => props.members[isAutoApproval.value ? props.projectOwnerId : props.message.author_id],
+)
+
+const { formatMessage } = useVIntl()
+
+const imageMessages = defineMessages({
+ projectOwner: {
+ id: 'thread.message.project-owner',
+ defaultMessage: 'Project owner',
+ },
+ moderator: {
+ id: 'thread.message.moderator',
+ defaultMessage: 'Moderator',
+ },
+ autoApproval: {
+ id: 'thread.message.auto-approval',
+ defaultMessage:
+ 'resolved all issues and the project status has been automatically set to
approved .',
+ },
+ review: {
+ id: 'thread.message.review',
+ defaultMessage: 'reviewed the project and set its status to
status .',
+ },
+ reviewWithIssues: {
+ id: 'thread.message.review-with-issues',
+ defaultMessage:
+ 'reviewed the project and set its status to
status with {count, plural, one {# issue} other {# issues}}.',
+ },
+ openImage: {
+ id: 'thread.message.open-image',
+ defaultMessage: 'Open image',
+ },
+ privateMessage: {
+ id: 'thread.message.private-message',
+ defaultMessage: 'Only visible to moderators',
+ },
+ reporter: { id: 'thread.message.reporter', defaultMessage: 'Reporter' },
+ preview: { id: 'thread.message.preview', defaultMessage: 'Preview' },
+ legacyProjectMessage: {
+ id: 'thread.message.legacy-project-message',
+ defaultMessage:
+ 'This project was published on Modrinth before moderation threads existed and may be missing moderation history.',
+ },
+ deletedMessage: {
+ id: 'thread.message.deleted-message',
+ defaultMessage: 'posted a message that has been deleted.',
+ },
+ submittedForReview: {
+ id: 'thread.message.submitted-for-review',
+ defaultMessage: 'submitted the project for review.',
+ },
+ revertedToDraft: {
+ id: 'thread.message.reverted-to-draft',
+ defaultMessage: 'reverted this project back to a
. ',
+ },
+ statusChanged: {
+ id: 'thread.message.status-changed',
+ defaultMessage:
+ "changed the project's status from
status to
. ",
+ },
+ threadClosed: {
+ id: 'thread.message.thread-closed',
+ defaultMessage: 'closed the thread.',
+ },
+ threadReopened: {
+ id: 'thread.message.thread-reopened',
+ defaultMessage: 'reopened the thread.',
+ },
+ techReviewCompleted: {
+ id: 'thread.message.tech-review-completed',
+ defaultMessage: 'completed technical review and marked project as
. ',
+ },
+ techReviewEntered: {
+ id: 'thread.message.tech-review-entered',
+ defaultMessage: 'The project has entered the technical review queue.',
+ },
+ techReviewExited: {
+ id: 'thread.message.tech-review-exited',
+ defaultMessage:
+ 'The project has left the technical review queue as all pending traces have been resolved.',
+ },
+ techReviewExitFileDeleted: {
+ id: 'thread.message.tech-review-exit-file-deleted',
+ defaultMessage:
+ 'The project has left the technical review queue as all files pending review were deleted by the user.',
+ },
+ moreOptions: { id: 'thread.message.more-options', defaultMessage: 'More options' },
+ delete: { id: 'thread.message.delete', defaultMessage: 'Delete' },
+ sentImage: { id: 'thread.message.sent-image', defaultMessage: 'sent an image.' },
+ sentMessage: { id: 'thread.message.sent-message', defaultMessage: 'sent a message.' },
+})
+
+function prepareImagePreviews(element, binding) {
+ if (!binding.value && !binding.oldValue) return
+ for (const image of element.querySelectorAll('img')) {
+ if (binding.value && image.getAttribute('src')) {
+ image.setAttribute('role', 'button')
+ image.setAttribute('tabindex', '0')
+ image.setAttribute('aria-label', image.alt || binding.value)
+ } else {
+ image.removeAttribute('role')
+ image.removeAttribute('tabindex')
+ image.removeAttribute('aria-label')
+ }
+ }
+}
+
+const vImagePreviews = {
+ mounted: prepareImagePreviews,
+ updated: prepareImagePreviews,
+}
+
+function openImage(event) {
+ if (!props.imagePreviews || !(event.target instanceof HTMLImageElement)) return
+ const image = event.target
+ if (!image.getAttribute('src')) return
+ event.preventDefault()
+ event.stopPropagation()
+ emit('open-image', { src: image.currentSrc || image.src, alt: image.alt, element: image })
+}
+
+function handleImageKeydown(event) {
+ if (event.key === 'Enter' || event.key === ' ') openImage(event)
+}
const formattedMessage = computed(() => {
const body = renderString(props.message.body.body)
@@ -216,9 +419,9 @@ const formattedMessage = computed(() => {
if (noHtml.trim()) {
return noHtml
} else if (hasImage) {
- return 'sent an image.'
+ return formatMessage(imageMessages.sentImage)
} else {
- return 'sent a message.'
+ return formatMessage(imageMessages.sentMessage)
}
}
return body
@@ -245,191 +448,7 @@ const isPrivateMessage = computed(() => {
})
async function deleteMessage() {
- await useBaseFetch(`message/${props.message.id}`, {
- method: 'DELETE',
- })
+ await client.labrinth.threads_v3.deleteMessage(props.message.id)
emit('update-thread')
}
-
-
diff --git a/apps/frontend/src/components/ui/thread/ThreadRoleBadge.vue b/apps/frontend/src/components/ui/thread/ThreadRoleBadge.vue
new file mode 100644
index 00000000000..3b680ed47a3
--- /dev/null
+++ b/apps/frontend/src/components/ui/thread/ThreadRoleBadge.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
diff --git a/apps/frontend/src/components/ui/thread/ThreadSummary.vue b/apps/frontend/src/components/ui/thread/ThreadSummary.vue
index 3a348256ea4..441d1d479d1 100644
--- a/apps/frontend/src/components/ui/thread/ThreadSummary.vue
+++ b/apps/frontend/src/components/ui/thread/ThreadSummary.vue
@@ -12,6 +12,8 @@
v-for="message in displayMessages"
:key="message.id"
:message="message"
+ :review-issue-count="reviewIssueCounts.get(message) ?? 0"
+ :project-owner-id="projectOwner?.id"
:report="report"
:members="members"
:auth="auth"
@@ -27,6 +29,9 @@
import { ChevronRightIcon } from '@modrinth/assets'
import ThreadMessage from '~/components/ui/thread/ThreadMessage.vue'
+import { useThreadProjectOwner } from '~/composables/thread-project-owner'
+
+import { countThreadReviewIssues } from './timeline'
const props = defineProps({
thread: {
@@ -61,12 +66,18 @@ const props = defineProps({
const app = useNuxtApp()
+const projectOwner = useThreadProjectOwner(computed(() => props.thread))
+const reviewIssueCounts = computed(() =>
+ countThreadReviewIssues(props.thread.messages, props.thread.issues ?? []),
+)
+
const members = computed(() => {
const members = {}
for (const member of props.thread.members) {
members[member.id] = member
}
members[props.auth.user.id] = props.auth.user
+ if (projectOwner.value) members[projectOwner.value.id] = projectOwner.value
return members
})
diff --git a/apps/frontend/src/components/ui/thread/ThreadTimeline.vue b/apps/frontend/src/components/ui/thread/ThreadTimeline.vue
new file mode 100644
index 00000000000..bff5f57c461
--- /dev/null
+++ b/apps/frontend/src/components/ui/thread/ThreadTimeline.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/components/ui/thread/ThreadView.vue b/apps/frontend/src/components/ui/thread/ThreadView.vue
index c1855b5cefa..638d2e1a6de 100644
--- a/apps/frontend/src/components/ui/thread/ThreadView.vue
+++ b/apps/frontend/src/components/ui/thread/ThreadView.vue
@@ -5,12 +5,14 @@
-
-
+
+
diff --git a/apps/frontend/src/locales/ar-SA/index.json b/apps/frontend/src/locales/ar-SA/index.json
index 41a3a4ad00c..0c7e41fe506 100644
--- a/apps/frontend/src/locales/ar-SA/index.json
+++ b/apps/frontend/src/locales/ar-SA/index.json
@@ -1010,18 +1010,12 @@
"conversation-thread.action.approve": {
"message": "موافقة"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "الموافقة مع الرد"
- },
"conversation-thread.action.close-with-reply": {
"message": "الإغلاق مع الرد"
},
"conversation-thread.action.reject": {
"message": "رفض"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "الرفض مع الرد"
- },
"conversation-thread.action.reopen-thread": {
"message": "إعادة فتح سلسلة المحادثة"
},
@@ -1055,9 +1049,6 @@
"conversation-thread.action.withhold": {
"message": "حجب"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "الحجب مع الرد"
- },
"conversation-thread.closed-thread.description": {
"message": "هذه السلسلة مغلقة، ولا يمكن إرسال رسائل جديدة إليها."
},
@@ -1067,9 +1058,6 @@
"conversation-thread.error.reopening-report": {
"message": "حدث خطأ أثناء إعادة فتح البلاغ"
},
- "conversation-thread.error.sending-message": {
- "message": "حدث خطأ أثناء إرسال الرسالة"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "الرد على سلسلة المحادثة..."
},
@@ -1097,9 +1085,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "أؤكد أنني تعاملت بشكل مناسب مع ملاحظات المشرفين."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "أنت تعيد إرسال {projectTitle} لمراجعته مرة أخرى من قِبل المشرفين."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "إعادة الإرسال للمراجعة"
},
diff --git a/apps/frontend/src/locales/cs-CZ/index.json b/apps/frontend/src/locales/cs-CZ/index.json
index 7f23360c264..1fef86109b1 100644
--- a/apps/frontend/src/locales/cs-CZ/index.json
+++ b/apps/frontend/src/locales/cs-CZ/index.json
@@ -920,18 +920,12 @@
"conversation-thread.action.approve": {
"message": "Schválit"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Schválit s odpovědí"
- },
"conversation-thread.action.close-with-reply": {
"message": "Uzavřít s odpovědí"
},
"conversation-thread.action.reject": {
"message": "Zamítnout"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Zamítnout s odpovědí"
- },
"conversation-thread.action.reopen-thread": {
"message": "Znovuotevřít vlákno"
},
@@ -965,9 +959,6 @@
"conversation-thread.action.withhold": {
"message": "Pozastavit"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Pozastavit s odpovědí"
- },
"conversation-thread.closed-thread.description": {
"message": "Toto vlákno je uzavřené a nelze do něj posílat nové zprávy."
},
@@ -977,9 +968,6 @@
"conversation-thread.error.reopening-report": {
"message": "Chyba při opětovném otevření reportu"
},
- "conversation-thread.error.sending-message": {
- "message": "Chyba při odeslání zprávy"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Odpovědět vláknu..."
},
@@ -2300,9 +2288,6 @@
"project.actions.dont-show-again": {
"message": "Znovu nezobrazovat"
},
- "project.actions.review-project": {
- "message": "Zkontrolovat projekt"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting je nejjednodušší způsob, jak hrát s přáteli bez starostí!"
},
diff --git a/apps/frontend/src/locales/da-DK/index.json b/apps/frontend/src/locales/da-DK/index.json
index dedcb6741e6..bb93101f71c 100644
--- a/apps/frontend/src/locales/da-DK/index.json
+++ b/apps/frontend/src/locales/da-DK/index.json
@@ -773,18 +773,12 @@
"conversation-thread.action.approve": {
"message": "Godkend"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Godkend med svar"
- },
"conversation-thread.action.close-with-reply": {
"message": "Luk med svar"
},
"conversation-thread.action.reject": {
"message": "Afvis"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Afvis med svar"
- },
"conversation-thread.action.reopen-thread": {
"message": "Genåbn tråd"
},
diff --git a/apps/frontend/src/locales/de-CH/index.json b/apps/frontend/src/locales/de-CH/index.json
index 03d74e7c9d4..7651fd824c4 100644
--- a/apps/frontend/src/locales/de-CH/index.json
+++ b/apps/frontend/src/locales/de-CH/index.json
@@ -1073,9 +1073,6 @@
"conversation-thread.action.approve": {
"message": "Genehmigen"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Genehmigen mit Antwort"
- },
"conversation-thread.action.close-report": {
"message": "Meldung schließen"
},
@@ -1085,9 +1082,6 @@
"conversation-thread.action.reject": {
"message": "Ablehnen"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Ablehnen mit Antwort"
- },
"conversation-thread.action.reopen-thread": {
"message": "Thread wieder öffnen"
},
@@ -1121,9 +1115,6 @@
"conversation-thread.action.withhold": {
"message": "Zurückhalten"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Zurückhalten mit Antwort"
- },
"conversation-thread.closed-thread.description": {
"message": "Dieser Thread ist geschlossen und es können keine neuen Nachrichten gesendet werden."
},
@@ -1133,9 +1124,6 @@
"conversation-thread.error.reopening-report": {
"message": "Fehler beim erneuten Öffnen der Meldung"
},
- "conversation-thread.error.sending-message": {
- "message": "Fehler beim Senden der Nachricht"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Auf Thread antworten..."
},
@@ -1163,9 +1151,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Ich bestätige, dass ich die Kommentare der Moderatoren ordnungsgemäss bearbeitet habe."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Du reichst {projectTitle} ein, um es erneut von den Moderatoren überprüfen zu lassen."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Erneut zur Überprüfung einreichen"
},
@@ -3431,9 +3416,6 @@
"project-member-header.success-join": {
"message": "Du bist dem Projekt-Team beigetreten"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Dein Projekt wurde zur Überprüfung eingereicht!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Veröffentlichungs-Checkliste"
},
@@ -3551,9 +3533,6 @@
"project.actions.rescan-modpack": {
"message": "Modpack erneut scannen"
},
- "project.actions.review-project": {
- "message": "Projekt überprüfen"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting ist der einfachste weg, ohne Aufwand mit deinen Freunden zu spielen!"
},
diff --git a/apps/frontend/src/locales/de-DE/index.json b/apps/frontend/src/locales/de-DE/index.json
index 44988e7ee99..c8b5ce6762a 100644
--- a/apps/frontend/src/locales/de-DE/index.json
+++ b/apps/frontend/src/locales/de-DE/index.json
@@ -1073,9 +1073,6 @@
"conversation-thread.action.approve": {
"message": "Annehmen"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Mit Antwort annehmen"
- },
"conversation-thread.action.close-report": {
"message": "Meldung schließen"
},
@@ -1085,9 +1082,6 @@
"conversation-thread.action.reject": {
"message": "Ablehnen"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Mit Antwort ablehnen"
- },
"conversation-thread.action.reopen-thread": {
"message": "Thread erneut öffnen"
},
@@ -1121,9 +1115,6 @@
"conversation-thread.action.withhold": {
"message": "Zurückhalten"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Mit Antwort zurückhalten"
- },
"conversation-thread.closed-thread.description": {
"message": "Dieser Thread ist geschlossen und keine neuen Nachrichten können mehr gesendet werden."
},
@@ -1133,9 +1124,6 @@
"conversation-thread.error.reopening-report": {
"message": "Fehler beim erneuten Öffnen der Meldung"
},
- "conversation-thread.error.sending-message": {
- "message": "Fehler beim Senden der Nachricht"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Dem Thread antworten..."
},
@@ -1163,9 +1151,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Ich bestätige, dass ich die Anmerkungen der Moderatoren entsprechend berücksichtigt habe."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Du schickst {projectTitle} zur Wiederprüfung."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Erneut zur Überprüfung einreichen"
},
@@ -3431,9 +3416,6 @@
"project-member-header.success-join": {
"message": "Du bist dem Projektteam beigetreten"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Dein Projekt wurde zur Überprüfung eingereicht!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Checkliste für die Veröffentlichung"
},
@@ -3551,9 +3533,6 @@
"project.actions.rescan-modpack": {
"message": "Modpack erneut scannen"
},
- "project.actions.review-project": {
- "message": "Projekt überprüfen"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting ist der einfachste Weg, ohne Aufwand mit deinen Freunden zu spielen!"
},
diff --git a/apps/frontend/src/locales/en-US/index.json b/apps/frontend/src/locales/en-US/index.json
index 3a868648cac..1abb4d0ca8a 100644
--- a/apps/frontend/src/locales/en-US/index.json
+++ b/apps/frontend/src/locales/en-US/index.json
@@ -1136,6 +1136,9 @@
"conversation-thread.error.sending-message": {
"message": "Error sending message"
},
+ "conversation-thread.image.open-externally": {
+ "message": "Open externally"
+ },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Reply to thread..."
},
@@ -1157,14 +1160,26 @@
"conversation-thread.reply-modal.help-center-note": {
"message": "If you need to get in contact with the moderation team, please use the Modrinth Help Center and click the blue bubble in the bottom right corner to contact support."
},
+ "conversation-thread.reply.addresses": {
+ "message": "This reply addresses the following requested explanations:"
+ },
+ "conversation-thread.reply.changed-thread": {
+ "message": "The selected thread changed. Open it again before replying."
+ },
+ "conversation-thread.reply.facet": {
+ "message": "Explanation for {issue}"
+ },
+ "conversation-thread.reply.unknown-issue": {
+ "message": "Moderation issue"
+ },
"conversation-thread.resubmit-modal.confirmation.description": {
"message": "Confirm I have addressed the messages from the moderators"
},
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "I confirm that I have properly addressed the moderators' comments."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "You're submitting {projectTitle} to be reviewed again by the moderators."
+ "conversation-thread.resubmit-modal.description.auto-approval": {
+ "message": "You're resubmitting {projectTitle} . If all moderation issues are resolved, it may be approved automatically. Otherwise, it will be sent to the moderators for review."
},
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Resubmitting for review"
@@ -1178,6 +1193,12 @@
"conversation-thread.resubmit-modal.warning": {
"message": "Repeated submissions without addressing the moderators' comments may result in an account suspension."
},
+ "conversation-thread.resubmit-required-actions-tooltip": {
+ "message": "You must complete all required actions above to resubmit"
+ },
+ "conversation-thread.submit-modal.description": {
+ "message": "You're submitting {projectTitle} to be reviewed by the moderators."
+ },
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Supplementary files are for supporting resources like source code, not for alternative versions or variants."
},
@@ -2993,6 +3014,18 @@
"layout.publish.email-verification-required.title": {
"message": "Email verification required"
},
+ "markdown-editor.templates.empty": {
+ "message": "No matching messages."
+ },
+ "markdown-editor.templates.insert": {
+ "message": "Insert message"
+ },
+ "markdown-editor.templates.library": {
+ "message": "Message Library"
+ },
+ "markdown-editor.templates.search": {
+ "message": "Search messages…"
+ },
"messages.noResults": {
"message": "No results found for your query!"
},
@@ -3020,9 +3053,39 @@
"modal.shared-instance.open-in-app.why-use": {
"message": "Why use the Modrinth App"
},
+ "moderation.c2pa-scan.failed": {
+ "message": "Failed to scan for AI-generated files."
+ },
+ "moderation.c2pa-scan.no-ai-files": {
+ "message": "No AI-generated files found."
+ },
"moderation.exclude-technical-review": {
"message": "Exclude TR"
},
+ "moderation.keybinds.general": {
+ "message": "General"
+ },
+ "moderation.keybinds.not-bound": {
+ "message": "Not bound"
+ },
+ "moderation.keybinds.project-review": {
+ "message": "Project review page"
+ },
+ "moderation.keybinds.reset-default": {
+ "message": "Reset to default"
+ },
+ "moderation.keybinds.scope-global": {
+ "message": "Can be used anywhere on the website."
+ },
+ "moderation.keybinds.scope-project-page": {
+ "message": "Used on project pages when project page shortcuts are enabled."
+ },
+ "moderation.keybinds.scope-tech": {
+ "message": "Used within the tech review pages."
+ },
+ "moderation.keybinds.title": {
+ "message": "Keybinds"
+ },
"moderation.moderate": {
"message": "Moderate"
},
@@ -3044,6 +3107,618 @@
"moderation.page.technicalReview": {
"message": "Tech review"
},
+ "moderation.project-review.actions": {
+ "message": "Actions"
+ },
+ "moderation.project-review.approvedCount": {
+ "message": "{count} approved"
+ },
+ "moderation.project-review.archived": {
+ "message": "Archived"
+ },
+ "moderation.project-review.archivedCount": {
+ "message": "{count} archived"
+ },
+ "moderation.project-review.author": {
+ "message": "Author"
+ },
+ "moderation.project-review.back": {
+ "message": "Back"
+ },
+ "moderation.project-review.backToFiles": {
+ "message": "Back to files"
+ },
+ "moderation.project-review.bottom": {
+ "message": "Tools"
+ },
+ "moderation.project-review.changelog": {
+ "message": "Changelog"
+ },
+ "moderation.project-review.closeReview": {
+ "message": "Close review controls"
+ },
+ "moderation.project-review.collapseAll": {
+ "message": "Collapse all"
+ },
+ "moderation.project-review.collapseVersion": {
+ "message": "Hide details"
+ },
+ "moderation.project-review.compatibility": {
+ "message": "Compatibility"
+ },
+ "moderation.project-review.complete": {
+ "message": "Complete"
+ },
+ "moderation.project-review.completedFiles": {
+ "message": "Reviewed files ({count})"
+ },
+ "moderation.project-review.conversationThread": {
+ "message": "Conversation thread"
+ },
+ "moderation.project-review.copyHash": {
+ "message": "Copy {algorithm}"
+ },
+ "moderation.project-review.copyValue": {
+ "message": "Copy: {value}"
+ },
+ "moderation.project-review.created": {
+ "message": "Created"
+ },
+ "moderation.project-review.customLicense": {
+ "message": "Custom"
+ },
+ "moderation.project-review.customSlug": {
+ "message": "Differs from the project name"
+ },
+ "moderation.project-review.dependencies": {
+ "message": "Dependencies"
+ },
+ "moderation.project-review.dependencyCount": {
+ "message": "{count, plural, one {# dep} other {# deps}}"
+ },
+ "moderation.project-review.description": {
+ "message": "Description"
+ },
+ "moderation.project-review.details": {
+ "message": "Details"
+ },
+ "moderation.project-review.details.privateDescription": {
+ "message": "Not publicly visible. Only accessible to project members."
+ },
+ "moderation.project-review.details.publicDescription": {
+ "message": "Visible via URL, on your profile, and in search."
+ },
+ "moderation.project-review.details.unlistedDescription": {
+ "message": "Visible via URL only. Not shown on your profile or in search."
+ },
+ "moderation.project-review.disclosures": {
+ "message": "Disclosures"
+ },
+ "moderation.project-review.discord": {
+ "message": "Discord invite"
+ },
+ "moderation.project-review.donationBmac": {
+ "message": "Buy Me A Coffee"
+ },
+ "moderation.project-review.donationGithub": {
+ "message": "GitHub Sponsors"
+ },
+ "moderation.project-review.donationKoFi": {
+ "message": "Ko-fi"
+ },
+ "moderation.project-review.donationOther": {
+ "message": "Other"
+ },
+ "moderation.project-review.donationPatreon": {
+ "message": "Patreon"
+ },
+ "moderation.project-review.donationPaypal": {
+ "message": "PayPal"
+ },
+ "moderation.project-review.download": {
+ "message": "Download"
+ },
+ "moderation.project-review.downloads": {
+ "message": "Downloads"
+ },
+ "moderation.project-review.draft": {
+ "message": "Draft"
+ },
+ "moderation.project-review.draftCount": {
+ "message": "{count} draft"
+ },
+ "moderation.project-review.editSection": {
+ "message": "Edit {section}"
+ },
+ "moderation.project-review.embedded": {
+ "message": "Embedded"
+ },
+ "moderation.project-review.empty": {
+ "message": "No project selected"
+ },
+ "moderation.project-review.emptyChangelog": {
+ "message": "No changelog"
+ },
+ "moderation.project-review.emptyDependencies": {
+ "message": "No dependencies"
+ },
+ "moderation.project-review.emptyDescription": {
+ "message": "No description"
+ },
+ "moderation.project-review.emptyEnvironments": {
+ "message": "No environments"
+ },
+ "moderation.project-review.emptyGallery": {
+ "message": "No gallery images"
+ },
+ "moderation.project-review.emptyLinks": {
+ "message": "No links"
+ },
+ "moderation.project-review.emptyPlatforms": {
+ "message": "No platforms"
+ },
+ "moderation.project-review.emptyTags": {
+ "message": "No tags"
+ },
+ "moderation.project-review.emptyVersions": {
+ "message": "No versions"
+ },
+ "moderation.project-review.environments": {
+ "message": "Environments"
+ },
+ "moderation.project-review.exit": {
+ "message": "Exit"
+ },
+ "moderation.project-review.expandAll": {
+ "message": "Expand all"
+ },
+ "moderation.project-review.expandVersion": {
+ "message": "Show details"
+ },
+ "moderation.project-review.featured": {
+ "message": "Featured"
+ },
+ "moderation.project-review.fileCount": {
+ "message": "{count, plural, one {# file} other {# files}}"
+ },
+ "moderation.project-review.files": {
+ "message": "Files"
+ },
+ "moderation.project-review.finish": {
+ "message": "Finish"
+ },
+ "moderation.project-review.gallery": {
+ "message": "Gallery"
+ },
+ "moderation.project-review.gameVersions": {
+ "message": "Game versions"
+ },
+ "moderation.project-review.generalSettings": {
+ "message": "General"
+ },
+ "moderation.project-review.hashes": {
+ "message": "Hashes"
+ },
+ "moderation.project-review.hideLeft": {
+ "message": "Hide project details"
+ },
+ "moderation.project-review.hideRight": {
+ "message": "Hide panel"
+ },
+ "moderation.project-review.hideTools": {
+ "message": "Hide tools panel"
+ },
+ "moderation.project-review.icon": {
+ "message": "Icon"
+ },
+ "moderation.project-review.imageNumber": {
+ "message": "Image {number}"
+ },
+ "moderation.project-review.incompatible": {
+ "message": "Incompatible"
+ },
+ "moderation.project-review.issues": {
+ "message": "Issue tracker"
+ },
+ "moderation.project-review.keybindsSettings": {
+ "message": "Keybinds"
+ },
+ "moderation.project-review.left": {
+ "message": "Project details"
+ },
+ "moderation.project-review.license": {
+ "message": "License"
+ },
+ "moderation.project-review.licenseUrl": {
+ "message": "License URL"
+ },
+ "moderation.project-review.linkRemoved": {
+ "message": "Link removed: {link}"
+ },
+ "moderation.project-review.linkUnavailable": {
+ "message": "Link unavailable"
+ },
+ "moderation.project-review.links": {
+ "message": "Links"
+ },
+ "moderation.project-review.listed": {
+ "message": "Listed"
+ },
+ "moderation.project-review.loadError": {
+ "message": "Could not load project data"
+ },
+ "moderation.project-review.loading": {
+ "message": "Loading..."
+ },
+ "moderation.project-review.matchesName": {
+ "message": "Matches the project name"
+ },
+ "moderation.project-review.memberCount": {
+ "message": "{count, plural, one {# member} other {# members}}"
+ },
+ "moderation.project-review.members": {
+ "message": "Members"
+ },
+ "moderation.project-review.modpack": {
+ "message": "Modpack"
+ },
+ "moderation.project-review.modpackVersion": {
+ "message": "Version {version}"
+ },
+ "moderation.project-review.monetization": {
+ "message": "Monetization"
+ },
+ "moderation.project-review.monetizationStatus": {
+ "message": "{status, select, monetized {Monetized} demonetized {Demonetized} forceDemonetized {Force demonetized} other {Unknown}}"
+ },
+ "moderation.project-review.monetizationValue": {
+ "message": "{status, select, monetized {Enabled} demonetized {Disabled} forceDemonetized {Force disabled} other {Unknown}}"
+ },
+ "moderation.project-review.mrpack": {
+ "message": ".mrpack"
+ },
+ "moderation.project-review.next": {
+ "message": "Next"
+ },
+ "moderation.project-review.noFlagsFiles": {
+ "message": "Files without flags ({count})"
+ },
+ "moderation.project-review.noIssues": {
+ "message": "No issues."
+ },
+ "moderation.project-review.noLicense": {
+ "message": "No license URL"
+ },
+ "moderation.project-review.noPendingFiles": {
+ "message": "No files with unresolved flags"
+ },
+ "moderation.project-review.noReports": {
+ "message": "No technical-review reports are available for this project"
+ },
+ "moderation.project-review.noReviewActions": {
+ "message": "No review actions available for this section"
+ },
+ "moderation.project-review.noSelectedIssues": {
+ "message": "No issues added. Select issues while reviewing the project to see the message here."
+ },
+ "moderation.project-review.noServerAddress": {
+ "message": "No address."
+ },
+ "moderation.project-review.noServerLanguages": {
+ "message": "No languages."
+ },
+ "moderation.project-review.openIcon": {
+ "message": "View enlarged project icon"
+ },
+ "moderation.project-review.openImage": {
+ "message": "Open image {number}"
+ },
+ "moderation.project-review.openImageInNewTab": {
+ "message": "Open image in new tab"
+ },
+ "moderation.project-review.openMemberAvatar": {
+ "message": "View enlarged avatar for {username}"
+ },
+ "moderation.project-review.openOrganizationIcon": {
+ "message": "View enlarged icon for {organization}"
+ },
+ "moderation.project-review.openReviewGuidance": {
+ "message": "Open review guidance in new tab"
+ },
+ "moderation.project-review.openSlicer": {
+ "message": "Open in Slicer"
+ },
+ "moderation.project-review.optional": {
+ "message": "Optional"
+ },
+ "moderation.project-review.organization": {
+ "message": "Organization"
+ },
+ "moderation.project-review.owner": {
+ "message": "Owner"
+ },
+ "moderation.project-review.pendingFiles": {
+ "message": "Pending files ({count})"
+ },
+ "moderation.project-review.permalink": {
+ "message": "Perma link"
+ },
+ "moderation.project-review.permissions": {
+ "message": "Permissions"
+ },
+ "moderation.project-review.permissionsPlaceholder": {
+ "message": "Permissions review is coming soon"
+ },
+ "moderation.project-review.pinReview": {
+ "message": "Pin review controls"
+ },
+ "moderation.project-review.platforms": {
+ "message": "Platforms"
+ },
+ "moderation.project-review.post-approval": {
+ "message": "Post-approval"
+ },
+ "moderation.project-review.previousLink": {
+ "message": "Previous link: {url}"
+ },
+ "moderation.project-review.primary": {
+ "message": "Primary file"
+ },
+ "moderation.project-review.privateCount": {
+ "message": "{count} private"
+ },
+ "moderation.project-review.processingCount": {
+ "message": "{count} under review"
+ },
+ "moderation.project-review.project": {
+ "message": "Project"
+ },
+ "moderation.project-review.projectId": {
+ "message": "Project ID"
+ },
+ "moderation.project-review.projectTitle": {
+ "message": "Title"
+ },
+ "moderation.project-review.projectType": {
+ "message": "Type"
+ },
+ "moderation.project-review.published": {
+ "message": "Published"
+ },
+ "moderation.project-review.publishedBy": {
+ "message": "Published by"
+ },
+ "moderation.project-review.queueError": {
+ "message": "Could not change projects. Please try again"
+ },
+ "moderation.project-review.queueNavigation": {
+ "message": "Review queue navigation"
+ },
+ "moderation.project-review.re-review": {
+ "message": "Re-review"
+ },
+ "moderation.project-review.reReviewFindings": {
+ "message": "{count, plural, one {# re-review item} other {# re-review items}}"
+ },
+ "moderation.project-review.recommended": {
+ "message": "(Recommended)"
+ },
+ "moderation.project-review.rejectedCount": {
+ "message": "{count} rejected"
+ },
+ "moderation.project-review.requesting": {
+ "message": "Requesting"
+ },
+ "moderation.project-review.required": {
+ "message": "Required"
+ },
+ "moderation.project-review.reset": {
+ "message": "Reset"
+ },
+ "moderation.project-review.resolvePermissions": {
+ "message": "Review redistribution permissions"
+ },
+ "moderation.project-review.retry": {
+ "message": "Retry"
+ },
+ "moderation.project-review.reupload": {
+ "message": "Reupload"
+ },
+ "moderation.project-review.reviewIssues": {
+ "message": "Issues"
+ },
+ "moderation.project-review.reviewProgress": {
+ "message": "Reviewed flags indicate progress, not a safe verdict. Files without flags have no flag verdict"
+ },
+ "moderation.project-review.reviewScope": {
+ "message": "These selections apply to the {stage} review for the whole project"
+ },
+ "moderation.project-review.reviewSection": {
+ "message": "Review {section}"
+ },
+ "moderation.project-review.right": {
+ "message": "Right panel"
+ },
+ "moderation.project-review.saveProject": {
+ "message": "Save project"
+ },
+ "moderation.project-review.scanAi": {
+ "message": "Scan for AI-generated images"
+ },
+ "moderation.project-review.scheduled": {
+ "message": "Scheduled"
+ },
+ "moderation.project-review.scheduledCount": {
+ "message": "{count} scheduled"
+ },
+ "moderation.project-review.selectedFindings": {
+ "message": "{count, plural, one {# selected finding} other {# selected findings}}"
+ },
+ "moderation.project-review.serverAddress": {
+ "message": "Address"
+ },
+ "moderation.project-review.serverContent": {
+ "message": "Content"
+ },
+ "moderation.project-review.serverDetails": {
+ "message": "Server details"
+ },
+ "moderation.project-review.serverDiscord": {
+ "message": "Discord"
+ },
+ "moderation.project-review.serverLanguages": {
+ "message": "Languages"
+ },
+ "moderation.project-review.serverRegion": {
+ "message": "Region"
+ },
+ "moderation.project-review.showLeft": {
+ "message": "Show project details"
+ },
+ "moderation.project-review.showRight": {
+ "message": "Show panel"
+ },
+ "moderation.project-review.showTools": {
+ "message": "Show tools panel"
+ },
+ "moderation.project-review.skip": {
+ "message": "Skip"
+ },
+ "moderation.project-review.slug": {
+ "message": "Slug"
+ },
+ "moderation.project-review.source": {
+ "message": "Source code"
+ },
+ "moderation.project-review.sourceAvailabilityRequired": {
+ "message": "License requires source code."
+ },
+ "moderation.project-review.sourceError": {
+ "message": "Could not load source code. Try opening the flag again"
+ },
+ "moderation.project-review.status-alerts": {
+ "message": "Status alerts"
+ },
+ "moderation.project-review.store": {
+ "message": "Store"
+ },
+ "moderation.project-review.submissions": {
+ "message": "{count, plural, one {# submission} other {# submissions}}"
+ },
+ "moderation.project-review.submitted": {
+ "message": "Submitted"
+ },
+ "moderation.project-review.summary": {
+ "message": "Summary"
+ },
+ "moderation.project-review.tags": {
+ "message": "Tags"
+ },
+ "moderation.project-review.tech-review": {
+ "message": "Tech Review"
+ },
+ "moderation.project-review.techReviewFailedCount": {
+ "message": "{count} failed technical review"
+ },
+ "moderation.project-review.title": {
+ "message": "Project Review"
+ },
+ "moderation.project-review.total": {
+ "message": "Total"
+ },
+ "moderation.project-review.unavailable": {
+ "message": "Unavailable"
+ },
+ "moderation.project-review.undefinedProject": {
+ "message": "Undefined project"
+ },
+ "moderation.project-review.unknown": {
+ "message": "Unknown"
+ },
+ "moderation.project-review.unknownCount": {
+ "message": "{count} unknown"
+ },
+ "moderation.project-review.unlisted": {
+ "message": "Unlisted"
+ },
+ "moderation.project-review.unlistedCount": {
+ "message": "{count} unlisted"
+ },
+ "moderation.project-review.unpinReview": {
+ "message": "Unpin review controls"
+ },
+ "moderation.project-review.updated": {
+ "message": "Updated"
+ },
+ "moderation.project-review.uploaded": {
+ "message": "Uploaded {date}"
+ },
+ "moderation.project-review.validation.length": {
+ "message": "Enter between {min} and {max} characters."
+ },
+ "moderation.project-review.validation.slug": {
+ "message": "Use only letters, numbers, periods, underscores, and hyphens."
+ },
+ "moderation.project-review.vanilla": {
+ "message": "Vanilla"
+ },
+ "moderation.project-review.versionId": {
+ "message": "Version ID"
+ },
+ "moderation.project-review.versionNumber": {
+ "message": "Version Number"
+ },
+ "moderation.project-review.versionSubtitle": {
+ "message": "Version Subtitle"
+ },
+ "moderation.project-review.versions": {
+ "message": "Versions"
+ },
+ "moderation.project-review.viewVersion": {
+ "message": "View version"
+ },
+ "moderation.project-review.visibility": {
+ "message": "Visibility"
+ },
+ "moderation.project-review.visibilityOption": {
+ "message": "{status, select, approved {Public} archived {Public} unlisted {Unlisted} private {Private} other {Unknown}}"
+ },
+ "moderation.project-review.website": {
+ "message": "Website"
+ },
+ "moderation.project-review.wiki": {
+ "message": "Wiki page"
+ },
+ "moderation.project-review.withheld": {
+ "message": "Withheld"
+ },
+ "moderation.project-review.withheldCount": {
+ "message": "{count} withheld"
+ },
+ "moderation.tech-review.file.download": {
+ "message": "Download"
+ },
+ "moderation.tech-review.file.download-file": {
+ "message": "Download {filename} ({size})"
+ },
+ "moderation.tech-review.file.flags": {
+ "message": "Flags"
+ },
+ "moderation.tech-review.file.manual": {
+ "message": "Manual review"
+ },
+ "moderation.tech-review.file.no-flags": {
+ "message": "No flags"
+ },
+ "moderation.tech-review.file.open-slicer": {
+ "message": "Open in Slicer"
+ },
+ "moderation.tech-review.file.slicer": {
+ "message": "Slicer"
+ },
+ "moderation.tech-review.file.view-version": {
+ "message": "View version"
+ },
"modpack-scan-modal.batch.label": {
"message": "{amount} per batch"
},
@@ -3410,6 +4085,75 @@
"organization.projects.none-with-create-prompt": {
"message": "This organization doesn't have any projects yet. Would you like to create one ?"
},
+ "profile.block-user.admonition-body": {
+ "message": "{username} will not be able to send you friend requests, invite you to shared instances or invite you to Modrinth Hosting servers."
+ },
+ "profile.block-user.admonition-title": {
+ "message": "Are you sure you want to block this user?"
+ },
+ "profile.button.analytics": {
+ "message": "View user analytics"
+ },
+ "profile.button.billing": {
+ "message": "Manage user billing"
+ },
+ "profile.button.block": {
+ "message": "Block"
+ },
+ "profile.button.edit-user": {
+ "message": "Edit user"
+ },
+ "profile.button.force-password-reset": {
+ "message": "Force password reset"
+ },
+ "profile.button.info": {
+ "message": "View user details"
+ },
+ "profile.button.lock": {
+ "message": "Lock account"
+ },
+ "profile.button.manage-projects": {
+ "message": "Manage projects"
+ },
+ "profile.button.remove-affiliate": {
+ "message": "Remove as affiliate"
+ },
+ "profile.button.reset-2fa": {
+ "message": "Reset two-factor authentication"
+ },
+ "profile.button.revoke-sessions": {
+ "message": "Revoke all sessions"
+ },
+ "profile.button.set-affiliate": {
+ "message": "Set as affiliate"
+ },
+ "profile.button.shared-instances": {
+ "message": "View shared instances"
+ },
+ "profile.button.unblock": {
+ "message": "Unblock"
+ },
+ "profile.button.unlock": {
+ "message": "Unlock account"
+ },
+ "profile.details.label.auth-providers": {
+ "message": "Auth providers"
+ },
+ "profile.details.label.email-verified": {
+ "message": "Email verified"
+ },
+ "profile.details.label.has-password": {
+ "message": "Has password"
+ },
+ "profile.details.label.has-totp": {
+ "message": "Has TOTP"
+ },
+ "profile.details.label.payment-methods": {
+ "message": "Payment methods"
+ },
+ "profile.details.title": {
+ "message": "User details"
+ },
"project-member-header.error-decline": {
"message": "Failed to decline team invitation"
},
@@ -3467,6 +4211,198 @@
"project-moderation-nags.warning": {
"message": "Warning"
},
+ "project-review.composer.add-note": {
+ "message": "Private note"
+ },
+ "project-review.composer.reply": {
+ "message": "Reply"
+ },
+ "project-review.composer.reply-and-clear-issues": {
+ "message": "Reply and clear issues"
+ },
+ "project-review.composer.reply-placeholder": {
+ "message": "Reply to thread…"
+ },
+ "project-review.controls.markdown-placeholder": {
+ "message": "Explain what needs to change…"
+ },
+ "project-review.controls.required-value": {
+ "message": "Complete this required field."
+ },
+ "project-review.controls.select": {
+ "message": "Select an option"
+ },
+ "project-review.controls.slug-available": {
+ "message": "This project URL is available."
+ },
+ "project-review.controls.slug-error": {
+ "message": "Unable to check URL availability. Try again."
+ },
+ "project-review.controls.slug-invalid": {
+ "message": "Use 3–64 letters, numbers, periods, underscores, or hyphens."
+ },
+ "project-review.controls.slug-taken": {
+ "message": "This project URL is already taken."
+ },
+ "project-review.controls.slug-unchanged": {
+ "message": "Choose a URL different from the current project URL."
+ },
+ "project-review.controls.text-placeholder": {
+ "message": "Enter text…"
+ },
+ "project-review.decision.add-issues": {
+ "message": "Add issues on project"
+ },
+ "project-review.decision.approve": {
+ "message": "Approve"
+ },
+ "project-review.decision.reject": {
+ "message": "Reject"
+ },
+ "project-review.decision.send-to-review": {
+ "message": "Send to review"
+ },
+ "project-review.decision.set-to-draft": {
+ "message": "Set to draft"
+ },
+ "project-review.decision.withhold": {
+ "message": "Withhold"
+ },
+ "project-review.image.disable-pixelated": {
+ "message": "Disable pixel-art rendering"
+ },
+ "project-review.image.download": {
+ "message": "Download image"
+ },
+ "project-review.image.enable-pixelated": {
+ "message": "Enable pixel-art rendering"
+ },
+ "project-review.issues.add": {
+ "message": "Issue"
+ },
+ "project-review.issues.add-option": {
+ "message": "Add issue option"
+ },
+ "project-review.issues.choose-option": {
+ "message": "Choose at least one option for this issue."
+ },
+ "project-review.issues.custom": {
+ "message": "Custom issue"
+ },
+ "project-review.issues.custom-acknowledge-checkbox": {
+ "message": "Acknowledge checkbox"
+ },
+ "project-review.issues.custom-acknowledge-reply": {
+ "message": "Acknowledge reply"
+ },
+ "project-review.issues.custom-actions": {
+ "message": "Actions"
+ },
+ "project-review.issues.custom-add-facets": {
+ "message": "Add actions"
+ },
+ "project-review.issues.custom-id": {
+ "message": "Issue ID"
+ },
+ "project-review.issues.custom-id-invalid": {
+ "message": "Enter a unique, non-empty issue ID."
+ },
+ "project-review.issues.custom-message-required": {
+ "message": "Enter a message for this custom issue."
+ },
+ "project-review.issues.custom-placeholder": {
+ "message": "Enter custom issue message..."
+ },
+ "project-review.issues.custom-priority": {
+ "message": "Priority"
+ },
+ "project-review.issues.custom-search-facets": {
+ "message": "Search actions…"
+ },
+ "project-review.issues.edited": {
+ "message": "(Edited)"
+ },
+ "project-review.issues.edited-tooltip": {
+ "message": "Issue message has been edited"
+ },
+ "project-review.issues.empty": {
+ "message": "No issues flagged."
+ },
+ "project-review.issues.empty-re-review": {
+ "message": "No previous issues to re-review."
+ },
+ "project-review.issues.field-option": {
+ "message": "{field}: {option}"
+ },
+ "project-review.issues.message": {
+ "message": "Message for {issue}"
+ },
+ "project-review.issues.no-results": {
+ "message": "No matching issues."
+ },
+ "project-review.issues.not-resolved": {
+ "message": "Not resolved"
+ },
+ "project-review.issues.open-panel": {
+ "message": "Open {panel} review panel"
+ },
+ "project-review.issues.remove": {
+ "message": "Remove {issue}"
+ },
+ "project-review.issues.remove-option": {
+ "message": "Remove {option}"
+ },
+ "project-review.issues.reset": {
+ "message": "Reset issues"
+ },
+ "project-review.issues.reset-all": {
+ "message": "Reset all issues"
+ },
+ "project-review.issues.reset-description": {
+ "message": "This will discard your issue changes and move all previous issues back to Re-rev. issues."
+ },
+ "project-review.issues.reset-message": {
+ "message": "Reset message"
+ },
+ "project-review.issues.resolved": {
+ "message": "Auto resolved ({count})"
+ },
+ "project-review.issues.revert-all-customizations": {
+ "message": "Revert all customizations"
+ },
+ "project-review.issues.revert-customizations-description": {
+ "message": "Revert all customizations restores default issue messages while keeping custom issue messages and all issue toggles and selections."
+ },
+ "project-review.issues.search": {
+ "message": "Search issues…"
+ },
+ "project-review.lock.moderating": {
+ "message": "{username} is moderating"
+ },
+ "project-review.lock.take-over": {
+ "message": "Take over project"
+ },
+ "project-review.members.revoke-sessions-body": {
+ "message": "{username} will be signed out on every device. They will need to sign in again."
+ },
+ "project-review.message-box.resize": {
+ "message": "Resize message box"
+ },
+ "project-review.previous-issues.re-review": {
+ "message": "Re-review"
+ },
+ "project-review.resize-checks": {
+ "message": "Resize project checks"
+ },
+ "project-review.right-panel.issues": {
+ "message": "Issues ({count})"
+ },
+ "project-review.right-panel.re-review": {
+ "message": "Re-review ({count})"
+ },
+ "project-review.right-panel.thread": {
+ "message": "Thread"
+ },
"project-type.collection.plural": {
"message": "Collections"
},
@@ -3545,15 +4481,15 @@
"project.actions.edit-project": {
"message": "Edit project"
},
+ "project.actions.open-in-modview": {
+ "message": "Open in modview"
+ },
"project.actions.project-page": {
"message": "Project page"
},
"project.actions.rescan-modpack": {
"message": "Rescan modpack"
},
- "project.actions.review-project": {
- "message": "Review project"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting is the easiest way to play with your friends without hassle!"
},
@@ -3590,6 +4526,30 @@
"project.description.title": {
"message": "Description"
},
+ "project.disclosures.load-error": {
+ "message": "Could not load disclosures."
+ },
+ "project.disclosures.loading": {
+ "message": "Loading disclosures…"
+ },
+ "project.disclosures.lock-status.cannot-disable": {
+ "message": "Cannot disable"
+ },
+ "project.disclosures.lock-status.fully-locked": {
+ "message": "Fully locked"
+ },
+ "project.disclosures.lock-status.label": {
+ "message": "Lock status"
+ },
+ "project.disclosures.lock-status.unlocked": {
+ "message": "Unlocked"
+ },
+ "project.disclosures.retry": {
+ "message": "Retry"
+ },
+ "project.disclosures.save-error": {
+ "message": "Could not save all disclosure changes. Your edits have been kept. Try saving again."
+ },
"project.download.base-game-version-incompatible-tooltip": {
"message": "This game version is incompatible with the base project."
},
@@ -3809,6 +4769,9 @@
"project.moderation.error.unauthorized": {
"message": "Unauthorized"
},
+ "project.moderation.project-changed": {
+ "message": "The selected project changed. Review it again."
+ },
"project.moderation.thread.approved-warning": {
"message": "This thread is not actively monitored, but may be reviewed for information about your project if needed."
},
@@ -3863,6 +4826,9 @@
"project.notification.updated.title": {
"message": "Project updated"
},
+ "project.review.approved": {
+ "message": "Your project has been approved{status, select, unlisted { as unlisted} private { as private} other {}}."
+ },
"project.settings.back-to-all-projects": {
"message": "Back to all projects"
},
@@ -3983,6 +4949,9 @@
"project.settings.disclosures.derivative.note-placeholder": {
"message": "This is a fork that adds a few new biomes and ports it to newer Minecraft versions."
},
+ "project.settings.disclosures.derivative.open-link": {
+ "message": "Visit link"
+ },
"project.settings.disclosures.derivative.title": {
"message": "Contains derivative content"
},
@@ -4149,17 +5118,26 @@
"message": "Enter a name for your custom license."
},
"project.settings.license.custom-url-description": {
- "message": "The web location of the full license text."
+ "message": "The web location of the full license text. You have to provide a link since this is a custom license."
+ },
+ "project.settings.license.has-spdx": {
+ "message": "Use SPDX identifier"
},
"project.settings.license.intro": {
"message": "It is important to choose a proper license for your {type}. You may choose one from our list or provide a custom license. You may also provide a custom URL to your chosen license; otherwise, the license text will be displayed. See our licensing guide for more information."
},
+ "project.settings.license.invalid-url": {
+ "message": "Enter a valid HTTP or HTTPS license URL."
+ },
"project.settings.license.later": {
"message": "Later editions"
},
"project.settings.license.later-description": {
"message": "The license you selected has an \"or later\" clause. If you check this box, users may use your project under later editions of the license."
},
+ "project.settings.license.missing-name": {
+ "message": "Enter a name or SPDX identifier for your custom license."
+ },
"project.settings.license.missing-url": {
"message": "Enter a URL to the full text of your custom license."
},
@@ -4175,11 +5153,20 @@
"project.settings.license.optional-label": {
"message": "optional"
},
+ "project.settings.license.optional-url": {
+ "message": "License URL (optional)"
+ },
"project.settings.license.select": {
- "message": "License"
+ "message": "Select a license"
+ },
+ "project.settings.license.select-description": {
+ "message": "How users are and aren't allowed to use your project."
},
"project.settings.license.select-placeholder": {
- "message": "Search licenses..."
+ "message": "Select license..."
+ },
+ "project.settings.license.spdx": {
+ "message": "SPDX identifier"
},
"project.settings.license.title": {
"message": "License"
@@ -4229,6 +5216,9 @@
"project.settings.links.donations-description": {
"message": "Add donation links for users to support you directly."
},
+ "project.settings.links.invalid-url": {
+ "message": "Enter valid HTTP or HTTPS URLs before saving."
+ },
"project.settings.links.issues": {
"message": "Issue tracker"
},
@@ -4307,6 +5297,9 @@
"project.settings.permissions.attention-needed.title": {
"message": "Unknown external content"
},
+ "project.settings.permissions.awaiting-review-count": {
+ "message": "{count, plural, =0 {None awaiting review} other {# awaiting review}}"
+ },
"project.settings.permissions.bad-proof.description": {
"message": "Modrinth's moderation team has rejected the permission information you provided for some external content. Please review the rejected items below and provide acceptable proof or remove the content."
},
@@ -4361,12 +5354,18 @@
"project.settings.permissions.learn-more": {
"message": "Learn more"
},
+ "project.settings.permissions.no-permission-count": {
+ "message": "{count} with no permission"
+ },
"project.settings.permissions.no-results": {
"message": "No external files match your search."
},
"project.settings.permissions.not-allowed.description": {
"message": "Some of the external content included cannot be distributed on Modrinth because it violates our Content Rules and must be removed."
},
+ "project.settings.permissions.open-image-in-new-tab": {
+ "message": "Open image in new tab"
+ },
"project.settings.permissions.pending-approval-count": {
"message": "{count, plural, =0 {No attributions need approval} one {# attribution needs approval} other {# attributions need approval}}"
},
@@ -4385,6 +5384,9 @@
"project.settings.permissions.sort.status": {
"message": "Status"
},
+ "project.settings.permissions.user-action-count": {
+ "message": "{count} need user action"
+ },
"project.settings.server.bedrock-address-label": {
"message": "Bedrock address"
},
@@ -4490,6 +5492,9 @@
"project.settings.tags.too-many-tags-server-soft-warning": {
"message": "You've selected {count} tags. Consider reducing to 12 or fewer to keep your server focused and easier to discover."
},
+ "project.settings.tags.upload-version-first.description": {
+ "message": "Upload a version before selecting project tags."
+ },
"project.settings.tags.upload-version-first.heading": {
"message": "Upload versions before adding tags"
},
@@ -5669,6 +6674,180 @@
"shared-instance.invite.unavailable.title": {
"message": "This invite isn't available"
},
+ "thread-issues.address-failed": {
+ "message": "Failed to mark issue as addressed"
+ },
+ "thread-issues.addressed": {
+ "message": "Marked as addressed"
+ },
+ "thread-issues.change-facet-first": {
+ "message": "Please make the requested changes before marking it as addressed."
+ },
+ "thread-issues.facet.acknowledge-checkbox": {
+ "message": "Acknowledge this request"
+ },
+ "thread-issues.facet.acknowledge-reply": {
+ "message": "Explain your changes in a reply"
+ },
+ "thread-issues.facet.version.changelog": {
+ "message": "Change the version changelog"
+ },
+ "thread-issues.facet.version.dependencies": {
+ "message": "Change the version dependencies"
+ },
+ "thread-issues.facet.version.environment": {
+ "message": "Change the version environment"
+ },
+ "thread-issues.facet.version.file-type": {
+ "message": "Change the additional file type"
+ },
+ "thread-issues.facet.version.game-versions": {
+ "message": "Change the supported game versions"
+ },
+ "thread-issues.facet.version.remove": {
+ "message": "Remove this version"
+ },
+ "thread-issues.facet.version.remove-files": {
+ "message": "Remove the requested additional files"
+ },
+ "thread-issues.hide-addressed": {
+ "message": "Hide addressed"
+ },
+ "thread-issues.hide-issue": {
+ "message": "Hide issue"
+ },
+ "thread-issues.hide-resolved": {
+ "message": "Hide resolved"
+ },
+ "thread-issues.mark-addressed": {
+ "message": "Mark as addressed"
+ },
+ "thread-issues.mark-resolved": {
+ "message": "Mark as resolved"
+ },
+ "thread-issues.mark-unresolved": {
+ "message": "Mark as unresolved"
+ },
+ "thread-issues.more-actions": {
+ "message": "More required actions"
+ },
+ "thread-issues.options": {
+ "message": "Issue options"
+ },
+ "thread-issues.reply-to-address": {
+ "message": "Reply to address"
+ },
+ "thread-issues.resolve-failed": {
+ "message": "Failed to mark issue as resolved"
+ },
+ "thread-issues.resolved": {
+ "message": "Resolved"
+ },
+ "thread-issues.show-addressed": {
+ "message": "Show addressed"
+ },
+ "thread-issues.show-issue": {
+ "message": "Show issue"
+ },
+ "thread-issues.show-resolved": {
+ "message": "Show resolved"
+ },
+ "thread-issues.target.edit-name": {
+ "message": "Edit name"
+ },
+ "thread-issues.target.edit-summary": {
+ "message": "Edit summary"
+ },
+ "thread-issues.target.edit-url": {
+ "message": "Edit URL"
+ },
+ "thread-issues.unresolve-failed": {
+ "message": "Failed to mark issue as unresolved"
+ },
+ "thread.issue-history.flagged": {
+ "message": "flagged {count, plural, one {# issue} other {# issues}}"
+ },
+ "thread.issue-history.private-note": {
+ "message": "Only visible to moderators"
+ },
+ "thread.message.auto-approval": {
+ "message": "resolved all issues and the project status has been automatically set to approved ."
+ },
+ "thread.message.delete": {
+ "message": "Delete"
+ },
+ "thread.message.deleted-message": {
+ "message": "posted a message that has been deleted."
+ },
+ "thread.message.legacy-project-message": {
+ "message": "This project was published on Modrinth before moderation threads existed and may be missing moderation history."
+ },
+ "thread.message.moderator": {
+ "message": "Moderator"
+ },
+ "thread.message.modrinth-team": {
+ "message": "Modrinth Team"
+ },
+ "thread.message.more-options": {
+ "message": "More options"
+ },
+ "thread.message.open-image": {
+ "message": "Open image"
+ },
+ "thread.message.preview": {
+ "message": "Preview"
+ },
+ "thread.message.private-message": {
+ "message": "Only visible to moderators"
+ },
+ "thread.message.project-owner": {
+ "message": "Project owner"
+ },
+ "thread.message.reporter": {
+ "message": "Reporter"
+ },
+ "thread.message.reverted-to-draft": {
+ "message": "reverted this project back to a . "
+ },
+ "thread.message.review": {
+ "message": "reviewed the project and set its status to status ."
+ },
+ "thread.message.review-with-issues": {
+ "message": "reviewed the project and set its status to status with {count, plural, one {# issue} other {# issues}}."
+ },
+ "thread.message.sent-image": {
+ "message": "sent an image."
+ },
+ "thread.message.sent-message": {
+ "message": "sent a message."
+ },
+ "thread.message.status-changed": {
+ "message": "changed the project's status from status to . "
+ },
+ "thread.message.submitted-for-review": {
+ "message": "submitted the project for review."
+ },
+ "thread.message.system": {
+ "message": "Modrinth"
+ },
+ "thread.message.tech-review-completed": {
+ "message": "completed technical review and marked project as . "
+ },
+ "thread.message.tech-review-entered": {
+ "message": "The project has entered the technical review queue."
+ },
+ "thread.message.tech-review-exit-file-deleted": {
+ "message": "The project has left the technical review queue as all files pending review were deleted by the user."
+ },
+ "thread.message.tech-review-exited": {
+ "message": "The project has left the technical review queue as all pending traces have been resolved."
+ },
+ "thread.message.thread-closed": {
+ "message": "closed the thread."
+ },
+ "thread.message.thread-reopened": {
+ "message": "reopened the thread."
+ },
"ui.latest-news-row.latest-news": {
"message": "Latest news from Modrinth"
},
diff --git a/apps/frontend/src/locales/es-419/index.json b/apps/frontend/src/locales/es-419/index.json
index 41ab554064e..90dd7a78239 100644
--- a/apps/frontend/src/locales/es-419/index.json
+++ b/apps/frontend/src/locales/es-419/index.json
@@ -1073,9 +1073,6 @@
"conversation-thread.action.approve": {
"message": "Aprovar"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Aprovar con respuesta"
- },
"conversation-thread.action.close-report": {
"message": "Cerrar informe"
},
@@ -1085,9 +1082,6 @@
"conversation-thread.action.reject": {
"message": "Rechazar"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Rechazar con respuesta"
- },
"conversation-thread.action.reopen-thread": {
"message": "Reabrir hilo"
},
@@ -1121,9 +1115,6 @@
"conversation-thread.action.withhold": {
"message": "Retener"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Retener con respuesta"
- },
"conversation-thread.closed-thread.description": {
"message": "Este hilo está cerrado y no se pueden enviar nuevos mensajes."
},
@@ -1133,9 +1124,6 @@
"conversation-thread.error.reopening-report": {
"message": "Error al reabrir el reporte"
},
- "conversation-thread.error.sending-message": {
- "message": "Error al enviar el mensaje"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Responder al hilo..."
},
@@ -1163,9 +1151,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Confirmo que he atendido correctamente las observaciones de los moderadores."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Estás enviando {projectTitle} para ser revisado de nuevo por los moderadores."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Enviando de nuevo para revisión"
},
@@ -3428,9 +3413,6 @@
"project-member-header.success-join": {
"message": "Te has unido al equipo del proyecto"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "¡Tu proyecto ha sido enviado para revisión!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Lista de verificación para la publicación"
},
@@ -3548,9 +3530,6 @@
"project.actions.rescan-modpack": {
"message": "Re-escanear modpack"
},
- "project.actions.review-project": {
- "message": "Revisar proyecto"
- },
"project.actions.servers-promo.description": {
"message": "¡Modrinth Hosting es la forma más fácil de jugar con tus amigos sin complicaciones!"
},
diff --git a/apps/frontend/src/locales/es-ES/index.json b/apps/frontend/src/locales/es-ES/index.json
index 8b7ab99d578..0b4feeed3e5 100644
--- a/apps/frontend/src/locales/es-ES/index.json
+++ b/apps/frontend/src/locales/es-ES/index.json
@@ -1061,9 +1061,6 @@
"conversation-thread.action.approve": {
"message": "Aprobar"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Aprobar con respuesta"
- },
"conversation-thread.action.close-report": {
"message": "Cerrar informe"
},
@@ -1073,9 +1070,6 @@
"conversation-thread.action.reject": {
"message": "Rechazar"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Rechazar con respuesta"
- },
"conversation-thread.action.reopen-thread": {
"message": "Reabrir hilo"
},
@@ -1109,9 +1103,6 @@
"conversation-thread.action.withhold": {
"message": "Retener"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Retener con respuesta"
- },
"conversation-thread.closed-thread.description": {
"message": "Este hilo está cerrado y los nuevos mensajes no podrán ser enviados."
},
@@ -1121,9 +1112,6 @@
"conversation-thread.error.reopening-report": {
"message": "Error reabriendo reporte"
},
- "conversation-thread.error.sending-message": {
- "message": "Error al enviar el mensaje"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Responder al hilo..."
},
@@ -1151,9 +1139,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Confirmo que he respondido debidamente los comentarios de los moderadores."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Estás subiendo {projectTitle} para que sea revisado nuevamente por los moderadores."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Resubiendo para revisión"
},
@@ -3407,9 +3392,6 @@
"project-member-header.success-join": {
"message": "Te has unido al equipo del proyecto"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "¡Tu proyecto fue enviado a revisión!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Lista de verificación para la publicación"
},
@@ -3527,9 +3509,6 @@
"project.actions.rescan-modpack": {
"message": "Volver a escanear modpack"
},
- "project.actions.review-project": {
- "message": "Revisar proyecto"
- },
"project.actions.servers-promo.description": {
"message": "¡Modrinth Hosting es la forma más fácil de jugar con tus amigos sin problemas!"
},
diff --git a/apps/frontend/src/locales/fi-FI/index.json b/apps/frontend/src/locales/fi-FI/index.json
index d5cb2236b35..c0b06c66309 100644
--- a/apps/frontend/src/locales/fi-FI/index.json
+++ b/apps/frontend/src/locales/fi-FI/index.json
@@ -347,18 +347,12 @@
"conversation-thread.action.approve": {
"message": "Hyväksy"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Hyväksy vastauksella"
- },
"conversation-thread.action.close-with-reply": {
"message": "Sulje vastauksella"
},
"conversation-thread.action.reject": {
"message": "Hylkää"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Hylkää vastauksella"
- },
"conversation-thread.action.reopen-thread": {
"message": "Avaa keskustelu uudelleen"
},
diff --git a/apps/frontend/src/locales/fil-PH/index.json b/apps/frontend/src/locales/fil-PH/index.json
index e9dc0a70aba..536d64607ed 100644
--- a/apps/frontend/src/locales/fil-PH/index.json
+++ b/apps/frontend/src/locales/fil-PH/index.json
@@ -2222,9 +2222,6 @@
"project.actions.dont-show-again": {
"message": "Huwag ipakita muli"
},
- "project.actions.review-project": {
- "message": "Suriin ang proyekto"
- },
"project.actions.servers-promo.description": {
"message": "Ang Modrinth Hosting ang pinakamadaling paraang makapaglaro sa iyong mga kalaro ng walang kahadlangan!"
},
diff --git a/apps/frontend/src/locales/fr-FR/index.json b/apps/frontend/src/locales/fr-FR/index.json
index fe12ad0d07a..5969c0e298c 100644
--- a/apps/frontend/src/locales/fr-FR/index.json
+++ b/apps/frontend/src/locales/fr-FR/index.json
@@ -1070,9 +1070,6 @@
"conversation-thread.action.approve": {
"message": "Approuver"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Approuver avec réponse"
- },
"conversation-thread.action.close-report": {
"message": "Fermer le signalement"
},
@@ -1082,9 +1079,6 @@
"conversation-thread.action.reject": {
"message": "Rejeter"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Rejeter avec réponse"
- },
"conversation-thread.action.reopen-thread": {
"message": "Rouvrir le fil"
},
@@ -1118,9 +1112,6 @@
"conversation-thread.action.withhold": {
"message": "Retenir"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Retenir avec réponse"
- },
"conversation-thread.closed-thread.description": {
"message": "Ce fil est fermé et aucun message ne peut y être envoyé."
},
@@ -1130,9 +1121,6 @@
"conversation-thread.error.reopening-report": {
"message": "Erreur lors de la réouverture du signalement"
},
- "conversation-thread.error.sending-message": {
- "message": "Impossible d'envoyer le message"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Répondre au fil..."
},
@@ -1160,9 +1148,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Je confirme que j'ai bel et bien adressé les messages des modérateurs."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Vous soumettez {projectTitle} à revoir de nouveau par les modérateurs."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Soumettre de nouveau à la révision"
},
@@ -3425,9 +3410,6 @@
"project-member-header.success-join": {
"message": "Vous avez rejoint l’équipe du projet"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Votre projet a été soumis pour vérification !"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Liste de contrôle de publication"
},
@@ -3545,9 +3527,6 @@
"project.actions.rescan-modpack": {
"message": "Rescanne le modpack"
},
- "project.actions.review-project": {
- "message": "Vérifier le projet"
- },
"project.actions.servers-promo.description": {
"message": "Les serveurs Modrinth Hosting sont la solution la plus facile pour jouer entre amis facilement !"
},
diff --git a/apps/frontend/src/locales/he-IL/index.json b/apps/frontend/src/locales/he-IL/index.json
index 38bc805d5e4..f5bc42431b0 100644
--- a/apps/frontend/src/locales/he-IL/index.json
+++ b/apps/frontend/src/locales/he-IL/index.json
@@ -1898,9 +1898,6 @@
"project.actions.dont-show-again": {
"message": "אל תציג שוב"
},
- "project.actions.review-project": {
- "message": "סקירת פרויקט"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting היא הדרך הקלה ביותר לשחק עם חברים בלי כאב ראש!"
},
diff --git a/apps/frontend/src/locales/hu-HU/index.json b/apps/frontend/src/locales/hu-HU/index.json
index 186bfebfaa3..d849803239d 100644
--- a/apps/frontend/src/locales/hu-HU/index.json
+++ b/apps/frontend/src/locales/hu-HU/index.json
@@ -1061,9 +1061,6 @@
"conversation-thread.action.approve": {
"message": "Jóváhagyás"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Jóváhagyás és válasz"
- },
"conversation-thread.action.close-report": {
"message": "Jelentés lezárása"
},
@@ -1073,9 +1070,6 @@
"conversation-thread.action.reject": {
"message": "Elutasítás"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Elutasítás és válasz"
- },
"conversation-thread.action.reopen-thread": {
"message": "Beszélgetés megnyitása újra"
},
@@ -1109,9 +1103,6 @@
"conversation-thread.action.withhold": {
"message": "Visszatartás"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Visszatartás és válasz"
- },
"conversation-thread.closed-thread.description": {
"message": "Ez a beszélgetés le van zárva, és nem lehet új üzeneteket küldeni benne."
},
@@ -1121,9 +1112,6 @@
"conversation-thread.error.reopening-report": {
"message": "Hiba a jelentés újranyitásában"
},
- "conversation-thread.error.sending-message": {
- "message": "Hiba történt az üzenet elküldésekor"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Válasz a beszélgetésre..."
},
@@ -1151,9 +1139,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Megerősítem, hogy a moderátorok észrevételeit megfelelően figyelembe vettem."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "A(z) {projectTitle} projektet újra benyújtod a moderátorok felülvizsgálatára."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Benyújtás újra felülvizsgálatra"
},
@@ -3407,9 +3392,6 @@
"project-member-header.success-join": {
"message": "Csatlakoztál a projekt csapatához"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "A projektedet sikeresen beküldtük ellenőrzésre!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Közzétételi ellenőrzőlista"
},
@@ -3527,9 +3509,6 @@
"project.actions.rescan-modpack": {
"message": "Modcsomag újbóli vizsgálata"
},
- "project.actions.review-project": {
- "message": "Tekintsd át a projektet"
- },
"project.actions.servers-promo.description": {
"message": "A Modrinth Hosting a legegyszerűbb módja annak, hogy gond nélkül játszhass a barátaiddal!"
},
diff --git a/apps/frontend/src/locales/id-ID/index.json b/apps/frontend/src/locales/id-ID/index.json
index 474e71dd69d..029e175978f 100644
--- a/apps/frontend/src/locales/id-ID/index.json
+++ b/apps/frontend/src/locales/id-ID/index.json
@@ -2288,9 +2288,6 @@
"project.actions.dont-show-again": {
"message": "Jangan tampilkan lagi"
},
- "project.actions.review-project": {
- "message": "Tinjau proyek"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting adalah cara termudah untuk bermain bersama teman Anda tanpa repot!"
},
diff --git a/apps/frontend/src/locales/it-IT/index.json b/apps/frontend/src/locales/it-IT/index.json
index ce1a41a9cb2..d1a52c41000 100644
--- a/apps/frontend/src/locales/it-IT/index.json
+++ b/apps/frontend/src/locales/it-IT/index.json
@@ -1073,9 +1073,6 @@
"conversation-thread.action.approve": {
"message": "Approva"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Approva con risposta"
- },
"conversation-thread.action.close-report": {
"message": "Chiudi segnalazione"
},
@@ -1085,9 +1082,6 @@
"conversation-thread.action.reject": {
"message": "Rifiuta"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Rifiuta con risposta"
- },
"conversation-thread.action.reopen-thread": {
"message": "Riapri thread"
},
@@ -1121,9 +1115,6 @@
"conversation-thread.action.withhold": {
"message": "Sospendi"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Sospendi con risposta"
- },
"conversation-thread.closed-thread.description": {
"message": "Questo thread è stato chiuso. Non potranno essere inviati nuovi messaggi."
},
@@ -1133,9 +1124,6 @@
"conversation-thread.error.reopening-report": {
"message": "Impossibile riaprire la segnalazione"
},
- "conversation-thread.error.sending-message": {
- "message": "Impossibile inviare il messaggio"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Rispondi al thread..."
},
@@ -1163,9 +1151,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Confermo di aver risposto adeguatamente ai messaggi dei moderatori."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Stai ripresentando {projectTitle} per farlo revisionare nuovamente ai moderatori."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Ripresentazione"
},
@@ -3431,9 +3416,6 @@
"project-member-header.success-join": {
"message": "Ora fai parte del team del progetto"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Il progetto è stato presentato per la revisione!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Checklist di pubblicazione"
},
@@ -3551,9 +3533,6 @@
"project.actions.rescan-modpack": {
"message": "Riscansiona pacchetto"
},
- "project.actions.review-project": {
- "message": "Rivedi progetto"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting è il modo più facile per giocare insieme spensieratamente!"
},
diff --git a/apps/frontend/src/locales/ja-JP/index.json b/apps/frontend/src/locales/ja-JP/index.json
index ec6f822c8b8..90e17107f88 100644
--- a/apps/frontend/src/locales/ja-JP/index.json
+++ b/apps/frontend/src/locales/ja-JP/index.json
@@ -1070,9 +1070,6 @@
"conversation-thread.action.approve": {
"message": "承認"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "送信して承認"
- },
"conversation-thread.action.close-report": {
"message": "レポートを閉じる"
},
@@ -1082,9 +1079,6 @@
"conversation-thread.action.reject": {
"message": "却下済み"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "返信して拒否する"
- },
"conversation-thread.action.reopen-thread": {
"message": "スレッドを再開する\n"
},
@@ -1118,9 +1112,6 @@
"conversation-thread.action.withhold": {
"message": "保留にする\n"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "返信付きで保留にする\n"
- },
"conversation-thread.closed-thread.description": {
"message": "このスレッドは閉じられているため、新しいメッセージを送信できません。\n"
},
@@ -1130,9 +1121,6 @@
"conversation-thread.error.reopening-report": {
"message": "報告を再開する際にエラーが発生しました。\n"
},
- "conversation-thread.error.sending-message": {
- "message": "メッセージの送信中にエラーが発生しました。\n"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "スレッドに返信…\n"
},
@@ -1160,9 +1148,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "モデレーターからのコメントに適切に対応したことを確認します。\n"
},
- "conversation-thread.resubmit-modal.description": {
- "message": "{projectTitle} をモデレーターによる再審査に提出します。\n"
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "再審査に再提出しています…\n"
},
@@ -3419,9 +3404,6 @@
"project.actions.rescan-modpack": {
"message": "Modパックリスキャン"
},
- "project.actions.review-project": {
- "message": "プロジェクトを評価"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hostingは手間を掛けず、簡単に友達と遊べます!"
},
diff --git a/apps/frontend/src/locales/ko-KR/index.json b/apps/frontend/src/locales/ko-KR/index.json
index 166f783457b..3c42b8c6031 100644
--- a/apps/frontend/src/locales/ko-KR/index.json
+++ b/apps/frontend/src/locales/ko-KR/index.json
@@ -1061,9 +1061,6 @@
"conversation-thread.action.approve": {
"message": "승인"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "답글과 함께 승인"
- },
"conversation-thread.action.close-report": {
"message": "티켓 닫기"
},
@@ -1073,9 +1070,6 @@
"conversation-thread.action.reject": {
"message": "거부"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "답글과 함께 거부"
- },
"conversation-thread.action.reopen-thread": {
"message": "스레드 다시 열기"
},
@@ -1109,9 +1103,6 @@
"conversation-thread.action.withhold": {
"message": "보류"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "답글과 함께 보류"
- },
"conversation-thread.closed-thread.description": {
"message": "이 스레드는 닫혔으며, 더 이상 새로운 메시지를 작성할 수 없습니다."
},
@@ -1121,9 +1112,6 @@
"conversation-thread.error.reopening-report": {
"message": "신고 다시 열기 오류"
},
- "conversation-thread.error.sending-message": {
- "message": "메시지 전송 오류"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "스레드에 답글 게시..."
},
@@ -1151,9 +1139,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "운영진의 지적 사항을 적절히 반영했음을 확인합니다."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "{projectTitle} 프로젝트를 운영진의 재검토를 위해 제출하려고 합니다."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "검토를 위해 다시 제출"
},
@@ -3536,9 +3521,6 @@
"project.actions.rescan-modpack": {
"message": "모드팩 재검사"
},
- "project.actions.review-project": {
- "message": "프로젝트 검토"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth 호스팅은 친구들과 번거로움 없이 플레이할 수 있는 가장 쉬운 방법입니다!"
},
diff --git a/apps/frontend/src/locales/ms-MY/index.json b/apps/frontend/src/locales/ms-MY/index.json
index f2b1d5f61fd..7dce04418e2 100644
--- a/apps/frontend/src/locales/ms-MY/index.json
+++ b/apps/frontend/src/locales/ms-MY/index.json
@@ -785,18 +785,12 @@
"conversation-thread.action.approve": {
"message": "Luluskan"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Luluskan dengan balasan"
- },
"conversation-thread.action.close-with-reply": {
"message": "Tutup dengan balasan"
},
"conversation-thread.action.reject": {
"message": "Tolak"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Tolak dengan balasan"
- },
"conversation-thread.action.reopen-thread": {
"message": "Buka semula bebenang"
},
@@ -830,18 +824,12 @@
"conversation-thread.action.withhold": {
"message": "Tahan"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Tahan dengan balasan"
- },
"conversation-thread.error.closing-report": {
"message": "Ralat semasa menutup laporan"
},
"conversation-thread.error.reopening-report": {
"message": "Ralat semasa membuka semula laporan"
},
- "conversation-thread.error.sending-message": {
- "message": "Ralat semasa menghantar mesej"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Balas bebenang..."
},
@@ -866,9 +854,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Saya mengesahkan bahawa saya telah menjawab ulasan-ulasan penyederhana dengan betul."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Anda sedang menghantar {projectTitle} untuk disemak semula oleh penyederhana."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Sedang menyerahkan semula untuk semakan"
},
@@ -2885,9 +2870,6 @@
"project.actions.dont-show-again": {
"message": "Jangan tunjukkan lagi"
},
- "project.actions.review-project": {
- "message": "Semak projek"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting ialah cara paling mudah untuk bermain dengan rakan anda tanpa perlu bersusah payah!"
},
diff --git a/apps/frontend/src/locales/nl-NL/index.json b/apps/frontend/src/locales/nl-NL/index.json
index f7f2fc88a3f..ece1e4ff875 100644
--- a/apps/frontend/src/locales/nl-NL/index.json
+++ b/apps/frontend/src/locales/nl-NL/index.json
@@ -1049,9 +1049,6 @@
"conversation-thread.action.approve": {
"message": "Accepteren"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Accepteren met antwoord"
- },
"conversation-thread.action.close-report": {
"message": "Rapport afsluiten"
},
@@ -1061,9 +1058,6 @@
"conversation-thread.action.reject": {
"message": "Afkeuren"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Afkeuren met antwoord"
- },
"conversation-thread.action.reopen-thread": {
"message": "Heropen thread"
},
@@ -1097,9 +1091,6 @@
"conversation-thread.action.withhold": {
"message": "Terughouden"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Terughouden met antwoord"
- },
"conversation-thread.closed-thread.description": {
"message": "Deze thread is gesloten en kan geen nieuwe berichten meer ontvangen."
},
@@ -1109,9 +1100,6 @@
"conversation-thread.error.reopening-report": {
"message": "Fout tijdens het heropenen van rapport"
},
- "conversation-thread.error.sending-message": {
- "message": "Fout tijdens het versturen van bericht"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Reageer op het thread..."
},
@@ -1139,9 +1127,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Ik conformeer dat ik de opmerking van de moderator heb geadresseerd."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Je verstuurd {projectTitle} om opnieuw door de moderators gereviewd te laten worden."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Heropsturen voor beoordeling"
},
@@ -3401,9 +3386,6 @@
"project-member-header.success-join": {
"message": "Je doet mee met het project team"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Je project is ingediend ter beoordeling!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Controlelijst publiceren"
},
@@ -3521,9 +3503,6 @@
"project.actions.rescan-modpack": {
"message": "Modpack opnieuw scannen"
},
- "project.actions.review-project": {
- "message": "Beoordeel project"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting is de makkelijkste manier om zonder gedoe met je vrienden te spelen!"
},
diff --git a/apps/frontend/src/locales/no-NO/index.json b/apps/frontend/src/locales/no-NO/index.json
index 0e026211567..8ac47cd3f70 100644
--- a/apps/frontend/src/locales/no-NO/index.json
+++ b/apps/frontend/src/locales/no-NO/index.json
@@ -752,18 +752,12 @@
"conversation-thread.action.approve": {
"message": "Godkjenn"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Godkjenn med svar"
- },
"conversation-thread.action.close-with-reply": {
"message": "Lukk med svar"
},
"conversation-thread.action.reject": {
"message": "Avvis"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Avvis med svar"
- },
"conversation-thread.action.reopen-thread": {
"message": "Gjenåpne tråd"
},
@@ -2669,9 +2663,6 @@
"project.actions.dont-show-again": {
"message": "Ikke vis igjen"
},
- "project.actions.review-project": {
- "message": "Anmeld prosjekt"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting er den letteste måten å spille med vennene dine uten problem!"
},
diff --git a/apps/frontend/src/locales/pl-PL/index.json b/apps/frontend/src/locales/pl-PL/index.json
index 24f01cbf77b..cc275b4d2f0 100644
--- a/apps/frontend/src/locales/pl-PL/index.json
+++ b/apps/frontend/src/locales/pl-PL/index.json
@@ -1070,9 +1070,6 @@
"conversation-thread.action.approve": {
"message": "Zatwierdź"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Zatwierdź z odpowiedzią "
- },
"conversation-thread.action.close-report": {
"message": "Zamknij zgłoszenie"
},
@@ -1082,9 +1079,6 @@
"conversation-thread.action.reject": {
"message": "Odrzuć"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Odrzuć z odpowiedzią"
- },
"conversation-thread.action.reopen-thread": {
"message": "Otwórz ponownie wątek "
},
@@ -1118,9 +1112,6 @@
"conversation-thread.action.withhold": {
"message": "Wstrzymaj"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Wstrzymaj z odpowiedzią"
- },
"conversation-thread.closed-thread.description": {
"message": "Ten wątek jest zamknięty i nie można wysyłać do niego nowych wiadomości."
},
@@ -1130,9 +1121,6 @@
"conversation-thread.error.reopening-report": {
"message": "Błąd podczas ponownego otwierania zgłoszenia"
},
- "conversation-thread.error.sending-message": {
- "message": "Błąd podczas wysyłania wiadomości"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Odpowiedz na wątek..."
},
@@ -1160,9 +1148,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Potwierdzam, że komentarze od zespołu moderacji zostały zaadresowane."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Wysyłasz {projectTitle} do ponownego przeglądu przez naszych moderatorów."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Ponowne wysyłanie do przeglądu"
},
@@ -3425,9 +3410,6 @@
"project-member-header.success-join": {
"message": "Zaakceptowano zaproszenie do zespołu"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Twój projekt został przesłany do sprawdzenia!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Lista kontrolna publikacji"
},
@@ -3542,9 +3524,6 @@
"project.actions.rescan-modpack": {
"message": "Ponownie skanuj paczkę modów"
},
- "project.actions.review-project": {
- "message": "Przegląd projektu"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting to najprostszy sposób na zabawę z przyjaciółmi bez żadnych kłopotów!"
},
diff --git a/apps/frontend/src/locales/pt-BR/index.json b/apps/frontend/src/locales/pt-BR/index.json
index 8fc1eb516f1..27a051fd114 100644
--- a/apps/frontend/src/locales/pt-BR/index.json
+++ b/apps/frontend/src/locales/pt-BR/index.json
@@ -1073,9 +1073,6 @@
"conversation-thread.action.approve": {
"message": "Aprovar"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Aprovar com resposta"
- },
"conversation-thread.action.close-report": {
"message": "Fechar denúncia"
},
@@ -1085,9 +1082,6 @@
"conversation-thread.action.reject": {
"message": "Rejeitar"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Rejeitar com resposta"
- },
"conversation-thread.action.reopen-thread": {
"message": "Reabrir tópico"
},
@@ -1121,9 +1115,6 @@
"conversation-thread.action.withhold": {
"message": "Reter"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Reter com resposta"
- },
"conversation-thread.closed-thread.description": {
"message": "Este tópico foi encerrado e não é possível enviar mensagens nele."
},
@@ -1133,9 +1124,6 @@
"conversation-thread.error.reopening-report": {
"message": "Erro ao reabrir o relatório"
},
- "conversation-thread.error.sending-message": {
- "message": "Erro ao enviar mensagem"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Responder ao tópico..."
},
@@ -1163,9 +1151,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Confirmo que respondi adequadamente aos comentários dos moderadores."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Você está enviando {projectTitle} para ser revisado novamente pelos moderadores."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Reenviando para revisão"
},
@@ -3431,9 +3416,6 @@
"project-member-header.success-join": {
"message": "Você entrou na equipe do projeto"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Seu projeto foi entregue para revisão!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Tarefas de publicação"
},
@@ -3551,9 +3533,6 @@
"project.actions.rescan-modpack": {
"message": "Rescanear pacote de mods"
},
- "project.actions.review-project": {
- "message": "Revisar projeto"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting é o jeito mais fácil de jogar com seus amigos sem perturbações!"
},
diff --git a/apps/frontend/src/locales/pt-PT/index.json b/apps/frontend/src/locales/pt-PT/index.json
index e3f8e766d80..64ecbb78b47 100644
--- a/apps/frontend/src/locales/pt-PT/index.json
+++ b/apps/frontend/src/locales/pt-PT/index.json
@@ -986,18 +986,12 @@
"conversation-thread.action.approve": {
"message": "Aprovar"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Aprovar com comentário"
- },
"conversation-thread.action.close-with-reply": {
"message": "Fechar com comentário"
},
"conversation-thread.action.reject": {
"message": "Rejeitar"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Rejeitar com comentário"
- },
"conversation-thread.action.reopen-thread": {
"message": "Reabrir tópico"
},
@@ -1031,9 +1025,6 @@
"conversation-thread.action.withhold": {
"message": "Reter"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Reter com comentário"
- },
"conversation-thread.closed-thread.description": {
"message": "Este tópico está fechado e não aceita novas mensagens."
},
@@ -1043,9 +1034,6 @@
"conversation-thread.error.reopening-report": {
"message": "Erro ao reabrir relatório"
},
- "conversation-thread.error.sending-message": {
- "message": "Erro ao enviar mensagem"
- },
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Os ficheiros suplementares destinam-se a recursos de apoio, como código-fonte, e não a versões alternativas ou variantes"
},
@@ -2915,9 +2903,6 @@
"project.actions.dont-show-again": {
"message": "Não mostrar novamente"
},
- "project.actions.review-project": {
- "message": "Rever projeto"
- },
"project.actions.servers-promo.description": {
"message": "O Modrinth Hosting é a maneira mais fácil de jogar com os teus amigos sem complicações!"
},
diff --git a/apps/frontend/src/locales/ro-RO/index.json b/apps/frontend/src/locales/ro-RO/index.json
index ce763b11db4..973f99498dc 100644
--- a/apps/frontend/src/locales/ro-RO/index.json
+++ b/apps/frontend/src/locales/ro-RO/index.json
@@ -551,9 +551,6 @@
"collection.title": {
"message": "{name} - Colecție"
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Trimiți {projectTitle} pentru a fi revizuit din nou de moderatori."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Retrimite pentru revizuire"
},
@@ -1589,9 +1586,6 @@
"project.actions.dont-show-again": {
"message": "Nu afișa din nou"
},
- "project.actions.review-project": {
- "message": "Revizuiește proiectul"
- },
"project.actions.servers-promo.pricing": {
"message": "Începând de la {price} / lună "
},
diff --git a/apps/frontend/src/locales/ru-RU/index.json b/apps/frontend/src/locales/ru-RU/index.json
index 429a0983ef5..67b6292f500 100644
--- a/apps/frontend/src/locales/ru-RU/index.json
+++ b/apps/frontend/src/locales/ru-RU/index.json
@@ -1067,9 +1067,6 @@
"conversation-thread.action.approve": {
"message": "Одобрить"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Одобрить с ответом"
- },
"conversation-thread.action.close-report": {
"message": "Закрыть жалобу"
},
@@ -1079,9 +1076,6 @@
"conversation-thread.action.reject": {
"message": "Отклонить"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Отклонить с ответом"
- },
"conversation-thread.action.reopen-thread": {
"message": "Возобновить ветку"
},
@@ -1115,9 +1109,6 @@
"conversation-thread.action.withhold": {
"message": "Удержать"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Удержать с ответом"
- },
"conversation-thread.closed-thread.description": {
"message": "Ветка закрыта. Отправка сообщений недоступна."
},
@@ -1127,9 +1118,6 @@
"conversation-thread.error.reopening-report": {
"message": "Ошибка возобновления жалобы"
},
- "conversation-thread.error.sending-message": {
- "message": "Ошибка отправки сообщения"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Ответьте в ветке..."
},
@@ -1157,9 +1145,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Я подтверждаю, что все замечания модераторов исправлены."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Вы повторно отправляете {projectTitle} на проверку."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Отправка на перепроверку"
},
@@ -3419,9 +3404,6 @@
"project-member-header.success-join": {
"message": "Вы присоединились к команде проекта"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Проект отправлен на проверку!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Контрольный список для публикации"
},
@@ -3539,9 +3521,6 @@
"project.actions.rescan-modpack": {
"message": "Пересканировать сборку"
},
- "project.actions.review-project": {
- "message": "Проверить проект"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting — самый простой способ играть с друзьями без лишних хлопот!"
},
diff --git a/apps/frontend/src/locales/sv-SE/index.json b/apps/frontend/src/locales/sv-SE/index.json
index 7943eb79f20..9ce778370d8 100644
--- a/apps/frontend/src/locales/sv-SE/index.json
+++ b/apps/frontend/src/locales/sv-SE/index.json
@@ -1037,9 +1037,6 @@
"conversation-thread.action.approve": {
"message": "Godkänn"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Godkänn med svar"
- },
"conversation-thread.action.close-report": {
"message": "Stäng rapport"
},
@@ -1049,9 +1046,6 @@
"conversation-thread.action.reject": {
"message": "Avslå"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Avslå med svar"
- },
"conversation-thread.action.reopen-thread": {
"message": "Återuppta tråd"
},
@@ -1085,9 +1079,6 @@
"conversation-thread.action.withhold": {
"message": "Tillhandahåll"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Tillbakahåll med svar"
- },
"conversation-thread.closed-thread.description": {
"message": "Den här tråden är stängd och nya meddelanden kan inte skickas."
},
@@ -1097,9 +1088,6 @@
"conversation-thread.error.reopening-report": {
"message": "Fel vid öppning av rapport"
},
- "conversation-thread.error.sending-message": {
- "message": "Kunde inte skicka meddelande"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Svara tråden..."
},
@@ -1127,9 +1115,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Jag bekräftar att jag ordentligt tagit itu med moderatorernas kommentarer."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Du skickar in {projectTitle} för att granskas igen av moderatorerna."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Skickar in igen för granskning"
},
@@ -3146,9 +3131,6 @@
"project-member-header.success-join": {
"message": "Du har gått med i projektteamet"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Ditt projekt har skickats in för granskning!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Publicerings-checklista"
},
@@ -3263,9 +3245,6 @@
"project.actions.rescan-modpack": {
"message": "Skanna projekt igen"
},
- "project.actions.review-project": {
- "message": "Granska projekt"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting är det lättaste sättet att spela med dina vänner utan svårigheter!"
},
diff --git a/apps/frontend/src/locales/tr-TR/index.json b/apps/frontend/src/locales/tr-TR/index.json
index 0c054eec076..7458cbe9440 100644
--- a/apps/frontend/src/locales/tr-TR/index.json
+++ b/apps/frontend/src/locales/tr-TR/index.json
@@ -1037,9 +1037,6 @@
"conversation-thread.action.approve": {
"message": "Onaylandı"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Onaylandı, işlem tamamlandı"
- },
"conversation-thread.action.close-report": {
"message": "Raporu kapat"
},
@@ -1049,9 +1046,6 @@
"conversation-thread.action.reject": {
"message": "Reddet"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Cevap vererek reddet"
- },
"conversation-thread.action.reopen-thread": {
"message": "Konuyu yeniden aç"
},
@@ -1085,9 +1079,6 @@
"conversation-thread.action.withhold": {
"message": "Yanıtla birlikte taslağa çevir"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Yanıtla birlikte beklet"
- },
"conversation-thread.closed-thread.description": {
"message": "Bu konu kapatılmıştır ve yeni mesaj gönderilemez."
},
@@ -1097,9 +1088,6 @@
"conversation-thread.error.reopening-report": {
"message": "Rapor yeniden açılırken hata oluştu"
},
- "conversation-thread.error.sending-message": {
- "message": "Mesaj gönderilirken hata oluştu"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Konuya yanıt ver..."
},
@@ -1127,9 +1115,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Moderatörlerin yorumlarını uygun şekilde yanıtladığımı onaylıyorum."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "{projectTitle} projesini moderatörler tarafından yeniden incelenmek üzere gönderiyorsunuz."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "İnceleme için yeniden gönderiliyor"
},
@@ -3389,9 +3374,6 @@
"project-member-header.success-join": {
"message": "Proje ekibine katıldınız"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Projeniz değerlendirme için gönderilmiştir!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Yayımlama kontrol listesi"
},
@@ -3509,9 +3491,6 @@
"project.actions.rescan-modpack": {
"message": "Mod paketini yeniden incele"
},
- "project.actions.review-project": {
- "message": "Projeyi incele"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting arkadaşlarınla uğraşsız oynamanın en kolay yolu!"
},
diff --git a/apps/frontend/src/locales/uk-UA/index.json b/apps/frontend/src/locales/uk-UA/index.json
index f11a1489de1..723784de1dd 100644
--- a/apps/frontend/src/locales/uk-UA/index.json
+++ b/apps/frontend/src/locales/uk-UA/index.json
@@ -1070,9 +1070,6 @@
"conversation-thread.action.approve": {
"message": "Підтвердити"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "Підтвердити з відповіддю"
- },
"conversation-thread.action.close-report": {
"message": "Закрити скаргу"
},
@@ -1082,9 +1079,6 @@
"conversation-thread.action.reject": {
"message": "Відхилити"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Відхилити з відповіддю"
- },
"conversation-thread.action.reopen-thread": {
"message": "Знову відкрити потік"
},
@@ -1118,9 +1112,6 @@
"conversation-thread.action.withhold": {
"message": "Утримуватися"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Утримуватися з відповіддю"
- },
"conversation-thread.closed-thread.description": {
"message": "Цю тему зачинено, і в нього не можна надсилати нові повідомлення."
},
@@ -1130,9 +1121,6 @@
"conversation-thread.error.reopening-report": {
"message": "Помилка повторного відкриття звіту"
},
- "conversation-thread.error.sending-message": {
- "message": "Помилка надсилання повідомлення"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Відповісти до потоку…"
},
@@ -1160,9 +1148,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Я підтверджую, що я правильно розглянув коментарі модераторів."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Ви надсилаєте {projectTitle} на повторний розгляд модераторам."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Повторне подання на розгляд"
},
@@ -3425,9 +3410,6 @@
"project-member-header.success-join": {
"message": "Ви доєдналися до команди проєкту"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "Проєкт відправлено на перевірку!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "Контрольний список для публікації"
},
@@ -3545,9 +3527,6 @@
"project.actions.rescan-modpack": {
"message": "Пересканувати збірку"
},
- "project.actions.review-project": {
- "message": "Переглянути проєкт"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting — це найпростіший спосіб грати з друзями без клопоту!"
},
diff --git a/apps/frontend/src/locales/vi-VN/index.json b/apps/frontend/src/locales/vi-VN/index.json
index f08ec749f7c..72085cf5141 100644
--- a/apps/frontend/src/locales/vi-VN/index.json
+++ b/apps/frontend/src/locales/vi-VN/index.json
@@ -1085,9 +1085,6 @@
"conversation-thread.action.reject": {
"message": "Từ chối"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "Từ chối với phản hồi"
- },
"conversation-thread.action.reopen-thread": {
"message": "Mở lại luồng"
},
@@ -1121,9 +1118,6 @@
"conversation-thread.action.withhold": {
"message": "Thu hồi"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "Thu hồi với phản hồi"
- },
"conversation-thread.closed-thread.description": {
"message": "Luồng này đã bị đóng và tin nhắn mới không thể gửi được vào."
},
@@ -1133,9 +1127,6 @@
"conversation-thread.error.reopening-report": {
"message": "Lỗi khi mở lại báo cáo"
},
- "conversation-thread.error.sending-message": {
- "message": "Lỗi khi gửi tin nhắn"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "Đang phản hồi vào luồng..."
},
@@ -1163,9 +1154,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "Tôi đã chắc chắn rằng tôi đã trả lời đúng cách các bình luận từ bên kiểm duyệt."
},
- "conversation-thread.resubmit-modal.description": {
- "message": "Bạn sẽ gửi {projectTitle} để được xem lại từ bên kiểm duyệt."
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "Gửi lại để kiểm duyệt"
},
@@ -3551,9 +3539,6 @@
"project.actions.rescan-modpack": {
"message": "Quét lại modpack"
},
- "project.actions.review-project": {
- "message": "Xem xét dự án"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting là cách đơn giản nhất để chơi cùng bạn bè mà không gặp rắc rối!"
},
diff --git a/apps/frontend/src/locales/zh-CN/index.json b/apps/frontend/src/locales/zh-CN/index.json
index 09278afdb05..a4a3bac1208 100644
--- a/apps/frontend/src/locales/zh-CN/index.json
+++ b/apps/frontend/src/locales/zh-CN/index.json
@@ -1073,9 +1073,6 @@
"conversation-thread.action.approve": {
"message": "批准"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "批准并回复"
- },
"conversation-thread.action.close-report": {
"message": "关闭举报"
},
@@ -1085,9 +1082,6 @@
"conversation-thread.action.reject": {
"message": "驳回"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "驳回并回复"
- },
"conversation-thread.action.reopen-thread": {
"message": "重开对话消息"
},
@@ -1121,9 +1115,6 @@
"conversation-thread.action.withhold": {
"message": "扣留"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "扣留并回复"
- },
"conversation-thread.closed-thread.description": {
"message": "此对话消息已关闭,无法发送新消息。"
},
@@ -1133,9 +1124,6 @@
"conversation-thread.error.reopening-report": {
"message": "重开举报出错"
},
- "conversation-thread.error.sending-message": {
- "message": "发送消息出错"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "回复对话消息……"
},
@@ -1163,9 +1151,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "我确认我已妥善处理了管理员的评论。"
},
- "conversation-thread.resubmit-modal.description": {
- "message": "这将会把 {projectTitle} 提交给管理员重新审核。"
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "重新提交审核"
},
@@ -3431,9 +3416,6 @@
"project-member-header.success-join": {
"message": "你加入了项目团队"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "您的项目已提交审核!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "发布前检查单"
},
@@ -3551,9 +3533,6 @@
"project.actions.rescan-modpack": {
"message": "重新扫描整合包"
},
- "project.actions.review-project": {
- "message": "审核项目"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting,让你轻松和朋友联机,毫无烦恼!"
},
diff --git a/apps/frontend/src/locales/zh-TW/index.json b/apps/frontend/src/locales/zh-TW/index.json
index 13aa6faf1d8..36ef8c2f39f 100644
--- a/apps/frontend/src/locales/zh-TW/index.json
+++ b/apps/frontend/src/locales/zh-TW/index.json
@@ -1073,9 +1073,6 @@
"conversation-thread.action.approve": {
"message": "核准"
},
- "conversation-thread.action.approve-with-reply": {
- "message": "回覆並核准"
- },
"conversation-thread.action.close-report": {
"message": "關閉檢舉"
},
@@ -1085,9 +1082,6 @@
"conversation-thread.action.reject": {
"message": "拒絕"
},
- "conversation-thread.action.reject-with-reply": {
- "message": "回覆並拒絕"
- },
"conversation-thread.action.reopen-thread": {
"message": "重新開啟討論串"
},
@@ -1121,9 +1115,6 @@
"conversation-thread.action.withhold": {
"message": "保留"
},
- "conversation-thread.action.withhold-with-reply": {
- "message": "回覆並保留"
- },
"conversation-thread.closed-thread.description": {
"message": "這個討論串已關閉,無法再傳送新訊息。"
},
@@ -1133,9 +1124,6 @@
"conversation-thread.error.reopening-report": {
"message": "重新開啟檢舉時發生錯誤"
},
- "conversation-thread.error.sending-message": {
- "message": "傳送訊息時發生錯誤"
- },
"conversation-thread.reply-editor.placeholder.reply": {
"message": "回覆討論串..."
},
@@ -1163,9 +1151,6 @@
"conversation-thread.resubmit-modal.confirmation.label": {
"message": "我確認管理員所提到的問題皆已解決。"
},
- "conversation-thread.resubmit-modal.description": {
- "message": "你即將提交 {projectTitle} 以供管理員再次審查。"
- },
"conversation-thread.resubmit-modal.header.resubmitting": {
"message": "重新提交審查"
},
@@ -3431,9 +3416,6 @@
"project-member-header.success-join": {
"message": "你加入了專案團隊"
},
- "project-moderation-nags.project-submitted-for-review": {
- "message": "你的專案已提交審查!"
- },
"project-moderation-nags.publishing-checklist": {
"message": "發布檢查清單"
},
@@ -3551,9 +3533,6 @@
"project.actions.rescan-modpack": {
"message": "重新掃描模組包"
},
- "project.actions.review-project": {
- "message": "審查專案"
- },
"project.actions.servers-promo.description": {
"message": "Modrinth Hosting 是讓你與朋友輕鬆遊玩的最佳方式!"
},
diff --git a/apps/frontend/src/pages/[type]/[project].vue b/apps/frontend/src/pages/[type]/[project].vue
index efe1c348de4..40e9e50657f 100644
--- a/apps/frontend/src/pages/[type]/[project].vue
+++ b/apps/frontend/src/pages/[type]/[project].vue
@@ -117,23 +117,7 @@
v-if="projectInstallContext && !isSettings"
:install-context="projectInstallContext"
/>
-