mirror of
https://github.com/modrinth/code.git
synced 2026-08-03 06:35:53 +00:00
Compare commits
42
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26ace18837 | ||
|
|
c0e3dee692 | ||
|
|
d5be2bd739 | ||
|
|
0dac5684af | ||
|
|
ca0b8d5ca4 | ||
|
|
b6651efe52 | ||
|
|
eb28121c0a | ||
|
|
a5ebc85356 | ||
|
|
c530671be1 | ||
|
|
bb6d8a6fc4 | ||
|
|
256e8f946a | ||
|
|
7e5590b8b9 | ||
|
|
d20f05fb04 | ||
|
|
a00a7971d1 | ||
|
|
26e98b7155 | ||
|
|
77b06f679e | ||
|
|
50e9472dd9 | ||
|
|
b569354793 | ||
|
|
b667b3ae9e | ||
|
|
16de6182e4 | ||
|
|
364fed52dd | ||
|
|
0fe695721a | ||
|
|
692f22b749 | ||
|
|
ed7792097d | ||
|
|
c56ce6c9ee | ||
|
|
91bc58b8ee | ||
|
|
38d757b66a | ||
|
|
862b54f00d | ||
|
|
c2f4835fe7 | ||
|
|
b97c191d75 | ||
|
|
b0c6a06909 | ||
|
|
fc3e384f54 | ||
|
|
87ff8fd4d9 | ||
|
|
288c1fb970 | ||
|
|
f6e6ac28d4 | ||
|
|
4a972bca73 | ||
|
|
b09c26f616 | ||
|
|
204bd52a5a | ||
|
|
b59f327b04 | ||
|
|
89e643fa50 | ||
|
|
cee25fdbbc | ||
|
|
b95a2d875a |
@@ -76,13 +76,6 @@ jobs:
|
||||
env:
|
||||
SCCACHE_DIR: ${{ needs.skip-if-clean.outputs.internal == 'true' && '/mnt/sccache' || '' }}
|
||||
SCCACHE_CACHE_SIZE: ${{ needs.skip-if-clean.outputs.internal == 'true' && '10G' || '' }}
|
||||
SCCACHE_MULTILEVEL_CHAIN: ${{ needs.skip-if-clean.outputs.internal == 'true' && 'disk,s3' || '' }}
|
||||
SCCACHE_S3_KEY_PREFIX: ${{ needs.skip-if-clean.outputs.internal == 'true' && format('{0}/', github.repository) || '' }}
|
||||
SCCACHE_BUCKET: ${{ secrets.SCCACHE_BUCKET }}
|
||||
SCCACHE_REGION: ${{ secrets.SCCACHE_REGION }}
|
||||
SCCACHE_ENDPOINT: ${{ secrets.SCCACHE_ENDPOINT }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.SCCACHE_S3_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.SCCACHE_S3_SECRET_ACCESS_KEY }}
|
||||
RUSTC_WRAPPER: ${{ needs.skip-if-clean.outputs.internal == 'true' && 'sccache' || '' }}
|
||||
needs: [skip-if-clean]
|
||||
if: ${{ needs.skip-if-clean.outputs.skip != 'true' }}
|
||||
|
||||
@@ -78,13 +78,6 @@ jobs:
|
||||
GIT_HASH: ${{ github.sha }}
|
||||
SCCACHE_DIR: ${{ needs.skip-if-clean.outputs.internal == 'true' && '/mnt/sccache' || '' }}
|
||||
SCCACHE_CACHE_SIZE: ${{ needs.skip-if-clean.outputs.internal == 'true' && '10G' || '' }}
|
||||
SCCACHE_MULTILEVEL_CHAIN: ${{ needs.skip-if-clean.outputs.internal == 'true' && 'disk,s3' || '' }}
|
||||
SCCACHE_S3_KEY_PREFIX: ${{ needs.skip-if-clean.outputs.internal == 'true' && format('{0}/', github.repository) || '' }}
|
||||
SCCACHE_BUCKET: ${{ secrets.SCCACHE_BUCKET }}
|
||||
SCCACHE_REGION: ${{ secrets.SCCACHE_REGION }}
|
||||
SCCACHE_ENDPOINT: ${{ secrets.SCCACHE_ENDPOINT }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.SCCACHE_S3_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.SCCACHE_S3_SECRET_ACCESS_KEY }}
|
||||
RUSTC_WRAPPER: ${{ needs.skip-if-clean.outputs.internal == 'true' && 'sccache' || '' }}
|
||||
steps:
|
||||
- name: Check out code
|
||||
|
||||
@@ -81,13 +81,6 @@ jobs:
|
||||
# blacksmith runner)
|
||||
SCCACHE_DIR: ${{ needs.skip-if-clean.outputs.internal == 'true' && '/mnt/sccache' || '' }}
|
||||
SCCACHE_CACHE_SIZE: ${{ needs.skip-if-clean.outputs.internal == 'true' && '10G' || '' }}
|
||||
SCCACHE_MULTILEVEL_CHAIN: ${{ needs.skip-if-clean.outputs.internal == 'true' && 'disk,s3' || '' }}
|
||||
SCCACHE_S3_KEY_PREFIX: ${{ needs.skip-if-clean.outputs.internal == 'true' && format('{0}/', github.repository) || '' }}
|
||||
SCCACHE_BUCKET: ${{ secrets.SCCACHE_BUCKET }}
|
||||
SCCACHE_REGION: ${{ secrets.SCCACHE_REGION }}
|
||||
SCCACHE_ENDPOINT: ${{ secrets.SCCACHE_ENDPOINT }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.SCCACHE_S3_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.SCCACHE_S3_SECRET_ACCESS_KEY }}
|
||||
RUSTC_WRAPPER: ${{ needs.skip-if-clean.outputs.internal == 'true' && 'sccache' || '' }}
|
||||
|
||||
steps:
|
||||
|
||||
@@ -146,7 +146,6 @@ const APP_LEFT_NAV_WIDTH = '4rem'
|
||||
const APP_SIDEBAR_WIDTH = 300
|
||||
const INTERCOM_BUBBLE_DEFAULT_PADDING = 20
|
||||
const PRIDE_FUNDRAISER_END_DATE = new Date('2026-07-01T00:00:00Z').getTime()
|
||||
const ROUTE_SUSPENSE_TIMEOUT_MS = 60_000
|
||||
const credentials = ref()
|
||||
const sidebarToggled = ref(true)
|
||||
const unsubscribeSidebarToggle = themeStore.$subscribe(() => {
|
||||
@@ -156,22 +155,6 @@ const forceSidebar = computed(
|
||||
() => route.path.startsWith('/browse') || route.path.startsWith('/project'),
|
||||
)
|
||||
const sidebarVisible = computed(() => sidebarToggled.value || forceSidebar.value)
|
||||
const keepAliveRouteComponents = computed(() => [
|
||||
...new Set(
|
||||
router
|
||||
.getRoutes()
|
||||
.map((route) => route.meta.keepAliveComponent)
|
||||
.filter((name) => typeof name === 'string'),
|
||||
),
|
||||
])
|
||||
|
||||
function getRouteViewKey(viewRoute) {
|
||||
const keepAliveKey = viewRoute.meta.keepAliveKey
|
||||
if (typeof keepAliveKey === 'function') return keepAliveKey(viewRoute)
|
||||
if (typeof keepAliveKey === 'string') return keepAliveKey
|
||||
return undefined
|
||||
}
|
||||
|
||||
const hostingRouteActive = computed(() => route.path.startsWith('/hosting'))
|
||||
const prideFundraiserEnabled = computed(
|
||||
() => themeStore.getFeatureFlag('pride_fundraiser') && Date.now() < PRIDE_FUNDRAISER_END_DATE,
|
||||
@@ -512,11 +495,6 @@ const sidebarOverlayScrollbarsOptions = Object.freeze({
|
||||
},
|
||||
})
|
||||
|
||||
router.beforeEach(async (to) => {
|
||||
const redirect = await resolveLegacyServerInstanceTabRedirect(to)
|
||||
if (redirect) return redirect
|
||||
})
|
||||
|
||||
router.beforeEach(() => {
|
||||
suspensePending = false
|
||||
if (routerToken) loading.end(routerToken)
|
||||
@@ -548,50 +526,6 @@ function onSuspensePending() {
|
||||
suspenseToken = loading.begin()
|
||||
}
|
||||
|
||||
async function resolveLegacyServerInstanceTabRedirect(to) {
|
||||
if (!['ServerManageContent', 'ServerManageFiles', 'ServerManageBackups'].includes(to.name)) {
|
||||
return null
|
||||
}
|
||||
|
||||
const serverId = getRouteParam(to.params.id)
|
||||
if (!serverId) return null
|
||||
|
||||
const tabPath =
|
||||
to.name === 'ServerManageFiles' ? '/files' : to.name === 'ServerManageBackups' ? '/backups' : ''
|
||||
const instancesPath = `/hosting/manage/${encodeURIComponent(serverId)}/instances`
|
||||
|
||||
try {
|
||||
const serverFull = await tauriApiClient.archon.servers_v1.get(serverId)
|
||||
const world = serverFull.worlds.find((item) => item.is_active) ?? serverFull.worlds[0]
|
||||
if (world) {
|
||||
return {
|
||||
path: `${instancesPath}/${encodeURIComponent(world.id)}${tabPath}`,
|
||||
query: to.query,
|
||||
hash: to.hash,
|
||||
replace: true,
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
return {
|
||||
path: instancesPath,
|
||||
query: to.query,
|
||||
hash: to.hash,
|
||||
replace: true,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
path: instancesPath,
|
||||
query: to.query,
|
||||
hash: to.hash,
|
||||
replace: true,
|
||||
}
|
||||
}
|
||||
|
||||
function getRouteParam(param) {
|
||||
return Array.isArray(param) ? param[0] : param
|
||||
}
|
||||
|
||||
function onSuspenseResolve() {
|
||||
if (suspenseToken) {
|
||||
loading.end(suspenseToken)
|
||||
@@ -1690,17 +1624,11 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
|
||||
>
|
||||
{{ formatMessage(messages.authUnreachableBody) }}
|
||||
</Admonition>
|
||||
<RouterView v-slot="{ Component, route: viewRoute }">
|
||||
<RouterView v-slot="{ Component }">
|
||||
<template v-if="Component">
|
||||
<KeepAlive :include="keepAliveRouteComponents" :max="3">
|
||||
<Suspense
|
||||
:timeout="ROUTE_SUSPENSE_TIMEOUT_MS"
|
||||
@pending="onSuspensePending"
|
||||
@resolve="onSuspenseResolve"
|
||||
>
|
||||
<component :is="Component" :key="getRouteViewKey(viewRoute)"></component>
|
||||
</Suspense>
|
||||
</KeepAlive>
|
||||
<Suspense @pending="onSuspensePending" @resolve="onSuspenseResolve">
|
||||
<component :is="Component"></component>
|
||||
</Suspense>
|
||||
</template>
|
||||
</RouterView>
|
||||
</div>
|
||||
|
||||
@@ -1,28 +1,32 @@
|
||||
<script setup>
|
||||
import { WrenchIcon, XIcon } from '@modrinth/assets'
|
||||
import { XIcon } from '@modrinth/assets'
|
||||
import {
|
||||
Accordion,
|
||||
ButtonStyled,
|
||||
Checkbox,
|
||||
commonMessages,
|
||||
defineMessages,
|
||||
FileTreeSelect,
|
||||
injectNotificationManager,
|
||||
NewModal,
|
||||
StyledInput,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { save } from '@tauri-apps/plugin-dialog'
|
||||
import { readDir, stat } from '@tauri-apps/plugin-fs'
|
||||
import { ref } from 'vue'
|
||||
|
||||
import { PackageIcon, VersionIcon } from '@/assets/icons'
|
||||
import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue'
|
||||
import { export_instance_mrpack, get_pack_export_candidates } from '@/helpers/instance'
|
||||
import { PackageIcon } from '@/assets/icons'
|
||||
import {
|
||||
export_instance_mrpack,
|
||||
get_full_path,
|
||||
get_pack_export_candidates,
|
||||
} from '@/helpers/instance'
|
||||
|
||||
const { handleError } = injectNotificationManager()
|
||||
const { formatMessage } = useVIntl()
|
||||
|
||||
const messages = defineMessages({
|
||||
header: { id: 'app.export-modal.header', defaultMessage: 'Export modpack' },
|
||||
modpackNameLabel: { id: 'app.export-modal.modpack-name-label', defaultMessage: 'Modpack Name' },
|
||||
modpackNameLabel: { id: 'app.export-modal.modpack-name-label', defaultMessage: 'Modpack name' },
|
||||
modpackNamePlaceholder: {
|
||||
id: 'app.export-modal.modpack-name-placeholder',
|
||||
defaultMessage: 'Modpack name',
|
||||
@@ -39,15 +43,7 @@ const messages = defineMessages({
|
||||
id: 'app.export-modal.description-placeholder',
|
||||
defaultMessage: 'Enter modpack description...',
|
||||
},
|
||||
selectFilesLabel: {
|
||||
id: 'app.export-modal.select-files-label',
|
||||
defaultMessage: 'Configure which files are included in this export',
|
||||
},
|
||||
exportButton: { id: 'app.export-modal.export-button', defaultMessage: 'Export' },
|
||||
includeFile: {
|
||||
id: 'app.export-modal.include-file-accessibility-label',
|
||||
defaultMessage: 'Include "{file}"?',
|
||||
},
|
||||
})
|
||||
|
||||
const props = defineProps({
|
||||
@@ -59,8 +55,9 @@ const props = defineProps({
|
||||
|
||||
defineExpose({
|
||||
show: () => {
|
||||
resetExportState()
|
||||
exportModal.value.show()
|
||||
initFiles()
|
||||
void initFiles().catch(handleError)
|
||||
},
|
||||
})
|
||||
|
||||
@@ -69,62 +66,33 @@ const nameInput = ref(props.instance.name)
|
||||
const exportDescription = ref('')
|
||||
const versionInput = ref('1.0.0')
|
||||
const files = ref([])
|
||||
const folders = ref([])
|
||||
const selectedFilePaths = ref([])
|
||||
const fileTreeKey = ref(0)
|
||||
const filesLoadId = ref(0)
|
||||
const instanceRoot = ref('')
|
||||
const loadedDirectories = ref(new Set())
|
||||
|
||||
const initFiles = async () => {
|
||||
const newFolders = new Map()
|
||||
const sep = '/'
|
||||
files.value = []
|
||||
await get_pack_export_candidates(props.instance.id).then((filePaths) =>
|
||||
filePaths
|
||||
.map((folder) => ({
|
||||
path: folder,
|
||||
name: folder.split(sep).pop(),
|
||||
selected:
|
||||
folder.startsWith('mods') ||
|
||||
folder.startsWith('datapacks') ||
|
||||
folder.startsWith('resourcepacks') ||
|
||||
folder.startsWith('shaderpacks') ||
|
||||
folder.startsWith('config'),
|
||||
disabled:
|
||||
folder === 'profile.json' ||
|
||||
folder.startsWith('modrinth_logs') ||
|
||||
folder.startsWith('.fabric') ||
|
||||
folder.startsWith('__MACOSX'),
|
||||
}))
|
||||
.forEach((pathData) => {
|
||||
const parent = pathData.path.split(sep).slice(0, -1).join(sep)
|
||||
if (parent !== '') {
|
||||
if (newFolders.has(parent)) {
|
||||
newFolders.get(parent).push(pathData)
|
||||
} else {
|
||||
newFolders.set(parent, [pathData])
|
||||
}
|
||||
} else {
|
||||
files.value.push(pathData)
|
||||
}
|
||||
}),
|
||||
)
|
||||
folders.value = [...newFolders.entries()].map(([name, value]) => [
|
||||
{
|
||||
name,
|
||||
showingMore: false,
|
||||
},
|
||||
value,
|
||||
async function initFiles() {
|
||||
const loadId = ++filesLoadId.value
|
||||
const [filePaths, root] = await Promise.all([
|
||||
get_pack_export_candidates(props.instance.id),
|
||||
get_full_path(props.instance.id),
|
||||
])
|
||||
if (loadId !== filesLoadId.value) return
|
||||
|
||||
instanceRoot.value = root
|
||||
const exportCandidates = await Promise.all(
|
||||
filePaths.map((path) => buildExportCandidateItem(root, path)),
|
||||
)
|
||||
if (loadId !== filesLoadId.value) return
|
||||
|
||||
files.value = exportCandidates
|
||||
selectedFilePaths.value = files.value
|
||||
.filter((file) => !file.disabled && isDefaultSelectedExportCandidate(file.path))
|
||||
.map((file) => file.path)
|
||||
}
|
||||
|
||||
await initFiles()
|
||||
|
||||
const exportPack = async () => {
|
||||
const filesToExport = files.value.filter((file) => file.selected).map((file) => file.path)
|
||||
folders.value.forEach((args) => {
|
||||
args[1].forEach((child) => {
|
||||
if (child.selected) {
|
||||
filesToExport.push(child.path)
|
||||
}
|
||||
})
|
||||
})
|
||||
const outputPath = await save({
|
||||
defaultPath: `${nameInput.value} ${versionInput.value}.mrpack`,
|
||||
filters: [
|
||||
@@ -139,7 +107,7 @@ const exportPack = async () => {
|
||||
export_instance_mrpack(
|
||||
props.instance.id,
|
||||
outputPath,
|
||||
filesToExport,
|
||||
selectedFilePaths.value,
|
||||
versionInput.value,
|
||||
exportDescription.value,
|
||||
nameInput.value,
|
||||
@@ -147,94 +115,176 @@ const exportPack = async () => {
|
||||
exportModal.value.hide()
|
||||
}
|
||||
}
|
||||
|
||||
function resetExportState() {
|
||||
nameInput.value = props.instance.name
|
||||
exportDescription.value = ''
|
||||
versionInput.value = '1.0.0'
|
||||
files.value = []
|
||||
selectedFilePaths.value = []
|
||||
fileTreeKey.value += 1
|
||||
instanceRoot.value = ''
|
||||
loadedDirectories.value = new Set()
|
||||
}
|
||||
|
||||
async function loadExportDirectory(path) {
|
||||
if (!path || !instanceRoot.value || loadedDirectories.value.has(path)) return
|
||||
|
||||
const loadId = filesLoadId.value
|
||||
loadedDirectories.value.add(path)
|
||||
|
||||
try {
|
||||
const entries = await readDir(`${instanceRoot.value}/${path}`)
|
||||
const childItems = await Promise.all(
|
||||
entries.map((entry) => buildExportDirectoryChildItem(instanceRoot.value, path, entry)),
|
||||
)
|
||||
if (loadId !== filesLoadId.value) return
|
||||
|
||||
appendExportItems(childItems)
|
||||
} catch {
|
||||
loadedDirectories.value.delete(path)
|
||||
}
|
||||
}
|
||||
|
||||
async function buildExportCandidateItem(instanceRoot, path) {
|
||||
try {
|
||||
const entries = await readDir(`${instanceRoot}/${path}`)
|
||||
const metadata = await getExportCandidateMetadata(instanceRoot, path)
|
||||
return {
|
||||
path,
|
||||
type: 'directory',
|
||||
disabled: isExportCandidateDisabled(path),
|
||||
modified: metadata.modified,
|
||||
count: entries.length,
|
||||
}
|
||||
} catch {
|
||||
return buildExportFileItem(instanceRoot, path)
|
||||
}
|
||||
}
|
||||
|
||||
async function buildExportDirectoryChildItem(instanceRoot, parentPath, entry) {
|
||||
const path = `${parentPath}/${entry.name}`
|
||||
if (entry.isDirectory) {
|
||||
const metadata = await getExportCandidateMetadata(instanceRoot, path)
|
||||
return {
|
||||
path,
|
||||
type: 'directory',
|
||||
disabled: isExportCandidateDisabled(path),
|
||||
modified: metadata.modified,
|
||||
}
|
||||
}
|
||||
|
||||
return buildExportFileItem(instanceRoot, path)
|
||||
}
|
||||
|
||||
async function buildExportFileItem(instanceRoot, path) {
|
||||
const metadata = await getExportCandidateMetadata(instanceRoot, path)
|
||||
return {
|
||||
path,
|
||||
type: 'file',
|
||||
disabled: isExportCandidateDisabled(path),
|
||||
size: metadata.size,
|
||||
modified: metadata.modified,
|
||||
}
|
||||
}
|
||||
|
||||
function appendExportItems(items) {
|
||||
const nextFiles = new Map(files.value.map((file) => [normalizeExportPath(file.path), file]))
|
||||
for (const item of items) {
|
||||
nextFiles.set(normalizeExportPath(item.path), item)
|
||||
}
|
||||
files.value = [...nextFiles.values()]
|
||||
}
|
||||
|
||||
async function getExportCandidateMetadata(instanceRoot, path) {
|
||||
try {
|
||||
const metadata = await stat(`${instanceRoot}/${path}`)
|
||||
return {
|
||||
size: metadata.size,
|
||||
modified: metadata.mtime ? Math.floor(metadata.mtime.getTime() / 1000) : undefined,
|
||||
}
|
||||
} catch {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeExportPath(path) {
|
||||
return path.replaceAll('\\', '/').split('/').filter(Boolean).join('/')
|
||||
}
|
||||
|
||||
function isDefaultSelectedExportCandidate(path) {
|
||||
return (
|
||||
path.startsWith('mods') ||
|
||||
path.startsWith('datapacks') ||
|
||||
path.startsWith('resourcepacks') ||
|
||||
path.startsWith('shaderpacks') ||
|
||||
path.startsWith('config')
|
||||
)
|
||||
}
|
||||
|
||||
function isExportCandidateDisabled(path) {
|
||||
return (
|
||||
path === 'profile.json' ||
|
||||
path.startsWith('modrinth_logs') ||
|
||||
path.startsWith('.fabric') ||
|
||||
path.startsWith('__MACOSX')
|
||||
)
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ModalWrapper ref="exportModal" :header="formatMessage(messages.header)">
|
||||
<div class="flex flex-col gap-4 w-[40rem]">
|
||||
<NewModal
|
||||
ref="exportModal"
|
||||
:header="formatMessage(messages.header)"
|
||||
scrollable
|
||||
width="46rem"
|
||||
max-width="calc(100vw - 2rem)"
|
||||
>
|
||||
<div class="flex flex-col gap-4">
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div class="labeled_input">
|
||||
<p>{{ formatMessage(messages.modpackNameLabel) }}</p>
|
||||
<div class="labeled_input w-full">
|
||||
<p class="text-contrast font-semibold">{{ formatMessage(messages.modpackNameLabel) }}</p>
|
||||
<StyledInput
|
||||
v-model="nameInput"
|
||||
:icon="PackageIcon"
|
||||
type="text"
|
||||
:placeholder="formatMessage(messages.modpackNamePlaceholder)"
|
||||
clearable
|
||||
wrapper-class="w-full"
|
||||
/>
|
||||
</div>
|
||||
<div class="labeled_input">
|
||||
<p>{{ formatMessage(messages.versionNumberLabel) }}</p>
|
||||
<div class="labeled_input w-full">
|
||||
<p class="text-contrast font-semibold">
|
||||
{{ formatMessage(messages.versionNumberLabel) }}
|
||||
</p>
|
||||
<StyledInput
|
||||
v-model="versionInput"
|
||||
:icon="VersionIcon"
|
||||
type="text"
|
||||
:placeholder="formatMessage(messages.versionNumberPlaceholder)"
|
||||
clearable
|
||||
wrapper-class="w-full"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col gap-2">
|
||||
<p class="m-0">{{ formatMessage(commonMessages.descriptionLabel) }}</p>
|
||||
<div class="flex flex-col gap-2 min-w-0">
|
||||
<p class="m-0 text-contrast font-semibold">
|
||||
{{ formatMessage(commonMessages.descriptionLabel) }}
|
||||
</p>
|
||||
<StyledInput
|
||||
v-model="exportDescription"
|
||||
multiline
|
||||
:placeholder="formatMessage(messages.descriptionPlaceholder)"
|
||||
wrapper-class="w-full"
|
||||
/>
|
||||
</div>
|
||||
<Accordion
|
||||
class="w-full bg-surface-4 border border-solid border-surface-5 rounded-2xl overflow-clip"
|
||||
button-class="p-4 w-full border-b border-solid border-b-surface-5 bg-surface-2 -mb-px hover:brightness-[--hover-brightness] group"
|
||||
>
|
||||
<template #title>
|
||||
<span class="flex items-center gap-3 text-contrast group-active:scale-[0.98]">
|
||||
<WrenchIcon aria-hidden="true" class="size-5 text-secondary" />
|
||||
Configure which files are included in this export
|
||||
</span>
|
||||
</template>
|
||||
<div class="flex flex-col [&>*:nth-child(even)]:bg-surface-3">
|
||||
<div v-for="[path, children] in folders" :key="path.name" class="flex flex-col">
|
||||
<Accordion
|
||||
class="flex flex-col"
|
||||
button-class="flex gap-3 pr-4 hover:bg-surface-5 group"
|
||||
>
|
||||
<template #title>
|
||||
<Checkbox
|
||||
:model-value="children.every((child) => child.selected)"
|
||||
:indeterminate="
|
||||
!children.every((child) => child.selected) &&
|
||||
children.some((child) => child.selected)
|
||||
"
|
||||
:description="formatMessage(messages.includeFile, { file: path.name })"
|
||||
class="pl-4 py-2"
|
||||
:disabled="children.every((x) => x.disabled)"
|
||||
@update:model-value="
|
||||
(newValue) => children.forEach((child) => (child.selected = newValue))
|
||||
"
|
||||
@click.stop
|
||||
/>
|
||||
<span class="ml-2 group-active:scale-95">{{ path.name }}/</span>
|
||||
</template>
|
||||
<div v-for="child in children" :key="child.path">
|
||||
<Checkbox
|
||||
v-model="child.selected"
|
||||
:label="child.name"
|
||||
class="w-full px-8 py-2 hover:bg-surface-4 text-primary"
|
||||
:disabled="child.disabled"
|
||||
/>
|
||||
</div>
|
||||
</Accordion>
|
||||
</div>
|
||||
<Checkbox
|
||||
v-for="file in files"
|
||||
:key="file.path"
|
||||
v-model="file.selected"
|
||||
:label="file.name"
|
||||
:disabled="file.disabled"
|
||||
class="w-full px-4 py-2 hover:bg-surface-4 text-primary"
|
||||
/>
|
||||
</div>
|
||||
</Accordion>
|
||||
<FileTreeSelect
|
||||
:key="fileTreeKey"
|
||||
v-model="selectedFilePaths"
|
||||
class="min-w-0"
|
||||
:items="files"
|
||||
@navigate="loadExportDirectory"
|
||||
/>
|
||||
</div>
|
||||
<template #actions>
|
||||
<div class="flex items-center justify-end gap-2">
|
||||
<ButtonStyled type="outlined">
|
||||
<button @click="exportModal.hide">
|
||||
@@ -249,6 +299,6 @@ const exportPack = async () => {
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
</div>
|
||||
</div>
|
||||
</ModalWrapper>
|
||||
</template>
|
||||
</NewModal>
|
||||
</template>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import { MailIcon, SendIcon, UserIcon, UserPlusIcon, XIcon } from '@modrinth/assets'
|
||||
import { MailIcon, SearchIcon, SendIcon, UserIcon, UserPlusIcon, XIcon } from '@modrinth/assets'
|
||||
import {
|
||||
Avatar,
|
||||
ButtonStyled,
|
||||
@@ -301,11 +301,12 @@ const messages = defineMessages({
|
||||
</ButtonStyled>
|
||||
<StyledInput
|
||||
v-model="search"
|
||||
:icon="SearchIcon"
|
||||
type="text"
|
||||
:placeholder="formatMessage(messages.searchFriends)"
|
||||
clearable
|
||||
variant="outlined"
|
||||
wrapper-class="flex-1"
|
||||
input-class="!bg-transparent !border !border-solid !border-button-bg !text-primary !placeholder:text-primary"
|
||||
wrapper-class="flex-1 [&>svg]:!text-primary [&>svg]:!opacity-100"
|
||||
@keyup.esc="search = ''"
|
||||
/>
|
||||
</template>
|
||||
|
||||
@@ -8,18 +8,13 @@ import type { ComputedRef, Ref } from 'vue'
|
||||
import { onUnmounted, ref, shallowRef } from 'vue'
|
||||
import type { Router } from 'vue-router'
|
||||
|
||||
import {
|
||||
fetchCachedServerStatus,
|
||||
getFreshCachedServerStatus,
|
||||
} from '@/composables/instances/use-server-status-query'
|
||||
import { process_listener } from '@/helpers/events'
|
||||
import { kill, list as listInstances } from '@/helpers/instance'
|
||||
import { get_by_instance_id } from '@/helpers/process'
|
||||
import type { GameInstance } from '@/helpers/types'
|
||||
import { add_server_to_instance, getServerAddress } from '@/helpers/worlds'
|
||||
import { add_server_to_instance, getServerAddress, getServerLatency } from '@/helpers/worlds'
|
||||
|
||||
interface BrowseServerInstance {
|
||||
id: string
|
||||
name: string
|
||||
path: string
|
||||
}
|
||||
@@ -73,10 +68,12 @@ export function useAppServerBrowse(options: UseAppServerBrowseOptions) {
|
||||
const queryClient = useQueryClient()
|
||||
const debugLog = useDebugLogger('BrowseServer')
|
||||
const serverPings = shallowRef<Record<string, number | undefined>>({})
|
||||
const serverPingCache = new Map<string, number | undefined>()
|
||||
const pendingServerPings = new Map<string, Promise<number | undefined>>()
|
||||
const runningServerProjects = ref<Record<string, string>>({})
|
||||
const lastServerHits = shallowRef<Labrinth.Search.v3.ResultSearchProject[]>([])
|
||||
const contextMenuRef = ref<ContextMenuHandle | null>(null)
|
||||
let serverPingsActive = true
|
||||
let serverPingCacheActive = true
|
||||
let unlistenProcesses: (() => void) | null = null
|
||||
|
||||
async function checkServerRunningStates(hits: Labrinth.Search.v3.ResultSearchProject[]) {
|
||||
@@ -149,26 +146,37 @@ export function useAppServerBrowse(options: UseAppServerBrowseOptions) {
|
||||
})
|
||||
const nextPings = { ...serverPings.value }
|
||||
for (const { hit, address } of pingsToFetch) {
|
||||
const cachedStatus = getFreshCachedServerStatus(queryClient, address)
|
||||
if (cachedStatus) {
|
||||
nextPings[hit.project_id] = cachedStatus.ping
|
||||
if (serverPingCache.has(address)) {
|
||||
nextPings[hit.project_id] = serverPingCache.get(address)
|
||||
}
|
||||
}
|
||||
serverPings.value = nextPings
|
||||
|
||||
await Promise.all(
|
||||
pingsToFetch.map(async ({ hit, address }) => {
|
||||
if (getFreshCachedServerStatus(queryClient, address)) return
|
||||
if (serverPingCache.has(address)) return
|
||||
|
||||
try {
|
||||
const status = await fetchCachedServerStatus(queryClient, address)
|
||||
if (!serverPingsActive) return
|
||||
serverPings.value = { ...serverPings.value, [hit.project_id]: status.ping }
|
||||
} catch (error) {
|
||||
console.error(`Failed to ping server ${address}:`, error)
|
||||
if (!serverPingsActive) return
|
||||
serverPings.value = { ...serverPings.value, [hit.project_id]: undefined }
|
||||
let pending = pendingServerPings.get(address)
|
||||
if (!pending) {
|
||||
pending = getServerLatency(address)
|
||||
.then((latency) => {
|
||||
if (serverPingCacheActive) serverPingCache.set(address, latency)
|
||||
return latency
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(`Failed to ping server ${address}:`, error)
|
||||
if (serverPingCacheActive) serverPingCache.set(address, undefined)
|
||||
return undefined
|
||||
})
|
||||
.finally(() => {
|
||||
pendingServerPings.delete(address)
|
||||
})
|
||||
pendingServerPings.set(address, pending)
|
||||
}
|
||||
|
||||
const latency = await pending
|
||||
if (!serverPingCacheActive) return
|
||||
serverPings.value = { ...serverPings.value, [hit.project_id]: latency }
|
||||
}),
|
||||
)
|
||||
}
|
||||
@@ -300,8 +308,10 @@ export function useAppServerBrowse(options: UseAppServerBrowseOptions) {
|
||||
.catch(options.handleError)
|
||||
|
||||
onUnmounted(() => {
|
||||
serverPingsActive = false
|
||||
serverPingCacheActive = false
|
||||
unlistenProcesses?.()
|
||||
serverPingCache.clear()
|
||||
pendingServerPings.clear()
|
||||
})
|
||||
|
||||
return {
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
import type { QueryClient } from '@tanstack/vue-query'
|
||||
|
||||
import {
|
||||
get_server_status,
|
||||
normalizeServerAddress,
|
||||
type ProtocolVersion,
|
||||
type ServerStatus,
|
||||
} from '@/helpers/worlds'
|
||||
|
||||
export const SERVER_STATUS_CACHE_MS = 10 * 60 * 1000
|
||||
|
||||
function getProtocolVersionKey(protocolVersion: ProtocolVersion | null) {
|
||||
if (!protocolVersion) return 'default'
|
||||
return `${protocolVersion.version}:${protocolVersion.legacy ? 'legacy' : 'modern'}`
|
||||
}
|
||||
|
||||
export function getServerStatusQueryKey(
|
||||
address: string,
|
||||
protocolVersion: ProtocolVersion | null = null,
|
||||
) {
|
||||
return [
|
||||
'minecraft-server-status',
|
||||
normalizeServerAddress(address) || address.trim().toLowerCase(),
|
||||
getProtocolVersionKey(protocolVersion),
|
||||
] as const
|
||||
}
|
||||
|
||||
export function getFreshCachedServerStatus(
|
||||
queryClient: QueryClient,
|
||||
address: string,
|
||||
protocolVersion: ProtocolVersion | null = null,
|
||||
) {
|
||||
const queryKey = getServerStatusQueryKey(address, protocolVersion)
|
||||
const updatedAt = queryClient.getQueryState(queryKey)?.dataUpdatedAt ?? 0
|
||||
if (!updatedAt || Date.now() - updatedAt >= SERVER_STATUS_CACHE_MS) return undefined
|
||||
return queryClient.getQueryData<ServerStatus>(queryKey)
|
||||
}
|
||||
|
||||
export async function fetchCachedServerStatus(
|
||||
queryClient: QueryClient,
|
||||
address: string,
|
||||
protocolVersion: ProtocolVersion | null = null,
|
||||
) {
|
||||
return await queryClient.fetchQuery({
|
||||
queryKey: getServerStatusQueryKey(address, protocolVersion),
|
||||
queryFn: () => get_server_status(address, protocolVersion),
|
||||
staleTime: SERVER_STATUS_CACHE_MS,
|
||||
gcTime: SERVER_STATUS_CACHE_MS,
|
||||
})
|
||||
}
|
||||
@@ -404,28 +404,35 @@ export async function refreshServerData(
|
||||
): Promise<void> {
|
||||
const refreshTime = Date.now()
|
||||
serverData.refreshing = true
|
||||
await get_server_status(address, protocolVersion)
|
||||
.then((status) => {
|
||||
if (serverData.lastSuccessfulRefresh && serverData.lastSuccessfulRefresh > refreshTime) {
|
||||
// Don't update if there was a more recent successful refresh
|
||||
return
|
||||
}
|
||||
serverData.lastSuccessfulRefresh = Date.now()
|
||||
serverData.status = status
|
||||
if (status.description) {
|
||||
serverData.rawMotd = status.description
|
||||
serverData.renderedMotd = autoToHTML(status.description)
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
serverData.refreshing = false
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(`Refreshing addr ${address}`, protocolVersion, err)
|
||||
if (!protocolVersion?.legacy) {
|
||||
refreshServerData(serverData, { version: 74, legacy: true }, address)
|
||||
}
|
||||
})
|
||||
try {
|
||||
const status = await get_server_status(address, protocolVersion)
|
||||
if (serverData.lastSuccessfulRefresh && serverData.lastSuccessfulRefresh > refreshTime) {
|
||||
// Don't update if there was a more recent successful refresh
|
||||
return
|
||||
}
|
||||
serverData.lastSuccessfulRefresh = Date.now()
|
||||
serverData.status = status
|
||||
if (status.description) {
|
||||
serverData.rawMotd = status.description
|
||||
serverData.renderedMotd = autoToHTML(status.description)
|
||||
} else {
|
||||
delete serverData.rawMotd
|
||||
delete serverData.renderedMotd
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(`Refreshing addr ${address}`, protocolVersion, err)
|
||||
if (!protocolVersion?.legacy) {
|
||||
await refreshServerData(serverData, { version: 74, legacy: true }, address)
|
||||
return
|
||||
}
|
||||
if (!serverData.lastSuccessfulRefresh || serverData.lastSuccessfulRefresh <= refreshTime) {
|
||||
delete serverData.status
|
||||
delete serverData.rawMotd
|
||||
delete serverData.renderedMotd
|
||||
}
|
||||
} finally {
|
||||
serverData.refreshing = false
|
||||
}
|
||||
}
|
||||
|
||||
export function refreshServers(
|
||||
@@ -444,7 +451,7 @@ export function refreshServers(
|
||||
}
|
||||
})
|
||||
|
||||
// noinspection ES6MissingAwait - handled with .then by refreshServerData already
|
||||
// noinspection ES6MissingAwait - handled by refreshServerData
|
||||
Object.keys(serverData).forEach((address) =>
|
||||
refreshServerData(serverData[address], protocolVersion, address),
|
||||
)
|
||||
|
||||
@@ -122,9 +122,6 @@
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "إسم حزمة التعديل"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "أختيار الملفات التي سيتم تصديرها"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "رقم الإصدار"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Skrýt více spuštěných instancí"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Zavřít"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Instalace selhala"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Instalace selhala kvůli zavření aplikace."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Instalace selhala kvůli chybě sítě."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Instalace selhala kvůli neznámé chybě."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Otevřít instanci"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Zkusit znovu"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Neznámá instance"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Instalace"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Nastavit jako primární instanci"
|
||||
},
|
||||
@@ -33,7 +60,7 @@
|
||||
"message": "Zastavit instanci"
|
||||
},
|
||||
"app.action-bar.update": {
|
||||
"message": "Aktualizace"
|
||||
"message": "Aktualizovat"
|
||||
},
|
||||
"app.action-bar.view-active-downloads": {
|
||||
"message": "Zobrazit probíhající stahování"
|
||||
@@ -101,8 +128,14 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Zobrazit odehraný čas"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Automaticky přeskočí nízko riziková potrvzení jako duplicitní instalace modpacků, běžné mazání obsahu, hromadné aktualizace, odpojování modpacků a výzvy k opravě. Nebezpečná upozornění se budou nadále zobrazovat."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Přeskočit nedůležitá upozornění"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Umožní přepínat zobrazení postranního panelu."
|
||||
"message": "Umožňí přepínat zobrazení postranního panelu."
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.title": {
|
||||
"message": "Přepnout postranní panel"
|
||||
@@ -141,10 +174,10 @@
|
||||
"message": "Zpět k instanci"
|
||||
},
|
||||
"app.browse.discover-content": {
|
||||
"message": "Objevovat obsah"
|
||||
"message": "Objevit obsah"
|
||||
},
|
||||
"app.browse.discover-servers": {
|
||||
"message": "Objevovat servery"
|
||||
"message": "Objevit servery"
|
||||
},
|
||||
"app.browse.hide-added-servers": {
|
||||
"message": "Skrýt již přidané servery"
|
||||
@@ -159,7 +192,7 @@
|
||||
"message": "Instalování"
|
||||
},
|
||||
"app.content-install.no-compatible-versions": {
|
||||
"message": "Žádná dostupná verze se neshoduje s verzí {compatibilityLabel}. Vyber verzi, abys ji i přesto nainstaloval/a. Závislosti nebudou automaticky nainstalovány."
|
||||
"message": "Žádné dostupné verze se neshodují s {compatibilityLabel}. Vyberte verzi, kterou chcete přesto nainstalovat. Závislosti nebudou nainstalovány automaticky."
|
||||
},
|
||||
"app.export-modal.description-placeholder": {
|
||||
"message": "Zadej popis modpacku..."
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Exportovat modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Zahrnout \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Název modpacku"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Název modpacku"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Nastavte, které soubory mají být do tohoto exportu zahrnuty"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Číslo verze"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Stahování obsahu"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Stahování Minecraftu"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Stahování pack souboru"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Rozbalování souborů overrides"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Dokončení instalace"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Příprava instance"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Příprava Javy"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Stahování Javy {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Rozbalování Javy {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Získávání Javy {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Připravení Javy {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Validace Javy {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Čtení pack manifestu"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Vyhodnocování loaderu"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Vyhodnocování Minecraftu"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Vyhodnocování obsahu"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Obnovování do předchozího stavu"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Spuštění loader procesů"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Všechna data tvé instance budou trvale smazána, včetně světů, konfigurací a veškerého nainstalovaného obsahu."
|
||||
},
|
||||
@@ -195,7 +276,7 @@
|
||||
"message": "Tato akce nemůže být vrácena"
|
||||
},
|
||||
"app.instance.confirm-delete.delete-button": {
|
||||
"message": "Odstranit instanci"
|
||||
"message": "Smazat instanci"
|
||||
},
|
||||
"app.instance.confirm-delete.header": {
|
||||
"message": "Odstranění instance"
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instance"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Stahování {current, number}/{total, number} projektů..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Dokončení aktualizace..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Vyhodnocování verzí..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "projekt"
|
||||
},
|
||||
@@ -236,8 +326,20 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Procházet servery"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Smazat svět"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Smazat svět"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Tento svět bude trvale smazán z této instance. Tuto akci nelze vrátit zpět."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Mazání {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Módovaný"
|
||||
"message": "Módované"
|
||||
},
|
||||
"app.instance.worlds.filter-offline": {
|
||||
"message": "Offline"
|
||||
@@ -249,10 +351,22 @@
|
||||
"message": "Vanilla"
|
||||
},
|
||||
"app.instance.worlds.no-worlds-description": {
|
||||
"message": "Přidej server nebo začni procházet"
|
||||
"message": "Začněte přidáním serveru nebo procházením obsahu"
|
||||
},
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Žádné servery nebo světy nebyly přidány"
|
||||
"message": "Nejsou přidané žádné servery nebo světy"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Odebrat server"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Odebrat server"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Tento server bude odebrán z vašeho seznamu serverů i ze seznamu serverů ve hře. Pokud znáte jeho adresu, můžete ho později znovu přidat."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Odebírání {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Hledat v {count} světech..."
|
||||
@@ -339,7 +453,7 @@
|
||||
"message": "Smazat skin"
|
||||
},
|
||||
"app.skins.delete-modal.description": {
|
||||
"message": "Tahle akce navždy smaže vybraný skin a nejde vrátit zpět."
|
||||
"message": "Tímto dojde k trvalému smazání vybreného skinu. Tuto akci nelze vrátit zpět."
|
||||
},
|
||||
"app.skins.delete-modal.title": {
|
||||
"message": "Opravdu chceš smazat tenhle skin?"
|
||||
@@ -468,19 +582,19 @@
|
||||
"message": "Nadšený Modrinth Bot"
|
||||
},
|
||||
"app.skins.sign-in.title": {
|
||||
"message": "Přihlas se prosím"
|
||||
"message": "Přihlaš se prosím"
|
||||
},
|
||||
"app.skins.title": {
|
||||
"message": "Výběr skinu"
|
||||
},
|
||||
"app.update-popup.body.download-complete": {
|
||||
"message": "Stahování aplikace Modrinth v{version} bylo dokončeno. Aktualizujte ji znovunačtením nebo se automaticky aktualizuje po zavření."
|
||||
"message": "Stahování Modrinth App v{version} bylo dokončeno. Aktualizujte ji znovunačtením nebo se automaticky aktualizuje po zavření."
|
||||
},
|
||||
"app.update-popup.body.linux": {
|
||||
"message": "Aplikace Modrinth v{version} je k dispozici. Aktualizujte ji pomocí svého správce balíčků, abyste získali nejnovější funkce a opravy!"
|
||||
"message": "Modrinth App v{version} je k dispozici. Aktualizujte ji pomocí svého správce balíčků, abyste získali nejnovější funkce a opravy!"
|
||||
},
|
||||
"app.update-popup.body.metered": {
|
||||
"message": "Aplikace Modrinth v{version} je nyní k dispozici! Protože jste v měřené síti, nebyla stažena automaticky."
|
||||
"message": "Modrinth App v{version} je nyní k dispozici! Protože jste v měřené síti, nebyla stažena automaticky."
|
||||
},
|
||||
"app.update-popup.changelog": {
|
||||
"message": "Seznam změn"
|
||||
@@ -693,13 +807,13 @@
|
||||
"message": "Jméno"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel": {
|
||||
"message": "Aktualizační kanál"
|
||||
"message": "Kanál aktualizací"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.alpha": {
|
||||
"message": "Alfa"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.alpha.description": {
|
||||
"message": "Vydané, beta a alfa verze se zobrazí jako dostupné aktualizace."
|
||||
"message": "Verze typu release, beta a alpha se budou zobrazovat jako dostupné aktualizace."
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.beta": {
|
||||
"message": "Beta"
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Kopírovat adresu"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Vytvořit záložku"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Nezobrazovat na domovské stránce"
|
||||
},
|
||||
|
||||
@@ -164,18 +164,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Eksporter modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Inkludere \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Modpack Navn"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Modpack navn"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Konfigurer hvilke filer inkludere i denne eksport"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Versionsnummer"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Weitere laufende Instanzen ausblenden"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Ignorieren"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Installation fehlgeschlagen"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Installation aufgrund des Schließens der App fehlgeschlagen."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Installation aufgrund eines Netzwerkfehlers fehlgeschlagen."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Installation aufgrund eines unbekannten Fehlers fehlgeschlagen."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Instanz öffnen"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Wiederholen"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Unbekannte Instanz"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Installationen"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Zur primären Instanz machen"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Spielzeit anzeigen"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Überspringt automatisch Bestätigungen mit geringem Risiko, wie z. B. die doppelte Installation von Modpacks, das Löschen normaler Inhalte, Massenaktualisierungen, das Trennen von Modpacks und Reparaturen. Warnungen bei gefährlichen Aktionen werden weiterhin angezeigt."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Nicht essenzielle Warnungen überspringen"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Ermöglicht das Umschalten der Seitenleiste."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Modpack exportieren"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "\"{file}\" einschliessen?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Modpaketname"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Modpaketname"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Konfiguriere, welche Dateien in diesem Export miteinbezogen werden"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Versionsnummer"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Lade Inhalte herunter"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Lade Minecraft herunter"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Lade Packdatei herunter"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Überschreibungen extrahieren"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Abschliessen"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Instanz präparieren"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Java präparieren"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Java {version} herunterladen"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Java {version} extrahieren"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Java {version} wird heruntergeladen"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Java {version} präparieren"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Java {version} validieren"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Paketmanifest wird gelesen"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Loader wird ermittelt"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Minecraft wird ermittelt"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Inhalte werden ermittelt"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Wird rückgängig gemacht"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Loader-Prozesse werden ausgeführt"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Alle Daten deiner Instanz werden permanent gelöscht, inlusive deiner Welten, Konfigurationen und allen installierten Inhalten."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instanz"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Lade {current, number}/{total, number} Projekte..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Update abschliessen..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Versionen werden ermittelt..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "Projekt"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Server durchsuchen"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Welt löschen"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Welt löschen"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Diese Welt wird permanent gelöscht von dieser Instanz, dies kann nicht rückgängig gemacht werden."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Lösche {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Modifiziert"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Keine Server oder Welten hinzugefügt"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Server entfernen"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Server entfernen"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Dieser Server wird aus deiner Serverliste und aus der Serverliste im Spiel entfernt. Du kannst ihn später wieder hinzufügen, wenn du die Adresse kennst."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Entferne {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Durchsuche {count} Welten..."
|
||||
},
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Adresse kopieren"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Shortcut erstellen"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Nicht auf Startseite anzeigen"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Weitere laufende Instanzen ausblenden"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Ausblenden"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Installation fehlgeschlagen"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Installation aufgrund des Schließens der App fehlgeschlagen."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Installation aufgrund eines Netzwerkfehlers fehlgeschlagen."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Installation aufgrund eines unbekannten Fehlers fehlgeschlagen."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Instanz öffnen"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Erneut versuchen"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Unbekannte Instanz"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Installationen"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Zur primären Instanz machen"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Spielzeit anzeigen"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Überspringt automatisch Bestätigungen mit geringem Risiko, wie z. B. die doppelte Installation von Modpacks, das Löschen normaler Inhalte, Massenaktualisierungen, das Trennen von Modpacks und Reparaturen. Warnungen bei gefährlichen Aktionen werden weiterhin angezeigt."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Unwichtige Warnungen überspringen"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Ermöglicht das Umschalten der Seitenleiste."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Modpack exportieren"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "\"{file}\" einschließen?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Modpackname"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Modpackname"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Konfiguriere, welche Dateien in diesen Export enthalten sind"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Versionsnummer"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Inhalte werden heruntergeladen"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Minecraft wird heruntergeladen"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Paketdatei wird herunterladen"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Überschreibungen werden extrahiert"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Wird finalisiert"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Instanz wird vorbereitet"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Java wird vorbereitet"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Java {version} wird heruntergeladen"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Java {version} wird extrahiert"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Java {version} wird heruntergeladen"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Java {version} wird vorbereitet"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Java {version} wird validiert"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Paketmanifest wird gelesen"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Loader wird ermittelt"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Minecraft wird ermittelt"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Inhalte werden ermittelt"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Wird rückgängig gemacht"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Loader-Prozesse werden ausgeführt"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Alle Daten deiner Instanz werden permanent gelöscht, einschließlich deiner Welten, Konfigurationen und allen installierten Inhalten."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instanz"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "{current, number}/{total, number} Projekte werden heruntergelanden..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Update wird fertiggestellt..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Versionen werden ermittelt..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "Projekt"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Server durchsuchen"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Welt löschen"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Welt löschen"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Die Welt wird permanent von der Instanz gelöscht. Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "{name} wird gelöscht"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Modifiziert"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Keine Server oder Welten hinzugefügt"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Server entfernen"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Server entfernen"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Dieser Server wird aus deiner Serverliste und aus der Serverliste im Spiel entfernt. Du kannst ihn später wieder hinzufügen, wenn du die Adresse kennst."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "{name} wird entfernt"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Durchsuche {count} Welten..."
|
||||
},
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Adresse kopieren"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Verknüpfung erstellen"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Nicht auf der Startseite anzeigen"
|
||||
},
|
||||
|
||||
@@ -191,18 +191,9 @@
|
||||
"app.browse.server.installing": {
|
||||
"message": "Installing"
|
||||
},
|
||||
"app.browse.server.world-fallback-name": {
|
||||
"message": "Instance"
|
||||
},
|
||||
"app.content-install.no-compatible-versions": {
|
||||
"message": "No available versions match {compatibilityLabel}. Select a version to install anyway. Dependencies will not be installed automatically."
|
||||
},
|
||||
"app.creation-modal.installing-modpack.description": {
|
||||
"message": "{fileName}"
|
||||
},
|
||||
"app.creation-modal.installing-modpack.title": {
|
||||
"message": "Installing modpack..."
|
||||
},
|
||||
"app.export-modal.description-placeholder": {
|
||||
"message": "Enter modpack description..."
|
||||
},
|
||||
@@ -212,18 +203,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Export modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Include \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Modpack Name"
|
||||
"message": "Modpack name"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Modpack name"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Configure which files are included in this export"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Version number"
|
||||
},
|
||||
@@ -431,9 +416,6 @@
|
||||
"app.project.install-context.install-content-to-instance": {
|
||||
"message": "Install content to instance"
|
||||
},
|
||||
"app.project.install-context.world-fallback-name": {
|
||||
"message": "Instance"
|
||||
},
|
||||
"app.settings.developer-mode-enabled": {
|
||||
"message": "Developer mode enabled."
|
||||
},
|
||||
@@ -554,6 +536,9 @@
|
||||
"app.skins.section.builders-and-biomes": {
|
||||
"message": "Builders & Biomes"
|
||||
},
|
||||
"app.skins.section.chaos-cubed": {
|
||||
"message": "Chaos Cubed"
|
||||
},
|
||||
"app.skins.section.chase-the-skies": {
|
||||
"message": "Chase the Skies"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Ocultar más instancias en ejecución"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Descartar"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "La instalación falló"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "La instalación falló porque la aplicación se cerró."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "La instalación falló debido a un error de red."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "La instalación falló debido a un error desconocido."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Abrir instancia"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Reintentar"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Instancia desconocida"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Instalaciones"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Hacer instancia principal"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Mostrar tiempo de juego"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Omite automáticamente las confirmaciones de bajo riesgo, como las instalaciones duplicadas de paquetes de mods, la eliminación de contenido normal, las actualizaciones masivas, la desvinculación de paquetes de mods y las solicitudes de reparación. Las advertencias peligrosas seguirán mostrándose."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Omitir advertencias que no sean esenciales"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Permite mostrar u ocultar la barra lateral."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Exportar modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "¿Incluir \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nombre del modpack"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nombre del modpack"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Configura que archivos incluir en esta exportación"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Número de la versión"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Descargando contenido"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Descargando Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Descargando el archivo del paquete"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Extracción de anulaciones"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Finalizando"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Preparando la instancia"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Preparando Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Descargando Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Descomprimiendo Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Obteniendo Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Preparando Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Validación de Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Leer el manifiesto del paquete"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Resolviendo el cargador"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Resolviendo Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Resolviendo el contenido"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Revertir"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Ejecutando los procesadores del cargador"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Todos los datos de tu instancia se eliminarán permanentemente, incluidos tus mundos, configuraciones y todo el contenido instalado."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instancia"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Descargando {current, number}/{total, number} proyectos..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Finalizando la actualización..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Resolviendo versiones..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "proyecto"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Explorar servidores"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Eliminar mundo"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Eliminar mundo"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Este mundo se eliminará de forma permanente de esta instancia. Esta acción no se puede deshacer."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Eliminando {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Con mods"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "No hay servidores ni mundos añadidos"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Eliminar servidor"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Eliminar servidor"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Este servidor se eliminará de tu lista de servidores y de la lista de servidores del juego. Puedes volver a agregarlo más adelante si conoces la dirección."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Se está eliminando {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Buscar en {count} mundos..."
|
||||
},
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Copiar dirección"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Crear un acceso directo"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "No mostrar en la página de inicio"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,18 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Ocultar más instancias en ejecución"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Descartar"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "La instalación falló"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "La instalación falló porque la aplicación se cerró."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "La instalación falló debido a un error de red."
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Establecer como instancia principal"
|
||||
},
|
||||
@@ -170,18 +182,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Exportar modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "¿Incluir \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nombre del modpack"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nombre del modpack"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Configura que archivos se incluirán en esta instancia"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Número de versión"
|
||||
},
|
||||
|
||||
@@ -2,12 +2,42 @@
|
||||
"app.action-bar.downloading-java": {
|
||||
"message": "Ladataan Java-versiota {version}"
|
||||
},
|
||||
"app.action-bar.downloading-update": {
|
||||
"message": "Ladataan päivitystä"
|
||||
},
|
||||
"app.action-bar.downloads": {
|
||||
"message": "Lataukset"
|
||||
},
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Piilota enemmän käynnissä olevia instansseja"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Hylkää"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Asennus epäonnistui"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Asennus epäonnistui sovelluksen sulkeutumisen vuoksi."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Asennus epäonnistui verkkovirheen vuoksi."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Asennus epäonnistui tuntemattoman virheen vuoksi."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Avaa instanssi"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Yritä uudelleen"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Tuntematon instanssi"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Asennukset"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Aseta ensisijaiseksi instanssiksi"
|
||||
},
|
||||
@@ -20,12 +50,18 @@
|
||||
"app.action-bar.primary-instance": {
|
||||
"message": "Ensisijainen instanssi"
|
||||
},
|
||||
"app.action-bar.reload-to-update": {
|
||||
"message": "Lataa uudelleen päivittääksesi"
|
||||
},
|
||||
"app.action-bar.show-more-running-instances": {
|
||||
"message": "Näytä enemmän käynnissä olevia instansseja"
|
||||
},
|
||||
"app.action-bar.stop-instance": {
|
||||
"message": "Pysäytä instanssi"
|
||||
},
|
||||
"app.action-bar.update": {
|
||||
"message": "Päivitä"
|
||||
},
|
||||
"app.action-bar.view-active-downloads": {
|
||||
"message": "Näytä aktiiviset lataukset"
|
||||
},
|
||||
@@ -86,6 +122,18 @@
|
||||
"app.appearance-settings.select-option": {
|
||||
"message": "Valitse vaihtoehto"
|
||||
},
|
||||
"app.appearance-settings.show-play-time.description": {
|
||||
"message": "Näyttää, kuinka paljon aikaa olet käyttänyt instanssin pelaamiseen."
|
||||
},
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Näyttää peliaika"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Ohittaa automaattisesti vähäriskiset vahvistukset, kuten modpackien kaksoisasennukset, tavallisen sisällön poistamisen, massapäivitykset, modpackien linkityksen poistamisen ja korjauskehotteet. Vaaralliset varoitukset näytetään silti."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Ohita ei olennaiset varoitukset"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Laittaa päälle mahdollisuuden kytkeä sivupalkkia."
|
||||
},
|
||||
@@ -155,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Vie modipaketti"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Sisällytä \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Modipaketin nimi"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Modipaketin nimi"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Muuta mitkä tiedostot sisältyvät tähän vientiin"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Versio numero"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Ladataan sisältöä"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Ladataan Minecraftia"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Ladataan paketti tiedostoja"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Puretaan ohituksia"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Viimeistellään"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Valmistellaan instanssia"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Valmistellaan Javaa"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Ladataan Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Puretaan Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Haetaan Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Valmistellaan Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Tarkistetaan Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Luetaan paketin manifestia"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Ratkaistaan lataajaa"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Ratkaistaan Minecraftia"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Ratkaistaan sisältöä"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Palautetaan muutoksia"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Suoritetaan lataajan käsittelijöitä"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Kaikki sinun instanssisi data poistetaan pysyvästi, sisältäen maailmasi, konfiguraatiosi ja asennetun sisällön."
|
||||
},
|
||||
@@ -197,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instanssi"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Ladataan {current, number}/{total, number} projekteja..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Viimeistellään päivitystä..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Selvitetään versioita..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "projekti"
|
||||
},
|
||||
@@ -221,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Selaa palvelimia"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Poista maailma"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Poista maailma"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Tämä maailma poistetaan pysyvästi tästä instanssista. Tätä toimintoa ei voi kumota."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Poistetaan {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Modattu"
|
||||
},
|
||||
@@ -239,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Ei palvelimia tai maailmoja lisättynä"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Poista palvelin"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Poista palvelin"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Tämä palvelin poistetaan palvelinluettelostasi ja pelin sisäisestä palvelinluettelosta. Voit lisätä sen myöhemmin uudelleen, jos tiedät osoitteen."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Poistetaan {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Hae {count} maailmasta..."
|
||||
},
|
||||
@@ -311,15 +440,147 @@
|
||||
"app.settings.tabs.resource-management": {
|
||||
"message": "Resurssien hallinta"
|
||||
},
|
||||
"app.skins.add-button": {
|
||||
"message": "Lisää ulkoasu"
|
||||
},
|
||||
"app.skins.add-button.drag-and-drop": {
|
||||
"message": "Raahaa ja pudota"
|
||||
},
|
||||
"app.skins.apply-button": {
|
||||
"message": "Käytä"
|
||||
},
|
||||
"app.skins.delete-button": {
|
||||
"message": "Poista ulkoasu"
|
||||
},
|
||||
"app.skins.delete-modal.description": {
|
||||
"message": "Tämä poistaa valitun skinin pysyvästi. Tätä toimintoa ei voi kumota."
|
||||
},
|
||||
"app.skins.delete-modal.title": {
|
||||
"message": "Haluatko varmasti poistaa ulkoasun?"
|
||||
},
|
||||
"app.skins.dropped-file-error.text": {
|
||||
"message": "Tiedoston lukeminen epäonnistui."
|
||||
},
|
||||
"app.skins.dropped-file-error.title": {
|
||||
"message": "Virhe prosessoidessa tiedostoa"
|
||||
},
|
||||
"app.skins.edit-button": {
|
||||
"message": "Muokkaa ulkoasua"
|
||||
},
|
||||
"app.skins.modal.add-skin-button": {
|
||||
"message": "Lisää ulkoasu"
|
||||
},
|
||||
"app.skins.modal.add-title": {
|
||||
"message": "Lisätään ulkoasua"
|
||||
},
|
||||
"app.skins.modal.arm-style-section": {
|
||||
"message": "Käsien tyyli"
|
||||
},
|
||||
"app.skins.modal.arm-style-slim": {
|
||||
"message": "Ohut"
|
||||
},
|
||||
"app.skins.modal.arm-style-wide": {
|
||||
"message": "Paksu"
|
||||
},
|
||||
"app.skins.modal.cape-fallback-name": {
|
||||
"message": "Viitta"
|
||||
},
|
||||
"app.skins.modal.cape-section": {
|
||||
"message": "Viitta"
|
||||
},
|
||||
"app.skins.modal.edit-title": {
|
||||
"message": "Muokataan ulkoasua"
|
||||
},
|
||||
"app.skins.modal.make-edit-first-tooltip": {
|
||||
"message": "Tee muokkaus ulkoasuun ensin!"
|
||||
},
|
||||
"app.skins.modal.no-cape-tooltip": {
|
||||
"message": "Ei viittaa"
|
||||
},
|
||||
"app.skins.modal.none-cape-option": {
|
||||
"message": "Ei mitään"
|
||||
},
|
||||
"app.skins.modal.replace-texture-button": {
|
||||
"message": "Korvaa tekstuuri"
|
||||
},
|
||||
"app.skins.modal.save-skin-button": {
|
||||
"message": "Tallenna ulkoasu"
|
||||
},
|
||||
"app.skins.modal.saving-tooltip": {
|
||||
"message": "Tallennetaan..."
|
||||
},
|
||||
"app.skins.modal.texture-section": {
|
||||
"message": "Tekstuuri"
|
||||
},
|
||||
"app.skins.modal.upload-skin-first-tooltip": {
|
||||
"message": "Lataa ulkoasu ensin!"
|
||||
},
|
||||
"app.skins.preview.edit-button": {
|
||||
"message": "Muokkaa ulkoasua"
|
||||
},
|
||||
"app.skins.previewing-badge": {
|
||||
"message": "Esikatsellaan"
|
||||
},
|
||||
"app.skins.rate-limit.text": {
|
||||
"message": "Vaihdat ulkoasua liian usein. Mojangin palvelimet ovat estäneet uudet pyynnöt väliaikaisesti. Yritä hetken kuluttua uudelleen."
|
||||
},
|
||||
"app.skins.rate-limit.title": {
|
||||
"message": "Hidasta vähän!"
|
||||
},
|
||||
"app.skins.reorder-error.text": {
|
||||
"message": "Ulkoasujen järjestystä ei voitu tallentaa."
|
||||
},
|
||||
"app.skins.reorder-error.title": {
|
||||
"message": "Skinien järjestyksen muuttaminen epäonnistui"
|
||||
},
|
||||
"app.skins.section.builders-and-biomes": {
|
||||
"message": "Builders & Biomes"
|
||||
},
|
||||
"app.skins.section.chase-the-skies": {
|
||||
"message": "Chase the Skies"
|
||||
},
|
||||
"app.skins.section.default-skins": {
|
||||
"message": "Oletus ulkoasut"
|
||||
},
|
||||
"app.skins.section.minecon-earth-2017": {
|
||||
"message": "MINECON Earth 2017"
|
||||
},
|
||||
"app.skins.section.modrinth": {
|
||||
"message": "Modrinth"
|
||||
},
|
||||
"app.skins.section.modrinth-pride": {
|
||||
"message": "Modrinth Pride"
|
||||
},
|
||||
"app.skins.section.modrinth-pride.tooltip": {
|
||||
"message": "Sait nämä skinit lahjoittamalla Modrinthin Pride-keräykseen Pride-kuukauden aikana."
|
||||
},
|
||||
"app.skins.section.mounts-of-mayhem": {
|
||||
"message": "Sekasorron ratsut"
|
||||
},
|
||||
"app.skins.section.saved-skins": {
|
||||
"message": "Tallennetut ulkoasut"
|
||||
},
|
||||
"app.skins.section.striding-hero": {
|
||||
"message": "Striding Hero"
|
||||
},
|
||||
"app.skins.section.the-copper-age": {
|
||||
"message": "The Copper Age"
|
||||
},
|
||||
"app.skins.section.the-garden-awakens": {
|
||||
"message": "The Garden Awakens"
|
||||
},
|
||||
"app.skins.section.tiny-takeover": {
|
||||
"message": "Pienten vallankumous"
|
||||
},
|
||||
"app.skins.sign-in.button": {
|
||||
"message": "Kirjaudu sisään"
|
||||
},
|
||||
"app.skins.sign-in.description": {
|
||||
"message": "Kirjaudu Minecraft-tilillesi käyttääksesi Modrinth-sovelluksen ulkoasujen hallintaominaisuuksia."
|
||||
},
|
||||
"app.skins.sign-in.rinthbot-alt": {
|
||||
"message": "Innostunut Modrinth Botti"
|
||||
},
|
||||
"app.skins.sign-in.title": {
|
||||
"message": "Kirjaudu sisään"
|
||||
},
|
||||
@@ -545,15 +806,30 @@
|
||||
"instance.settings.tabs.general.name": {
|
||||
"message": "Nimi"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel": {
|
||||
"message": "Päivitys kanava"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.alpha": {
|
||||
"message": "Alfa"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.alpha.description": {
|
||||
"message": "Release-, beta- ja alpha-versiot näytetään saatavilla olevina päivityksinä."
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.beta": {
|
||||
"message": "Beta"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.beta.description": {
|
||||
"message": "Release- ja beta-versiot näytetään saatavilla olevina päivityksinä."
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.release": {
|
||||
"message": "Julkaisu"
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.release.description": {
|
||||
"message": "Vain release-versiot näytetään saatavilla olevina päivityksinä."
|
||||
},
|
||||
"instance.settings.tabs.general.update-channel.select": {
|
||||
"message": "Valitse päivitys kanava"
|
||||
},
|
||||
"instance.settings.tabs.hooks": {
|
||||
"message": "Aloitustoiminnot"
|
||||
},
|
||||
@@ -677,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Kopioi osoite"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Luo pikakuvake"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Älä näytä koti näkymässä"
|
||||
},
|
||||
|
||||
@@ -164,18 +164,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Iluwas ang modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Salihin ang \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Pangalan ng Modpack"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Pangalan ng modpack"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Isaayos kung anong mga file ang isasali sa pagluwas"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Numero ng bersiyon"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Masquer plus d'instances en exécution"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Rejeter"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Échec de l'installation"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Échec de l'installation dû à la fermeture de l'app."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Échec de l'installation dû à une erreur réseau."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Échec de l'installation dû à une erreur inconnue."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Ouvrir l'instance"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Réessayer"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Instance inconnue"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Installations"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Définir en tante qu'instance première"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Afficher le temps de jeu"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Ignore automatiquement les confirmations à faible risque, comme l'installation de modpacks en double, la suppression de contenu standard, les mises à jour groupées, la dissociation des modpacks et les demandes de réparation. Les avertissements concernant les actions dangereuses continueront d'être affichés."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Cacher les alertes non essentielles"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Permet d'ouvrir ou de fermer la barre latérale."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Exporter le modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Inclure « {file} » ?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nom du modpack"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nom du modpack"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Configurez quels fichiers sont inclus dans cette exportation"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Numéro de version"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Téléchargement du contenu"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Téléchargement de Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Téléchargement du fichier de pack"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Extraction des fichiers personnalisés"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Finalisation"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Préparation de l'instance"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Préparation de Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Téléchargement de Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Extraction de Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Récupération de Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Préparation de Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Validation de Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Lecture du manifeste du pack"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Résolution du loader"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Résolution de Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Résolution du contenu"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Annulation"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Exécution des processeurs du chargeur"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Toutes les données pour votre instance seront supprimées à jamais, y compris vos mondes, vos configurations, et le contenu installé."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instance"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Téléchargement de {current, number}/{total, number} projets..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Finalisation de la mise à jour..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Résolution des versions..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "projet"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Parcourir des serveurs"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Supprimer le monde"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Supprimer le monde"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Ce monde sera définitivement supprimé de cette instance. Cette action est irréversible."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Suppression de {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Moddé"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Aucun serveur ou monde ajoutés"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Enlever le serveur"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Enlever le serveur"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Ce serveur sera enlevé de votre liste de serveur et de la liste de serveur en jeu. Vous pourrez le rajouter plus tard si vous connaissez son adresse."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Retrait de {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Rechercher {count} mondes..."
|
||||
},
|
||||
@@ -836,6 +950,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Copier l'adresse"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Créer un raccourci"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Ne pas montrer dans l'Accueil"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "További futó példányok elrejtése"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Újra"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Ismeretlen profil"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Beállítás elsődleges példányként"
|
||||
},
|
||||
@@ -170,24 +176,21 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Modcsomag exportálása"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Tartalmaz „{file}” fájlokat?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "A modcsomag neve"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "A modcsomag neve"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Állítsd be, hogy mely fájlok kerüljenek bele az exportba"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Verziószám"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": ""
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Az profilodhoz tartozó összes adat véglegesen törlődik, beleértve a világokat, a beállításokat és az összes telepített tartalmat."
|
||||
},
|
||||
|
||||
@@ -170,18 +170,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Ekspor paket mod"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Sertakan \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nama Paket Mod"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nama paket mod"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Konfigurasikan berkas mana yang disertakan dalam pengeksporan ini"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Nomor versi"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Mostra meno istanze in esecuzione"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Ignora"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Installazione fallita"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Installazione fallita: l'app è stata chiusa."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Installazione fallita: errore di rete."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Installazione fallita: errore sconosciuto."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Apri istanza"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Riprova"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Istanza sconosciuta"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Installazioni"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Rendi primaria"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Mostra le ore di gioco"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Salta automaticamente le conferme a basso rischio, come l'installazione di pacchetti di mod duplicati, la normale eliminazione di contenuti, gli aggiornamenti simultanei, lo scollegare i pacchetti di mod e le richieste di riparazione. Le avvertenze verranno comunque mostrate."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Salta le conferme poco importanti"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Mostra o nascondi la barra laterale."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Esporta pacchetto"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Includere \"{file}\" nell'esportazione?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nome del pacchetto"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nome del pacchetto"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Seleziona i file da includere in questa esportazione"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Numero di versione"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Download dei contenuti"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Download di Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Download del pacchetto"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Estrazione degli override"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Finalizzazione"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Preparazione dell'istanza"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Preparazione di Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Download di Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Estrazione di Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Recupero di Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Preparazione di Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Validazione di Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Lettura del manifesto"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Risoluzione del loader"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Risoluzione di Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Risoluzione dei contenuti"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Tornando indietro"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Esecuzione dei processori del loader"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Tutti i dati della tua istanza verranno eliminati permanentemente, inclusi i tuoi mondi, configurazioni e tutti i contenuti installati."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Istanza"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "{current, number}/{total, number} progetti scaricati..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Finalizzando l'aggiornamento..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Risolvendo le versioni..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "progetto"
|
||||
},
|
||||
@@ -233,6 +323,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Esplora i server"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Elimina mondo"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Eliminare il mondo"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Questo mondo verrà eliminato permanentemente da questa istanza. Questa azione non può essere annullata."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Eliminare {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Moddato"
|
||||
},
|
||||
@@ -251,6 +353,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Nessun server o mondo aggiunto"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Rimuovi server"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Rimuovere il server"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Questo server verrà rimosso dalla tua lista di server nell'app e nel gioco. Potrai aggiungerlo nuovamente se conosci l'indirizzo."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Rimuovere {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Cerca tra {count} mondi..."
|
||||
},
|
||||
@@ -836,6 +950,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Copia indirizzo"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Crea collegamento"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Non mostrare nella home"
|
||||
},
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
"message": "マントなし"
|
||||
},
|
||||
"app.skins.modal.replace-texture-button": {
|
||||
"message": "置きかえる"
|
||||
"message": "アップロード"
|
||||
},
|
||||
"app.skins.modal.texture-section": {
|
||||
"message": "テクスチャ"
|
||||
|
||||
@@ -164,18 +164,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "모드팩 내보내기"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "\"{file}\"(을)를 포함할까요?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "모드팩 이름"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "모드팩 이름"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "내보내기에 어느 파일이 포함될지 구성"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "버전 구분"
|
||||
},
|
||||
|
||||
@@ -155,18 +155,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Eksport pek mod"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Sertakan \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nama Pek Mod"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nama pek mod"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Konfigurasikan fail yang disertakan dalam eksport ini"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Nombor versi"
|
||||
},
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"message": "Stop instantie"
|
||||
},
|
||||
"app.action-bar.update": {
|
||||
"message": "Updaten"
|
||||
"message": "Bijwerken"
|
||||
},
|
||||
"app.action-bar.view-active-downloads": {
|
||||
"message": "Bekijk actieve downloads"
|
||||
@@ -60,7 +60,7 @@
|
||||
"message": "Wijzig de pagina waarop de launcher opent."
|
||||
},
|
||||
"app.appearance-settings.default-landing-page.home": {
|
||||
"message": "Home"
|
||||
"message": "Start"
|
||||
},
|
||||
"app.appearance-settings.default-landing-page.library": {
|
||||
"message": "Bibliotheek"
|
||||
@@ -170,18 +170,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Exporteer modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Betrek \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Modpack Naam"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Modpack naam"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Configureer welke bestanden bij deze export zijn betrokken"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Versie nummer"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Ukryj włączone instancje"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Odrzuć"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Instalacja nie powiodła się"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Instalacja nie powiodła się z powodu zamknięcia aplikacji."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Instalacja nie powiodła się z powodu problemów z połączeniem."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Instalacja nie powiodła się z nieznanych przyczyn."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Otwórz instancję"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Spróbuj ponownie"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Nieznana instancja"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Instalacje"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Ustaw jako główną instancję"
|
||||
},
|
||||
@@ -51,7 +78,7 @@
|
||||
"message": "Zaawansowane renderowanie"
|
||||
},
|
||||
"app.appearance-settings.color-theme.description": {
|
||||
"message": "Wybierz preferowany motyw w Modrinth App."
|
||||
"message": "Wybierz preferowany motyw w Modrinth app."
|
||||
},
|
||||
"app.appearance-settings.color-theme.title": {
|
||||
"message": "Motyw"
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Pokaż czas gry"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Automatycznie pomija mało znaczące potwierdzenia takie jak duplikaty instalacji paczek modów, usuwanie zwykłej zawartości, masowe aktualizacje, odłączanie paczek modów i naprawianie. Ostrzeżenia o potencjalnie niebezpiecznych akcjach będą nadal pokazywane."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Pomiń mało znaczące ostrzeżenia"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Umożliwia przełączenie paska bocznego."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Eksportuj paczkę modów"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Dołączyć \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nazwa paczki modów"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nazwa paczki modów"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Skonfiguruje jakie pliki zostaną załączone w tym eksporcie"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Numer wersji"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Pobieranie zawartości"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Pobieranie Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Pobieranie pliku paczki"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Wyodrębnianie nadpisań"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Finalizowanie"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Przygotowywanie instancji"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Przygotowywanie środowiska Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Pobieranie Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Wypakowywanie Javy {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Pobieranie Javy {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Przygotowywanie Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Sprawdzanie Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Ustalanie manifestu paczki"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Ustalanie programu ładującego"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Ustalanie wersji Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Ustalanie treści"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Przywracanie"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Uruchamianie procesorów programu ładującego"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Wszystkie dane z Twojej instancji zostaną trwale usunięte, w tym Twoje światy, pliki konfiguracji i jakakolwiek dodana zawartość."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instalacja"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Pobieranie {current, number}/{total, number} projektów..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Kończenie aktualizacji..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Sprawdzanie wersji..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "projekt"
|
||||
},
|
||||
@@ -233,6 +323,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Szukaj serwerów"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Usuń świat"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Usuń świat"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Ten świat zostanie trwale usunięty z tej instancji. Tej akcji nie będzie można cofnąć."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Usuwanie {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Zmodowany"
|
||||
},
|
||||
@@ -251,6 +353,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Nie dodano żadnych światów ani serwerów"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Usuń serwer"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Usuń serwer"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Ten serwer zostanie trwale usunięty z tej instancji. Tej akcji nie będzie można cofnąć."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Usuwanie {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Szukaj wśród {count} światów..."
|
||||
},
|
||||
@@ -339,7 +453,7 @@
|
||||
"message": "To trwale usunie wybraną skórkę. Tej akcji nie można odwrócić."
|
||||
},
|
||||
"app.skins.delete-modal.title": {
|
||||
"message": "Czy na pewno chcesz usunąć tą skórkę?"
|
||||
"message": "Czy na pewno chcesz usunąć tę skórkę?"
|
||||
},
|
||||
"app.skins.dropped-file-error.text": {
|
||||
"message": "Nie udało się odczytać wybranego pliku."
|
||||
@@ -836,6 +950,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Kopiuj adres"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Utwórz skrót"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Nie pokazuj na stronie głównej"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Ocultar mais instâncias em execução"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Dispensar"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Instalação falha"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "A instalação falhou devido ao aplicativo ter fechado."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "A instalação falhou devido a um erro na rede."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "A instalação falhou devido a um erro desconhecido."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Abrir instância"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Tentar novamente"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Instância desconhecida"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Instalações"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Tornar instância principal"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Exibir tempo jogado"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Pula automaticamente as confirmações desnecessárias como duplica de instalação de pacotes de mods, exclusão de conteúdo normal, atualizações em massa, desvinculo de pacotes de mods e diálogos de reparo. Os avisos de perigo ainda serão exibidos."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Pular avisos desnecessários"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Permite alternar a barra lateral."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Exportar pacote de mods"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Incluir \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Nome do pacote de mods"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Nome do pacote de mods"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Configure quais arquivos serão incluídos na exportação"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Número da versão"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Instalando conteúdo"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Instalando Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Instalando arquivo de pacote"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Extraindo substitutos"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Finalizando"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Preparando instância"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Preparando Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Baixando Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Extraindo Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Obtendo Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Preparando Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Validando Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Lendo manifestação de pacote"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Resolvendo loader"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Resolvendo Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Resolvendo conteúdo"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Indo de volta"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Executando processadores de loader"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Todos os dados para sua instância serão excluídos permanentemente, incluindo seus mundos, configs e todo o conteúdo instalado."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instância"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Instalando {current, number}/{total, number} projeto(s)..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Finalizando atualização..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Resolvendo versões..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "projeto"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Explorar servidores"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Excluir mundo"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Excluir mundo"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Este mundo será permanentemente excluído desta instância. Esta ação não pode ser desfeita."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Excluindo {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Modificado"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Nenhum servidor ou mundo adicionado"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Remover servidor"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Remover servidor"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "O servidor será removido da lista de servidores e da lista de servidores no jogo. Você pode re-adicioná-lo depois se souber o endereço."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Removendo {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Buscar {count} mundos..."
|
||||
},
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Copiar endereço"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Criar atalho"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Não exibir na página inicial"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Скрыть другие активные сборки"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Закрыть"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Установка не удалась"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Установка не удалась из-за закрытия приложения."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Установка не удалась из-за сетевой ошибки."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Установка не удалась из-за неизвестной ошибки."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Открыть сборку"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Повторить"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Неизвестная сборка"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Установки"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Сделать основной сборкой"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Время игры"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Автоматически пропускает подтверждения с низким уровнем риска, такие как установка дубликатов сборок, обычное удаление контента, массовые обновления, отключение сборок и запросы на восстановление. Опасные предупреждения по-прежнему будут отображаться."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Пропустить несущественные предупреждения"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Показывать кнопку скрытия боковой панели."
|
||||
},
|
||||
@@ -170,24 +203,69 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Экспорт сборки"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Добавить «{file}» в экспорт?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Название сборки"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Название сборки"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Выберите файлы для экспорта"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Номер версии"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Скачивание контента"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Скачивание Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Скачивание файла сборки"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Извлечение переопределений"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Завершение"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Подготовка сборки"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Подготовка Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Скачивание Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Распаковка Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Получение Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Подготовка Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Проверка Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Чтение манифеста сборки"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Загрузка версий"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Загрузка контента"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Откат"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Запуск процессоров загрузчика"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Все данные сборки будут удалены навсегда, в том числе миры, настройки и весь установленный контент."
|
||||
},
|
||||
@@ -212,6 +290,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Сборка"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Скачивание {current, number}/{total, number} проектов..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Завершение обновления..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Загрузка версий..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "проект"
|
||||
},
|
||||
@@ -233,6 +320,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Найти серверы"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Удалить"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Удаление мира"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Этот мир будет удалён навсегда из этой сборки. Отменить это действие нельзя."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Удаление {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Модовые"
|
||||
},
|
||||
@@ -251,6 +350,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Нет серверов и миров"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Удалить"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Удаление сервера"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Этот сервер будет удалён из списка серверов, в том числе и в игре. Его можно вернуть, зная адрес."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Удаление {name}"
|
||||
},
|
||||
"app.modal.install-to-play.content-required": {
|
||||
"message": "Требуется дополнительный контент"
|
||||
},
|
||||
@@ -830,6 +941,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Копировать адрес"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Создать ярлык"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Не показывать на главной"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Neuspešna instalacija"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Neuspešna instalacija zbog zatvaranja aplikacije."
|
||||
},
|
||||
"app.auth-servers.unreachable.body": {
|
||||
"message": "Minecraft serveri za autentifikaciju su možda trenutno nedostupni. Molimo vas da proverite vašu internet vezu i pokušajte ponovo kasnije."
|
||||
},
|
||||
@@ -156,11 +162,14 @@
|
||||
"message": "Minecraft svet"
|
||||
},
|
||||
"instance.edit-world.title": {
|
||||
"message": "Izmeni svet"
|
||||
"message": "Promeni svet"
|
||||
},
|
||||
"instance.server-modal.placeholder-name": {
|
||||
"message": "Minecraft Server"
|
||||
},
|
||||
"instance.settings.tabs.general": {
|
||||
"message": "Generalno"
|
||||
},
|
||||
"instance.settings.tabs.general.deleting.button": {
|
||||
"message": "Brisanje..."
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Göm fler aktiva instanser"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Avvisa"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Installationen misslyckades"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Installationen misslyckades för att appen stängdes."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Installationen misslyckades av ett nätverksfel."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Installationen misslyckades med ett okänt fel."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Öppna instans"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Försök igen"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Okänd instans"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Installationer"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Gör till primärinstans"
|
||||
},
|
||||
@@ -24,7 +51,7 @@
|
||||
"message": "Primärinstans"
|
||||
},
|
||||
"app.action-bar.reload-to-update": {
|
||||
"message": "Ladda om för att uppdatera"
|
||||
"message": "Uppdatera (ladda om)"
|
||||
},
|
||||
"app.action-bar.show-more-running-instances": {
|
||||
"message": "Visa fler aktiva instanser"
|
||||
@@ -74,9 +101,15 @@
|
||||
"app.appearance-settings.hide-nametag.title": {
|
||||
"message": "Dölj namnskylt"
|
||||
},
|
||||
"app.appearance-settings.jump-back-into-worlds.description": {
|
||||
"message": "Inkluderar de senaste världarna i \"Hoppa tillbaka i världar\" på hemsidan."
|
||||
},
|
||||
"app.appearance-settings.jump-back-into-worlds.title": {
|
||||
"message": "Hoppa tillbaka i världar"
|
||||
},
|
||||
"app.appearance-settings.minimize-launcher.description": {
|
||||
"message": "Minimerar launchern när Minecraft startas."
|
||||
},
|
||||
"app.appearance-settings.minimize-launcher.title": {
|
||||
"message": "Minimera programstartare"
|
||||
},
|
||||
@@ -95,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Visa speltid"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Hoppar över bekräftelser med låg risk, såsom installation av dubbla modpaket, radering av vanligt innehåll, massuppdateringar, avlänkning av modpaket och reparationsmeddelanden. Varningar om farliga händelser visas fortfarande."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Hoppa över icke nödvändiga varningar"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Låter dig växla sidofältet."
|
||||
},
|
||||
@@ -146,6 +185,9 @@
|
||||
"app.browse.project-type.modpacks": {
|
||||
"message": "Modpaket"
|
||||
},
|
||||
"app.browse.server-instance-content-warning": {
|
||||
"message": "Att lägga till innehåll kan bryta kompatibiliteten när du ansluter dig till servern. Allt tillagt innehåll kommer att förloras när du uppdaterar serverinstansen."
|
||||
},
|
||||
"app.browse.server.installing": {
|
||||
"message": "Installerar"
|
||||
},
|
||||
@@ -161,24 +203,66 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Exportera modpaket"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Inkludera \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Modpaketets namn"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Modpaketets namn"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Konfigurera vilka filer som inkluderas i denna export"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Versionsnummer"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "Laddar ner innehåll"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Laddar ner Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Laddar ner pack fil"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Extraherar överskrivningar"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Avslutar"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Förbereder instans"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Förbereder Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Laddar ner Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Extraherar Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Hämtar Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Förbereder Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Bekräftar Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Läser pack information"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Laddar ner loadern"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Laddar ner Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "Laddar ner innehåll"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "All data från din instans kommer permanent raderas, däribland dina världar, konfigurationer samt allt installerat innehåll."
|
||||
},
|
||||
@@ -203,6 +287,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Instans"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "Laddar ner {current, number}/{total, number} projekt..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Slutför uppdatering..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Laddar versioner..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "projekt"
|
||||
},
|
||||
@@ -227,6 +320,15 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Utforska servrar"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Ta bort värld"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Ta bort värld"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "Raderar {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Moddad"
|
||||
},
|
||||
@@ -245,6 +347,15 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Inga servrar eller världar tillagda"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Ta bort server"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Ta bort server"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "Raderar {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "Sök {count} världar..."
|
||||
},
|
||||
@@ -287,6 +398,9 @@
|
||||
"app.project.install-button.already-installed": {
|
||||
"message": "Detta projekt är redan installerat"
|
||||
},
|
||||
"app.project.install-context.back-to-browse": {
|
||||
"message": "Tillbaka till upptäck"
|
||||
},
|
||||
"app.project.install-context.install-content-to-instance": {
|
||||
"message": "Installera innehåll till instans"
|
||||
},
|
||||
@@ -401,6 +515,12 @@
|
||||
"app.skins.rate-limit.title": {
|
||||
"message": "Sakta ner!"
|
||||
},
|
||||
"app.skins.reorder-error.text": {
|
||||
"message": "Ditt utseende kunde inte sparas."
|
||||
},
|
||||
"app.skins.section.builders-and-biomes": {
|
||||
"message": "Builders & Biomes"
|
||||
},
|
||||
"app.skins.section.chase-the-skies": {
|
||||
"message": "Chase the Skies"
|
||||
},
|
||||
@@ -425,6 +545,9 @@
|
||||
"app.skins.section.saved-skins": {
|
||||
"message": "Sparade utseenden"
|
||||
},
|
||||
"app.skins.section.striding-hero": {
|
||||
"message": "Striding Hero"
|
||||
},
|
||||
"app.skins.section.the-copper-age": {
|
||||
"message": "The Copper Age"
|
||||
},
|
||||
@@ -815,6 +938,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Kopiera adress"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Skapa genväg"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Visa inte på Startsidan"
|
||||
},
|
||||
|
||||
@@ -170,18 +170,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "ส่งออกแพ็กม็อด"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "รวมถึง \"{file}\" ใช่หรือไม่"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "ชื่อแพ็กม็อด"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "ชื่อแพ็กม็อด"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "กำหนดไฟล์ที่ต้องการจะส่งออก"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "หมายเลขเวอร์ชัน"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "Diğer çalışan kurulumları gizle"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "Reddet"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "Yükleme yapılamadı"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "Yükleme uygulama kapandığından yapılamadı."
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "Yükleme ağ hatasından dolayı yapılamadı."
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "Yükleme bilinmeyen bir hatadan yapılamadı."
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "Kurulumu aç"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "Yeniden Dene"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "Bilinmeyen kurulum"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "Yüklenenler"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "Birincil kurulum yap"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "Oynama Süresini Göster"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "Mükerrer mod paketi kurulumları, normal içerik silme, toplu güncellemeler, mod paketi bağlantısını kesme ve onarım uyarıları gibi düşük riskli onayları otomatik olarak atlar. Tehlikeli uyarılar gösterilmeye devam edecektir."
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "Gerekli olmayan uyarıları atla"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "Kenar çubuğunu ayarlama özelliğini aktifleştirir."
|
||||
},
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Mod paketini dışa aktar"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "\"{file}\" dahil mi?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Mod Paketi Adı"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Mod paketi adı"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Bu dışa aktarmaya hangi dosyaların dahil edileceğini yapılandırma"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Sürüm numarası"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "İçerik indiriliyor"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "Minecraft yükleniyor"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "Paket dosyaları yükleniyor"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "Geçersiz kılmalar ayıklanıyor"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "Tamamlanıyor"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "Kurulum hazırlanıyor"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "Java Hazırlanıyor"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "Java {version} İndiriliyor"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "Java {version} ayıklanıyor"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "Java {version} getiriliyor"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "Java {version} Hazırlanıyor"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "Java {version} doğrulanıyor"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "Paket manifesti okunuyor"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "Yükleyici çözümleniyor"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "Minecraft çözümleniyor"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "İçerik çözümleniyor"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "Değişiklikler geri alınıyor"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "Yükleyici işlemcileri çalıştırılıyor"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "Dünyalarınız, yapılandırmalarınız ve yüklü tüm içerikler ve tüm veriler kalıcı olarak silinecek."
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "Kurulum"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "{current, number}/{total, number} proje indiriliyor..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "Güncelleme tamamlanıyor..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "Sürümler çözümleniyor..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "proje"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "Sunucuları Keşfet"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "Dünya Sil"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "Dünyayı sil"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "Bu dünya, bu profilden kalıcı olarak silinecek. Bu işlem geri alınamaz."
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "{name} Siliniyor"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "Modlu"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "Eklenmiş sunucu veya dünya yok"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "Sunucuyu kaldır"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "Sunucuyu kaldır"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "Bu sunucu, sunucu listenizden ve oyun içi sunucu listesinden kaldırılacaktır. Adresini biliyorsanız daha sonra tekrar ekleyebilirsiniz."
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "{name} kaldırılıyor"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "{count} dünya ara..."
|
||||
},
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "Adresi kopyala"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "Kısayol yap"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "Ana sayfada gösterme"
|
||||
},
|
||||
|
||||
@@ -170,18 +170,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Експортувати збірку"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Уключити «{file}»?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Назва збірки"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Назва збірки"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Змініть файли, які додані до експорту"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Номер версії"
|
||||
},
|
||||
|
||||
@@ -170,18 +170,12 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "Xuất modpack"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "Bao gồm \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "Tên modpack"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "Tên modpack"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "Cấu hình các tệp nào được bao gồm trong quá trình xuất phiên bản này"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "Phiên bản"
|
||||
},
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "隐藏更多运行中的实例"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "忽略"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "安装失败"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "由于应用关闭,安装失败。"
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "由于网络错误,安装失败。"
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "由于未知错误,安装失败。"
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "打开实例"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "重试"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "未知的实例"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "安装"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "设为主实例"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "显示总游玩时间"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "自动跳过低风险确认,包括重复安装整合包、常规内容删除、批量更新、解除整合包关联及修复提示。危险警告仍会显示。"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "跳过非必要的警告"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "启用切换侧边栏的功能。"
|
||||
},
|
||||
@@ -108,7 +141,7 @@
|
||||
"message": "切换侧边栏"
|
||||
},
|
||||
"app.appearance-settings.unknown-pack-warning.description": {
|
||||
"message": "如果你尝试安装一个未托管在 Modrinth 上的 Modrinth 打包文件(.mrpack),我们会确保你在安装之前了解相关风险。"
|
||||
"message": "如果你尝试安装一个未托管在 Modrinth 上的 Modrinth 整合包文件(.mrpack),我们会确保你在安装之前了解相关风险。"
|
||||
},
|
||||
"app.appearance-settings.unknown-pack-warning.title": {
|
||||
"message": "安装未知整合包前提醒我"
|
||||
@@ -120,7 +153,7 @@
|
||||
"message": "无法连接到身份验证服务器"
|
||||
},
|
||||
"app.browse.add-servers-to-instance": {
|
||||
"message": "正在添加服务器到此实例"
|
||||
"message": "添加服务器到实例"
|
||||
},
|
||||
"app.browse.add-to-an-instance": {
|
||||
"message": "添加到实例"
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "导出整合包"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "包含 \"{file}\"?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "整合包名称"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "整合包名称"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "配置此导出中包含哪些文件"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "版本号"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "正在下载内容"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "正在下载 Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "正在下载包文件"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "提取覆盖项"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "完成"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "准备实例"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "正在准备 Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "正在下载 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "正在提取 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "正在获取 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "正在准备 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "正在校验 Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "正在读取整合包清单"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "正在解析加载器"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "正在解析 Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "正在解析内容"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "回滚"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "正在运行加载处理器"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "你实例的所有数据将被永久删除,包括你的世界、配置和所有已安装的内容。"
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "实例"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "正在下载 {current, number}/{total, number}个 项目……"
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "正在结束更新……"
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "正在解析版本……"
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "项目"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "浏览服务器"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "删除世界"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "删除世界"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "这个世界将会被永久删除,此操作无法撤销。"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "正在删除 {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "模组适配"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "未添加服务器或世界"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "删除服务器"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "删除服务器"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "该服务器将会被移出你的服务器列表,也包括游戏内的服务器列表。之后如果你记得地址,仍可将其添加回来。"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "正在删除 {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "搜索 {count} 个世界……"
|
||||
},
|
||||
@@ -651,7 +765,7 @@
|
||||
"message": "将从设备中永久删除该实例,包括所有存档、配置文件及已安装内容。此操作不可撤销,请谨慎操作。"
|
||||
},
|
||||
"instance.settings.tabs.general.deleting.button": {
|
||||
"message": "删除中..."
|
||||
"message": "删除中……"
|
||||
},
|
||||
"instance.settings.tabs.general.duplicate-button": {
|
||||
"message": "复制"
|
||||
@@ -732,7 +846,7 @@
|
||||
"message": "在游戏关闭后运行。"
|
||||
},
|
||||
"instance.settings.tabs.hooks.post-exit.enter": {
|
||||
"message": "输入退出后运行的命令…"
|
||||
"message": "输入退出后运行的命令……"
|
||||
},
|
||||
"instance.settings.tabs.hooks.pre-launch": {
|
||||
"message": "启动前"
|
||||
@@ -741,7 +855,7 @@
|
||||
"message": "在实例启动前运行。"
|
||||
},
|
||||
"instance.settings.tabs.hooks.pre-launch.enter": {
|
||||
"message": "输入启动前命令..."
|
||||
"message": "输入启动前命令……"
|
||||
},
|
||||
"instance.settings.tabs.hooks.title": {
|
||||
"message": "游戏启动钩子"
|
||||
@@ -753,7 +867,7 @@
|
||||
"message": "用于启动 Minecraft 的包装器命令。"
|
||||
},
|
||||
"instance.settings.tabs.hooks.wrapper.enter": {
|
||||
"message": "输入封装命令..."
|
||||
"message": "输入封装命令……"
|
||||
},
|
||||
"instance.settings.tabs.installation": {
|
||||
"message": "安装"
|
||||
@@ -819,7 +933,7 @@
|
||||
"message": "游戏启动时的窗口高度。"
|
||||
},
|
||||
"instance.settings.tabs.window.height.enter": {
|
||||
"message": "输入高度…"
|
||||
"message": "输入高度……"
|
||||
},
|
||||
"instance.settings.tabs.window.width": {
|
||||
"message": "宽度"
|
||||
@@ -828,7 +942,7 @@
|
||||
"message": "游戏启动时的窗口宽度。"
|
||||
},
|
||||
"instance.settings.tabs.window.width.enter": {
|
||||
"message": "输入宽度…"
|
||||
"message": "输入宽度……"
|
||||
},
|
||||
"instance.worlds.a_minecraft_server": {
|
||||
"message": "Minecraft 服务器"
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "复制地址"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "创建快照"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "在主界面隐藏"
|
||||
},
|
||||
@@ -927,7 +1044,7 @@
|
||||
"message": "仍然安装"
|
||||
},
|
||||
"unknown-pack-warning-modal.malware-statement": {
|
||||
"message": "恶意软件常常通过模组包文件在 Discord 等平台上分享而传播。"
|
||||
"message": "恶意软件常常通过整合包文件在 Discord 等平台上分享而传播。"
|
||||
},
|
||||
"unknown-pack-warning-modal.warning.body": {
|
||||
"message": "我们在 Modrinth 上找不到此文件。强烈建议你仅从可信来源安装文件。"
|
||||
|
||||
@@ -11,6 +11,33 @@
|
||||
"app.action-bar.hide-more-running-instances": {
|
||||
"message": "隱藏更多執行中的實例"
|
||||
},
|
||||
"app.action-bar.install.dismiss": {
|
||||
"message": "忽略"
|
||||
},
|
||||
"app.action-bar.install.failed": {
|
||||
"message": "無法安裝"
|
||||
},
|
||||
"app.action-bar.install.failed-app-closed": {
|
||||
"message": "由於應用程式關閉,無法安裝。"
|
||||
},
|
||||
"app.action-bar.install.failed-network": {
|
||||
"message": "由於網路錯誤,無法安裝。"
|
||||
},
|
||||
"app.action-bar.install.failed-unknown": {
|
||||
"message": "由於未知錯誤,無法安裝。"
|
||||
},
|
||||
"app.action-bar.install.open-instance": {
|
||||
"message": "開啟實例"
|
||||
},
|
||||
"app.action-bar.install.retry": {
|
||||
"message": "重試"
|
||||
},
|
||||
"app.action-bar.install.unknown-instance": {
|
||||
"message": "未知的實例"
|
||||
},
|
||||
"app.action-bar.installs": {
|
||||
"message": "安裝"
|
||||
},
|
||||
"app.action-bar.make-primary-instance": {
|
||||
"message": "設為主要實例"
|
||||
},
|
||||
@@ -101,6 +128,12 @@
|
||||
"app.appearance-settings.show-play-time.title": {
|
||||
"message": "顯示遊玩時數"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.description": {
|
||||
"message": "自動跳過低風險操作的確認提示,例如重複安裝模組包、常規內容刪除、批次更新、取消連結模組包以及修復提示。高風險警告仍會顯示。"
|
||||
},
|
||||
"app.appearance-settings.skip-non-essential-warnings.title": {
|
||||
"message": "跳過非必要的警告"
|
||||
},
|
||||
"app.appearance-settings.toggle-sidebar.description": {
|
||||
"message": "啟用切換側邊欄的功能。"
|
||||
},
|
||||
@@ -162,7 +195,7 @@
|
||||
"message": "沒有符合 {compatibilityLabel} 的可用版本。請選擇一個版本強制安裝。不會自動安裝相依模組。"
|
||||
},
|
||||
"app.export-modal.description-placeholder": {
|
||||
"message": "輸入模組包描述..."
|
||||
"message": "輸入模組包描述……"
|
||||
},
|
||||
"app.export-modal.export-button": {
|
||||
"message": "匯出"
|
||||
@@ -170,24 +203,72 @@
|
||||
"app.export-modal.header": {
|
||||
"message": "匯出模組包"
|
||||
},
|
||||
"app.export-modal.include-file-accessibility-label": {
|
||||
"message": "要包含「{file}」嗎?"
|
||||
},
|
||||
"app.export-modal.modpack-name-label": {
|
||||
"message": "模組包名稱"
|
||||
},
|
||||
"app.export-modal.modpack-name-placeholder": {
|
||||
"message": "模組包名稱"
|
||||
},
|
||||
"app.export-modal.select-files-label": {
|
||||
"message": "設定要包含在此匯出檔案中的檔案"
|
||||
},
|
||||
"app.export-modal.version-number-label": {
|
||||
"message": "版本號碼"
|
||||
},
|
||||
"app.export-modal.version-number-placeholder": {
|
||||
"message": "1.0.0"
|
||||
},
|
||||
"app.install.phase.downloading_content": {
|
||||
"message": "正在下載內容"
|
||||
},
|
||||
"app.install.phase.downloading_minecraft": {
|
||||
"message": "正在下載 Minecraft"
|
||||
},
|
||||
"app.install.phase.downloading_pack_file": {
|
||||
"message": "正在下載模組包檔案"
|
||||
},
|
||||
"app.install.phase.extracting_overrides": {
|
||||
"message": "正在解壓縮覆寫檔案"
|
||||
},
|
||||
"app.install.phase.finalizing": {
|
||||
"message": "即將完成"
|
||||
},
|
||||
"app.install.phase.preparing_instance": {
|
||||
"message": "正在準備實例"
|
||||
},
|
||||
"app.install.phase.preparing_java": {
|
||||
"message": "正在準備 Java"
|
||||
},
|
||||
"app.install.phase.preparing_java.downloading": {
|
||||
"message": "正在下載 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.extracting": {
|
||||
"message": "正在解壓縮 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.fetching-metadata": {
|
||||
"message": "正在擷取 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.resolving": {
|
||||
"message": "正在準備 Java {version}"
|
||||
},
|
||||
"app.install.phase.preparing_java.validating": {
|
||||
"message": "正在驗證 Java {version}"
|
||||
},
|
||||
"app.install.phase.reading_pack_manifest": {
|
||||
"message": "正在讀取模組包清單"
|
||||
},
|
||||
"app.install.phase.resolving_loader": {
|
||||
"message": "正在解析載入器"
|
||||
},
|
||||
"app.install.phase.resolving_minecraft": {
|
||||
"message": "正在解析 Minecraft"
|
||||
},
|
||||
"app.install.phase.resolving_pack": {
|
||||
"message": "正在解析內容"
|
||||
},
|
||||
"app.install.phase.rolling_back": {
|
||||
"message": "正在復原"
|
||||
},
|
||||
"app.install.phase.running_loader_processors": {
|
||||
"message": "正在執行載入器處理程式"
|
||||
},
|
||||
"app.instance.confirm-delete.admonition-body": {
|
||||
"message": "你實例中的所有資料將被永久刪除,包含你的世界、設定檔以及所有已安裝的內容。"
|
||||
},
|
||||
@@ -212,6 +293,15 @@
|
||||
"app.instance.modpack-already-installed.instance": {
|
||||
"message": "實例"
|
||||
},
|
||||
"app.instance.mods.bulk-update.downloading-projects": {
|
||||
"message": "正在下載專案 {current, number}/{total, number}..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.finishing": {
|
||||
"message": "正在結束更新..."
|
||||
},
|
||||
"app.instance.mods.bulk-update.resolving-versions": {
|
||||
"message": "正在解析版本..."
|
||||
},
|
||||
"app.instance.mods.content-type-project": {
|
||||
"message": "專案"
|
||||
},
|
||||
@@ -236,6 +326,18 @@
|
||||
"app.instance.worlds.browse-servers": {
|
||||
"message": "瀏覽伺服器"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.delete-button": {
|
||||
"message": "刪除世界"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.title": {
|
||||
"message": "刪除世界"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-body": {
|
||||
"message": "此世界將會被永久刪除,此操作無法復原。"
|
||||
},
|
||||
"app.instance.worlds.delete-world-modal.warning-header": {
|
||||
"message": "正在刪除 {name}"
|
||||
},
|
||||
"app.instance.worlds.filter-modded": {
|
||||
"message": "模組"
|
||||
},
|
||||
@@ -254,6 +356,18 @@
|
||||
"app.instance.worlds.no-worlds-heading": {
|
||||
"message": "未新增任何伺服器或世界"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.remove-button": {
|
||||
"message": "移除伺服器"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.title": {
|
||||
"message": "移除伺服器"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-body": {
|
||||
"message": "這個伺服器將從你的伺服器清單中移除。如果你記得伺服器位址,稍後可以將其重新新增回來。"
|
||||
},
|
||||
"app.instance.worlds.remove-server-modal.warning-header": {
|
||||
"message": "正在移除 {name}"
|
||||
},
|
||||
"app.instance.worlds.search-worlds-placeholder": {
|
||||
"message": "搜尋 {count} 個世界..."
|
||||
},
|
||||
@@ -839,6 +953,9 @@
|
||||
"instance.worlds.copy_address": {
|
||||
"message": "複製位址"
|
||||
},
|
||||
"instance.worlds.create_shortcut": {
|
||||
"message": "建立捷徑"
|
||||
},
|
||||
"instance.worlds.dont_show_on_home": {
|
||||
"message": "不要在首頁顯示"
|
||||
},
|
||||
|
||||
@@ -10,7 +10,6 @@ import {
|
||||
} from '@modrinth/assets'
|
||||
import type { BrowseInstallContentType, CardAction, ProjectType, Tags } from '@modrinth/ui'
|
||||
import {
|
||||
BrowseInstallHeader,
|
||||
BrowsePageLayout,
|
||||
BrowseSidebar,
|
||||
commonMessages,
|
||||
@@ -23,11 +22,8 @@ import {
|
||||
preferencesDiffer,
|
||||
provideBrowseManager,
|
||||
requestInstall,
|
||||
SelectedProjectsFloatingBar,
|
||||
stripServerRuntimeInstallFilters,
|
||||
stripServerRuntimeInstallOverrides,
|
||||
useBrowseSearch,
|
||||
useStickyObserver,
|
||||
useDebugLogger,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { useQueryClient } from '@tanstack/vue-query'
|
||||
@@ -62,26 +58,19 @@ import {
|
||||
import { useBreadcrumbs } from '@/store/breadcrumbs'
|
||||
import { useTheming } from '@/store/state'
|
||||
|
||||
defineOptions({
|
||||
name: 'Browse',
|
||||
})
|
||||
|
||||
const { handleError } = injectNotificationManager()
|
||||
const { formatMessage } = useVIntl()
|
||||
const { installingServerProjects, playServerProject, showAddServerToInstanceModal } =
|
||||
injectServerInstall()
|
||||
const { install: installVersion } = injectContentInstall()
|
||||
const queryClient = useQueryClient()
|
||||
const debugLog = useDebugLogger('Browse')
|
||||
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const themeStore = useTheming()
|
||||
const browseRouteActive = computed(() => route.path.startsWith('/browse/'))
|
||||
const serverSetupModalRef = ref<InstanceType<typeof CreationFlowModal> | null>(null)
|
||||
const serverInstallContent = createServerInstallContent({
|
||||
serverSetupModalRef,
|
||||
isRouteInContext: (targetRoute) => targetRoute.path.startsWith('/browse/'),
|
||||
})
|
||||
const serverInstallContent = createServerInstallContent({ serverSetupModalRef })
|
||||
provideServerInstallContent(serverInstallContent)
|
||||
const {
|
||||
serverIdQuery,
|
||||
@@ -91,10 +80,6 @@ const {
|
||||
isSetupServerContext,
|
||||
effectiveServerWorldId,
|
||||
serverContextServerData,
|
||||
serverContextWorldName,
|
||||
serverContextWorldGameVersion,
|
||||
serverContextWorldLoader,
|
||||
serverContextWorldLoaderVersion,
|
||||
serverContentProjectIds,
|
||||
queuedServerInstallProjectIds,
|
||||
queuedServerInstallCount,
|
||||
@@ -121,6 +106,8 @@ const {
|
||||
handleServerModpackFlowCreate,
|
||||
markServerProjectInstalled,
|
||||
} = serverInstallContent
|
||||
|
||||
debugLog('fetching tags (categories, loaders, gameVersions)')
|
||||
const [categories, loaders, availableGameVersions] = await Promise.all([
|
||||
get_categories()
|
||||
.catch(handleError)
|
||||
@@ -140,7 +127,6 @@ const tags: Ref<Tags> = computed(() => ({
|
||||
}))
|
||||
|
||||
type Instance = {
|
||||
id: string
|
||||
game_version: string
|
||||
loader: string
|
||||
path: string
|
||||
@@ -208,6 +194,7 @@ async function refreshInstalledProjectIds() {
|
||||
const serverProjectIds = worlds
|
||||
.filter((w) => w.type === 'server' && 'project_id' in w && w.project_id)
|
||||
.map((w) => (w as { project_id: string }).project_id)
|
||||
debugLog('installedServerProjectIds loaded', { count: serverProjectIds.length })
|
||||
installedProjectIds.value = serverProjectIds
|
||||
return
|
||||
}
|
||||
@@ -215,29 +202,45 @@ async function refreshInstalledProjectIds() {
|
||||
const ids = await getInstalledProjectIds(route.query.i as string).catch(handleError)
|
||||
if (!ids) return
|
||||
|
||||
debugLog('installedProjectIds loaded', { count: ids.length })
|
||||
installedProjectIds.value = ids
|
||||
}
|
||||
|
||||
async function initInstanceContext() {
|
||||
debugLog('initInstanceContext', {
|
||||
queryI: route.query.i,
|
||||
queryAi: route.query.ai,
|
||||
querySid: route.query.sid,
|
||||
queryWid: route.query.wid,
|
||||
queryFrom: route.query.from,
|
||||
})
|
||||
await initServerContext()
|
||||
|
||||
if (route.query.i) {
|
||||
instance.value = (await getInstance(route.query.i as string).catch(handleError)) ?? null
|
||||
debugLog('instance loaded', {
|
||||
name: instance.value?.name,
|
||||
loader: instance.value?.loader,
|
||||
gameVersion: instance.value?.game_version,
|
||||
})
|
||||
|
||||
await refreshInstalledProjectIds()
|
||||
|
||||
if (instance.value?.link?.project_id) {
|
||||
debugLog('checking linked project for server status', instance.value.link.project_id)
|
||||
const projectV3 = await get_project_v3(
|
||||
instance.value.link.project_id,
|
||||
'must_revalidate',
|
||||
).catch(handleError)
|
||||
if (projectV3?.minecraft_server != null) {
|
||||
debugLog('instance is a server instance')
|
||||
isServerInstance.value = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (route.query.ai && !(route.params.projectType === 'modpack')) {
|
||||
debugLog('setting instanceHideInstalled from query', route.query.ai)
|
||||
instanceHideInstalled.value = route.query.ai === 'true'
|
||||
}
|
||||
}
|
||||
@@ -288,7 +291,7 @@ function syncHiddenServerContentProjectIds() {
|
||||
watch(
|
||||
serverContentProjectIds,
|
||||
() => {
|
||||
if (!hiddenServerContentProjectIdsInitialized.value || serverHideInstalled.value) {
|
||||
if (!hiddenServerContentProjectIdsInitialized.value) {
|
||||
syncHiddenServerContentProjectIds()
|
||||
}
|
||||
},
|
||||
@@ -301,10 +304,10 @@ const serverContextFilters = computed(() => {
|
||||
const pt = projectType.value
|
||||
|
||||
if (pt !== 'modpack') {
|
||||
const gameVersion = serverContextWorldGameVersion.value
|
||||
const gameVersion = serverContextServerData.value.mc_version
|
||||
if (gameVersion) filters.push({ type: 'game_version', option: gameVersion })
|
||||
|
||||
const platform = serverContextWorldLoader.value?.toLowerCase().replaceAll('_', '')
|
||||
const platform = serverContextServerData.value.loader?.toLowerCase()
|
||||
if (platform && ['fabric', 'forge', 'quilt', 'neoforge'].includes(platform))
|
||||
filters.push({ type: 'mod_loader', option: platform })
|
||||
if (platform && ['paper', 'purpur'].includes(platform))
|
||||
@@ -339,14 +342,6 @@ const combinedProvidedFilters = computed(() =>
|
||||
isServerContext.value ? serverContextFilters.value : instanceFilters.value,
|
||||
)
|
||||
|
||||
const serverContentProjectType = computed<ProjectType | null>(() => {
|
||||
const loader = serverContextWorldLoader.value?.toLowerCase()
|
||||
if (!loader) return null
|
||||
if (loader === 'paper' || loader === 'purpur') return 'plugin'
|
||||
if (loader === 'vanilla') return 'datapack'
|
||||
return 'mod'
|
||||
})
|
||||
|
||||
const {
|
||||
serverPings,
|
||||
contextMenuRef,
|
||||
@@ -369,9 +364,11 @@ const {
|
||||
|
||||
const offline = ref(!navigator.onLine)
|
||||
window.addEventListener('offline', () => {
|
||||
debugLog('went offline')
|
||||
offline.value = true
|
||||
})
|
||||
window.addEventListener('online', () => {
|
||||
debugLog('went online')
|
||||
offline.value = false
|
||||
})
|
||||
|
||||
@@ -416,10 +413,6 @@ const messages = defineMessages({
|
||||
id: 'app.browse.back-to-instance',
|
||||
defaultMessage: 'Back to instance',
|
||||
},
|
||||
worldFallbackName: {
|
||||
id: 'app.browse.server.world-fallback-name',
|
||||
defaultMessage: 'Instance',
|
||||
},
|
||||
serverInstanceContentWarning: {
|
||||
id: 'app.browse.server-instance-content-warning',
|
||||
defaultMessage:
|
||||
@@ -479,6 +472,7 @@ const projectType = ref<ProjectType>(route.params.projectType as ProjectType)
|
||||
function resetInstanceContext() {
|
||||
if (!instance.value) return
|
||||
|
||||
debugLog('instance context removed, resetting')
|
||||
instance.value = null
|
||||
installedProjectIds.value = null
|
||||
instanceHideInstalled.value = false
|
||||
@@ -490,33 +484,9 @@ function resetInstanceContext() {
|
||||
breadcrumbs.setContext(null)
|
||||
}
|
||||
|
||||
watch(
|
||||
[isServerContext, isSetupServerContext, projectType, serverContentProjectType],
|
||||
([serverContext, setupServerContext, currentProjectType, targetProjectType]) => {
|
||||
if (!serverContext || setupServerContext || !targetProjectType) return
|
||||
if (!['mod', 'plugin', 'datapack'].includes(currentProjectType)) return
|
||||
if (currentProjectType === targetProjectType) return
|
||||
|
||||
router.replace({
|
||||
path: `/browse/${targetProjectType}`,
|
||||
query: {
|
||||
sid: route.query.sid,
|
||||
wid: route.query.wid,
|
||||
shi: route.query.shi,
|
||||
from: route.query.from,
|
||||
q: route.query.q,
|
||||
},
|
||||
})
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
watch(
|
||||
() => route.params.projectType as ProjectType,
|
||||
async (newType) => {
|
||||
if (!browseRouteActive.value) {
|
||||
return
|
||||
}
|
||||
if (isSetupServerContext.value) {
|
||||
enforceSetupModpackRoute(newType)
|
||||
if (newType !== 'modpack') return
|
||||
@@ -524,6 +494,7 @@ watch(
|
||||
|
||||
if (!newType || newType === projectType.value) return
|
||||
|
||||
debugLog('projectType route param changed', { from: projectType.value, to: newType })
|
||||
projectType.value = newType
|
||||
},
|
||||
)
|
||||
@@ -595,10 +566,9 @@ const selectableProjectTypes = computed(() => {
|
||||
const installContext = computed(() => {
|
||||
if (isServerContext.value && serverContextServerData.value) {
|
||||
return {
|
||||
name: serverContextWorldName.value ?? formatMessage(messages.worldFallbackName),
|
||||
loader: serverContextWorldLoader.value ?? '',
|
||||
loaderVersion: serverContextWorldLoaderVersion.value ?? '',
|
||||
gameVersion: serverContextWorldGameVersion.value ?? '',
|
||||
name: serverContextServerData.value.name,
|
||||
loader: serverContextServerData.value.loader ?? '',
|
||||
gameVersion: serverContextServerData.value.mc_version ?? '',
|
||||
serverId: serverIdQuery.value,
|
||||
upstream: serverContextServerData.value.upstream,
|
||||
iconSrc: null as string | null,
|
||||
@@ -638,12 +608,6 @@ const installContext = computed(() => {
|
||||
return null
|
||||
})
|
||||
|
||||
const stickyInstallHeaderRef = ref<HTMLElement | null>(null)
|
||||
const { isStuck: isInstallHeaderStuck } = useStickyObserver(
|
||||
stickyInstallHeaderRef,
|
||||
'BrowseInstallHeader',
|
||||
)
|
||||
|
||||
const installingProjectIds = ref<Set<string>>(new Set())
|
||||
|
||||
function setProjectInstalling(projectId: string, installing: boolean) {
|
||||
@@ -673,8 +637,8 @@ function getCurrentSelectedInstallPreferences(projectTypeValue: string) {
|
||||
function getServerInstallTargetPreferences(contentType: BrowseInstallContentType) {
|
||||
return getTargetInstallPreferences(
|
||||
{
|
||||
gameVersion: serverContextWorldGameVersion.value,
|
||||
loader: serverContextWorldLoader.value,
|
||||
gameVersion: serverContextServerData.value?.mc_version,
|
||||
loader: serverContextServerData.value?.loader,
|
||||
},
|
||||
contentType,
|
||||
)
|
||||
@@ -716,6 +680,7 @@ async function chooseInstanceInstallVersion(
|
||||
const selectedVersion = getLatestMatchingInstallVersion(
|
||||
await getInstallProjectVersions(project.project_id),
|
||||
selectedPreferences,
|
||||
projectTypeValue,
|
||||
)
|
||||
|
||||
if (!selectedVersion) {
|
||||
@@ -739,10 +704,11 @@ function getCardActions(
|
||||
installed?: boolean
|
||||
installing?: boolean
|
||||
}
|
||||
const isInstalled = isServerContext.value
|
||||
? serverContentProjectIds.value.has(projectResult.project_id || '') ||
|
||||
serverContextServerData.value?.upstream?.project_id === projectResult.project_id
|
||||
: projectResult.installed || allInstalledIds.value.has(projectResult.project_id || '')
|
||||
const isInstalled =
|
||||
projectResult.installed ||
|
||||
allInstalledIds.value.has(projectResult.project_id || '') ||
|
||||
serverContentProjectIds.value.has(projectResult.project_id || '') ||
|
||||
serverContextServerData.value?.upstream?.project_id === projectResult.project_id
|
||||
const isInstalling = installingProjectIds.value.has(projectResult.project_id)
|
||||
|
||||
if (
|
||||
@@ -797,15 +763,11 @@ function getCardActions(
|
||||
project: projectResult,
|
||||
contentType,
|
||||
mode: isModpack ? 'immediate' : 'queue',
|
||||
selectedFilters: isModpack
|
||||
? []
|
||||
: stripServerRuntimeInstallFilters(searchState.currentFilters.value),
|
||||
selectedFilters: isModpack ? [] : searchState.currentFilters.value,
|
||||
providedFilters: isModpack ? [] : combinedProvidedFilters.value,
|
||||
overriddenProvidedFilterTypes: isModpack
|
||||
? []
|
||||
: stripServerRuntimeInstallOverrides(
|
||||
searchState.overriddenProvidedFilterTypes.value,
|
||||
),
|
||||
: searchState.overriddenProvidedFilterTypes.value,
|
||||
targetPreferences: getServerInstallTargetPreferences(contentType),
|
||||
getProjectVersions: getInstallProjectVersions,
|
||||
queue: serverInstallQueue,
|
||||
@@ -910,6 +872,7 @@ function onSearchResultsInstalled(ids: string[]) {
|
||||
}
|
||||
|
||||
async function search(requestParams: string) {
|
||||
debugLog('searching v3', requestParams)
|
||||
const isServer = projectType.value === 'server'
|
||||
|
||||
const rawResults = await queryClient.fetchQuery({
|
||||
@@ -991,7 +954,6 @@ const lockedFilterMessages = computed(() => ({
|
||||
const searchState = useBrowseSearch({
|
||||
projectType,
|
||||
tags,
|
||||
active: browseRouteActive,
|
||||
providedFilters: combinedProvidedFilters,
|
||||
search,
|
||||
persistentQueryParams: ['i', 'ai', 'shi', 'sid', 'wid', 'from'],
|
||||
@@ -1067,12 +1029,7 @@ onUnmounted(() => {
|
||||
})
|
||||
|
||||
function getProjectBrowseQuery() {
|
||||
if (!browseRouteActive.value) {
|
||||
return undefined
|
||||
}
|
||||
if (!installContext.value) {
|
||||
return undefined
|
||||
}
|
||||
if (!installContext.value) return undefined
|
||||
return {
|
||||
...route.query,
|
||||
b: route.fullPath,
|
||||
@@ -1136,17 +1093,6 @@ provideBrowseManager({
|
||||
|
||||
<template>
|
||||
<div class="flex flex-col gap-3 p-6">
|
||||
<div
|
||||
v-if="installContext"
|
||||
ref="stickyInstallHeaderRef"
|
||||
class="sticky top-0 z-20 -mx-6 -mt-6 rounded-tl-[--radius-xl] border-0 border-b border-solid border-divider bg-surface-1 px-6 pt-6"
|
||||
:class="[isInstallHeaderStuck ? 'border-t' : '']"
|
||||
>
|
||||
<BrowseInstallHeader bottom-padding />
|
||||
</div>
|
||||
|
||||
<SelectedProjectsFloatingBar v-if="installContext" />
|
||||
|
||||
<BrowsePageLayout>
|
||||
<template #after>
|
||||
<ContextMenu ref="contextMenuRef" @option-clicked="handleOptionsClick">
|
||||
@@ -1173,8 +1119,7 @@ provideBrowseManager({
|
||||
@browse-modpacks="() => {}"
|
||||
@create="handleServerModpackFlowCreate"
|
||||
/>
|
||||
|
||||
<Teleport v-if="browseRouteActive" to="#sidebar-teleport-target">
|
||||
<Teleport to="#sidebar-teleport-target">
|
||||
<BrowseSidebar />
|
||||
</Teleport>
|
||||
</div>
|
||||
|
||||
@@ -114,6 +114,10 @@ const messages = defineMessages({
|
||||
id: 'app.skins.section.tiny-takeover',
|
||||
defaultMessage: 'Tiny Takeover',
|
||||
},
|
||||
chaosCubedSection: {
|
||||
id: 'app.skins.section.chaos-cubed',
|
||||
defaultMessage: 'Chaos Cubed',
|
||||
},
|
||||
rateLimitTitle: {
|
||||
id: 'app.skins.rate-limit.title',
|
||||
defaultMessage: 'Slow down!',
|
||||
@@ -447,6 +451,8 @@ function getDefaultSkinSectionTitle(section?: string) {
|
||||
return formatMessage(messages.mountsOfMayhemSection)
|
||||
case 'Tiny Takeover':
|
||||
return formatMessage(messages.tinyTakeoverSection)
|
||||
case 'Chaos Cubed':
|
||||
return formatMessage(messages.chaosCubedSection)
|
||||
case 'Default skins':
|
||||
return formatMessage(messages.defaultSkinsSection)
|
||||
default:
|
||||
|
||||
@@ -13,7 +13,7 @@ const queryClient = useQueryClient()
|
||||
if (worldId.value) {
|
||||
try {
|
||||
await queryClient.ensureQueryData({
|
||||
queryKey: ['backups', 'list', serverId, worldId.value],
|
||||
queryKey: ['backups', 'list', serverId],
|
||||
queryFn: () => client.archon.backups_v1.list(serverId, worldId.value!),
|
||||
staleTime: 30_000,
|
||||
})
|
||||
|
||||
@@ -13,7 +13,7 @@ const queryClient = useQueryClient()
|
||||
if (worldId.value) {
|
||||
try {
|
||||
await queryClient.ensureQueryData({
|
||||
queryKey: ['content', 'list', 'v1', serverId, worldId.value],
|
||||
queryKey: ['content', 'list', 'v1', serverId],
|
||||
queryFn: () =>
|
||||
client.archon.content_v1.getAddons(serverId, worldId.value!, { from_modpack: false }),
|
||||
staleTime: 30_000,
|
||||
|
||||
@@ -7,17 +7,15 @@ import {
|
||||
import { useQueryClient } from '@tanstack/vue-query'
|
||||
|
||||
const client = injectModrinthClient()
|
||||
const { worldId } = injectModrinthServerContext()
|
||||
const { serverId } = injectModrinthServerContext()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
try {
|
||||
if (worldId.value) {
|
||||
await queryClient.ensureQueryData({
|
||||
queryKey: ['files', 'v1', worldId.value, '/'],
|
||||
queryFn: () => client.kyros.files_v1.listDescendants(worldId.value!, '/', 1, 200),
|
||||
staleTime: 30_000,
|
||||
})
|
||||
}
|
||||
await queryClient.ensureQueryData({
|
||||
queryKey: ['files', serverId, '/'],
|
||||
queryFn: () => client.kyros.files_v0.listDirectory('/', 1, 2000),
|
||||
staleTime: 30_000,
|
||||
})
|
||||
} catch {
|
||||
// Let mounted layouts' useQuery surface errors; do not fail route setup.
|
||||
}
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
<template>
|
||||
<div class="h-full w-full pt-6">
|
||||
<div
|
||||
class="h-full w-full pt-6"
|
||||
:class="isContainedServerRoute ? 'box-border min-h-0 overflow-hidden' : ''"
|
||||
>
|
||||
<ServersManageRootLayout
|
||||
:server-id="serverId"
|
||||
:layout-mode="isContainedServerRoute ? 'contained' : 'page'"
|
||||
:reload-page="() => router.go(0)"
|
||||
:resolve-viewer="resolveViewer"
|
||||
:show-copy-id-action="themeStore.devMode"
|
||||
:auth-user="authUser"
|
||||
:navigate-to-billing="() => openUrl('https://modrinth.com/settings/billing')"
|
||||
:navigate-to-servers="() => router.push('/hosting/manage')"
|
||||
@@ -25,7 +30,7 @@
|
||||
"
|
||||
>
|
||||
<template #default="{ onReinstall, onReinstallFailed }">
|
||||
<RouterView v-slot="{ Component }" :route="managedRoute">
|
||||
<RouterView v-slot="{ Component }">
|
||||
<template v-if="Component">
|
||||
<Suspense>
|
||||
<component
|
||||
@@ -46,37 +51,28 @@ import type { Archon, Labrinth } from '@modrinth/api-client'
|
||||
import { injectAuth, injectModrinthClient, ServersManageRootLayout } from '@modrinth/ui'
|
||||
import { useQuery, useQueryClient } from '@tanstack/vue-query'
|
||||
import { openUrl } from '@tauri-apps/plugin-opener'
|
||||
import { computed, ref, shallowRef, watch } from 'vue'
|
||||
import { computed, watch } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
|
||||
import { get_user } from '@/helpers/cache'
|
||||
import { get as getCreds } from '@/helpers/mr_auth'
|
||||
import { useBreadcrumbs } from '@/store/breadcrumbs'
|
||||
import { useTheming } from '@/store/theme'
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const auth = injectAuth()
|
||||
const client = injectModrinthClient()
|
||||
const queryClient = useQueryClient()
|
||||
const themeStore = useTheming()
|
||||
const breadcrumbs = useBreadcrumbs()
|
||||
|
||||
const managedRoute = shallowRef(router.currentRoute.value)
|
||||
const serverId = ref(getRouteParam(managedRoute.value.params.id) ?? '')
|
||||
const isContainedServerRoute = computed(() => route.name === 'ServerManageOverview')
|
||||
|
||||
watch(
|
||||
router.currentRoute,
|
||||
(nextRoute) => {
|
||||
if (!nextRoute.path.startsWith('/hosting/manage/')) return
|
||||
managedRoute.value = nextRoute
|
||||
serverId.value = getRouteParam(nextRoute.params.id) ?? ''
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
function getRouteParam(param: string | string[] | undefined): string | null {
|
||||
if (Array.isArray(param)) return param[0] ?? null
|
||||
return param ?? null
|
||||
}
|
||||
const serverId = computed(() => {
|
||||
const rawId = route.params.id
|
||||
return Array.isArray(rawId) ? rawId[0] : (rawId ?? '')
|
||||
})
|
||||
|
||||
if (serverId.value) {
|
||||
try {
|
||||
@@ -103,7 +99,7 @@ watch(
|
||||
breadcrumbs.setName('Server', server.name)
|
||||
breadcrumbs.setContext({
|
||||
name: server.name,
|
||||
link: `/hosting/manage/${serverId.value}/instances`,
|
||||
link: `/hosting/manage/${serverId.value}/content`,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
<template>
|
||||
<ServersManageInstanceRootLayout>
|
||||
<RouterView v-slot="{ Component }">
|
||||
<template v-if="Component">
|
||||
<Suspense>
|
||||
<component :is="Component" />
|
||||
</Suspense>
|
||||
</template>
|
||||
</RouterView>
|
||||
</ServersManageInstanceRootLayout>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ServersManageInstanceRootLayout } from '@modrinth/ui'
|
||||
import { RouterView } from 'vue-router'
|
||||
</script>
|
||||
@@ -1,7 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import { ServersManageInstancesPage } from '@modrinth/ui'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ServersManageInstancesPage />
|
||||
</template>
|
||||
@@ -3,5 +3,5 @@ import { ServersManageOverviewPage } from '@modrinth/ui'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ServersManageOverviewPage />
|
||||
<ServersManageOverviewPage contained-console />
|
||||
</template>
|
||||
|
||||
@@ -3,8 +3,6 @@ import Backups from './Backups.vue'
|
||||
import Content from './Content.vue'
|
||||
import Files from './Files.vue'
|
||||
import Index from './Index.vue'
|
||||
import Instance from './Instance.vue'
|
||||
import Instances from './Instances.vue'
|
||||
import Overview from './Overview.vue'
|
||||
|
||||
export { Access, Backups, Content, Files, Index, Instance, Instances, Overview }
|
||||
export { Access, Backups, Content, Files, Index, Overview }
|
||||
|
||||
@@ -13,57 +13,207 @@
|
||||
@unlinked="fetchInstance"
|
||||
/>
|
||||
<UpdateToPlayModal ref="updateToPlayModal" :instance="instance" />
|
||||
<PageHeader
|
||||
:header="instance.name"
|
||||
:leading="instanceHeaderLeading"
|
||||
:metadata="instanceHeaderMetadata"
|
||||
:actions="instanceHeaderActions"
|
||||
>
|
||||
<template #metadata-server-details>
|
||||
<ContentPageHeader>
|
||||
<template #icon>
|
||||
<Avatar
|
||||
:src="icon ? icon : undefined"
|
||||
:alt="instance.name"
|
||||
size="64px"
|
||||
:tint-by="instance.id"
|
||||
/>
|
||||
</template>
|
||||
<template #title>
|
||||
{{ instance.name }}
|
||||
</template>
|
||||
<template #stats>
|
||||
<div class="flex items-center flex-wrap gap-2">
|
||||
<template v-if="loadingServerPing">
|
||||
<ServerOnlinePlayers
|
||||
v-if="playersOnline !== undefined"
|
||||
:online="playersOnline"
|
||||
:status-online="statusOnline"
|
||||
hide-label
|
||||
/>
|
||||
<ServerRecentPlays :recent-plays="recentPlays ?? 0" hide-label />
|
||||
<div
|
||||
v-if="
|
||||
(playersOnline !== undefined || recentPlays !== undefined) &&
|
||||
(minecraftServer?.region || ping)
|
||||
"
|
||||
class="w-1.5 h-1.5 rounded-full bg-surface-5"
|
||||
></div>
|
||||
<ServerPing v-if="ping" :ping="ping" />
|
||||
<template v-if="!isServerInstance">
|
||||
<div class="flex items-center gap-2 capitalize font-medium">
|
||||
{{ instance.loader }} {{ instance.game_version }}
|
||||
</div>
|
||||
|
||||
<template v-if="showInstancePlayTime">
|
||||
<div class="w-1.5 h-1.5 rounded-full bg-surface-5"></div>
|
||||
|
||||
<div class="flex items-center gap-2 font-medium">
|
||||
<template v-if="timePlayed > 0">
|
||||
{{ timePlayedHumanized }}
|
||||
</template>
|
||||
<template v-else> Never played </template>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<ServerRegion v-if="minecraftServer?.region" :region="minecraftServer?.region" />
|
||||
<template v-else>
|
||||
<template v-if="loadingServerPing">
|
||||
<ServerOnlinePlayers
|
||||
v-if="playersOnline !== undefined"
|
||||
:online="playersOnline"
|
||||
:status-online="statusOnline"
|
||||
hide-label
|
||||
/>
|
||||
<ServerRecentPlays :recent-plays="recentPlays ?? 0" hide-label />
|
||||
<div
|
||||
v-if="
|
||||
(playersOnline !== undefined || recentPlays !== undefined) &&
|
||||
(minecraftServer?.region || ping)
|
||||
"
|
||||
class="w-1.5 h-1.5 rounded-full bg-surface-5"
|
||||
></div>
|
||||
<ServerPing v-if="ping" :ping="ping" />
|
||||
</template>
|
||||
|
||||
<div
|
||||
v-if="minecraftServer?.region || ping"
|
||||
class="w-1.5 h-1.5 rounded-full bg-surface-5"
|
||||
></div>
|
||||
<ServerRegion v-if="minecraftServer?.region" :region="minecraftServer?.region" />
|
||||
|
||||
<div v-if="linkedProjectV3" class="flex gap-1.5 items-center font-medium text-primary">
|
||||
Linked to
|
||||
<Avatar
|
||||
:src="linkedProjectV3.icon_url"
|
||||
:alt="linkedProjectV3.name"
|
||||
:tint-by="instance.id"
|
||||
size="24px"
|
||||
/>
|
||||
<router-link
|
||||
:to="`/project/${linkedProjectV3.slug ?? linkedProjectV3.id}`"
|
||||
class="hover:underline text-primary truncate"
|
||||
<div
|
||||
v-if="minecraftServer?.region || ping"
|
||||
class="w-1.5 h-1.5 rounded-full bg-surface-5"
|
||||
></div>
|
||||
|
||||
<div
|
||||
v-if="linkedProjectV3"
|
||||
class="flex gap-1.5 items-center font-medium text-primary"
|
||||
>
|
||||
{{ linkedProjectV3.name }}
|
||||
</router-link>
|
||||
</div>
|
||||
Linked to
|
||||
<Avatar
|
||||
:src="linkedProjectV3.icon_url"
|
||||
:alt="linkedProjectV3.name"
|
||||
:tint-by="instance.id"
|
||||
size="24px"
|
||||
/>
|
||||
<router-link
|
||||
:to="`/project/${linkedProjectV3.slug ?? linkedProjectV3.id}`"
|
||||
class="hover:underline text-primary truncate"
|
||||
>
|
||||
{{ linkedProjectV3.name }}
|
||||
</router-link>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
</PageHeader>
|
||||
<template #actions>
|
||||
<div class="flex gap-2">
|
||||
<ButtonStyled
|
||||
v-if="
|
||||
[
|
||||
'installing',
|
||||
'pack_installing',
|
||||
'pack_installed',
|
||||
'not_installed',
|
||||
'minecraft_installing',
|
||||
].includes(instance.install_stage)
|
||||
"
|
||||
color="brand"
|
||||
size="large"
|
||||
>
|
||||
<button disabled>Installing...</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled
|
||||
v-else-if="instance.install_stage !== 'installed'"
|
||||
color="brand"
|
||||
size="large"
|
||||
>
|
||||
<button @click="repairInstance()">
|
||||
<DownloadIcon />
|
||||
Repair
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled v-else-if="playing === true" color="red" size="large">
|
||||
<button :disabled="stopping" @click="stopInstance('InstancePage')">
|
||||
<StopCircleIcon />
|
||||
{{ stopping ? 'Stopping...' : 'Stop' }}
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled
|
||||
v-else-if="playing === false && loading === false && !isServerInstance"
|
||||
color="brand"
|
||||
size="large"
|
||||
>
|
||||
<button @click="startInstance('InstancePage')">
|
||||
<PlayIcon />
|
||||
Play
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<div
|
||||
v-else-if="playing === false && loading === false && isServerInstance"
|
||||
class="joined-buttons"
|
||||
>
|
||||
<ButtonStyled color="brand" size="large">
|
||||
<button @click="handlePlayServer()">
|
||||
<PlayIcon />
|
||||
Play
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled color="brand" size="large">
|
||||
<OverflowMenu
|
||||
:options="[
|
||||
{
|
||||
id: 'join_server',
|
||||
action: () => handlePlayServer(),
|
||||
},
|
||||
{
|
||||
id: 'launch_instance',
|
||||
action: () => startInstance('InstancePage'),
|
||||
},
|
||||
]"
|
||||
>
|
||||
<div class="w-0 text-xl relative top-0.5 right-2.5">
|
||||
<DropdownIcon />
|
||||
</div>
|
||||
|
||||
<template #join_server>
|
||||
<PlayIcon />
|
||||
Join server
|
||||
</template>
|
||||
<template #launch_instance>
|
||||
<PlayIcon />
|
||||
Launch instance
|
||||
</template>
|
||||
</OverflowMenu>
|
||||
</ButtonStyled>
|
||||
</div>
|
||||
<ButtonStyled
|
||||
v-else-if="loading === true && playing === false"
|
||||
color="brand"
|
||||
size="large"
|
||||
>
|
||||
<button disabled>Starting...</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled circular size="large">
|
||||
<button v-tooltip="'Instance settings'" @click="settingsModal?.show()">
|
||||
<SettingsIcon />
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled type="transparent" circular size="large">
|
||||
<OverflowMenu
|
||||
:options="[
|
||||
{
|
||||
id: 'open-folder',
|
||||
action: () => {
|
||||
if (instance) showInstanceInFolder(instance.id)
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'export-mrpack',
|
||||
action: () => exportModal?.show(),
|
||||
},
|
||||
{
|
||||
id: 'create-shortcut',
|
||||
action: () => createShortcut(),
|
||||
},
|
||||
]"
|
||||
>
|
||||
<MoreVerticalIcon />
|
||||
<template #share-instance> <UserPlusIcon /> Share instance </template>
|
||||
<template #host-a-server> <ServerIcon /> Create a server </template>
|
||||
<template #open-folder> <FolderOpenIcon /> Open folder </template>
|
||||
<template #export-mrpack> <PackageIcon /> Export modpack </template>
|
||||
<template #create-shortcut> <ExternalIcon /> Create shortcut </template>
|
||||
</OverflowMenu>
|
||||
</ButtonStyled>
|
||||
</div>
|
||||
</template>
|
||||
</ContentPageHeader>
|
||||
</div>
|
||||
<div :class="['px-6', { 'shrink-0': isFixedRender }]">
|
||||
<NavTabs :links="tabs" />
|
||||
@@ -123,6 +273,7 @@ import {
|
||||
CheckCircleIcon,
|
||||
ClipboardCopyIcon,
|
||||
DownloadIcon,
|
||||
DropdownIcon,
|
||||
EditIcon,
|
||||
ExternalIcon,
|
||||
EyeIcon,
|
||||
@@ -133,44 +284,39 @@ import {
|
||||
PackageIcon,
|
||||
PlayIcon,
|
||||
PlusIcon,
|
||||
ServerIcon,
|
||||
SettingsIcon,
|
||||
StopCircleIcon,
|
||||
TagCategoryGamepad2Icon as Gamepad2Icon,
|
||||
TerminalSquareIcon,
|
||||
TimerIcon,
|
||||
UpdatedIcon,
|
||||
UserPlusIcon,
|
||||
XIcon,
|
||||
} from '@modrinth/assets'
|
||||
import {
|
||||
Avatar,
|
||||
formatLoaderLabel,
|
||||
ButtonStyled,
|
||||
ContentPageHeader,
|
||||
injectNotificationManager,
|
||||
LoaderIcon as ServerLoaderIcon,
|
||||
NavTabs,
|
||||
PageHeader,
|
||||
OverflowMenu,
|
||||
ServerOnlinePlayers,
|
||||
ServerPing,
|
||||
ServerRecentPlays,
|
||||
ServerRegion,
|
||||
useLoadingBarToken,
|
||||
} from '@modrinth/ui'
|
||||
import type { Loaders } from '@modrinth/utils'
|
||||
import { useQueryClient } from '@tanstack/vue-query'
|
||||
import { convertFileSrc } from '@tauri-apps/api/core'
|
||||
import dayjs from 'dayjs'
|
||||
import duration from 'dayjs/plugin/duration'
|
||||
import relativeTime from 'dayjs/plugin/relativeTime'
|
||||
import { computed, onUnmounted, ref, shallowRef, watch } from 'vue'
|
||||
import { onBeforeRouteUpdate, useRoute, useRouter, type LocationQuery } from 'vue-router'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
|
||||
import ContextMenu from '@/components/ui/ContextMenu.vue'
|
||||
import ExportModal from '@/components/ui/ExportModal.vue'
|
||||
import InstanceSettingsModal from '@/components/ui/modal/InstanceSettingsModal.vue'
|
||||
import UpdateToPlayModal from '@/components/ui/modal/UpdateToPlayModal.vue'
|
||||
import {
|
||||
fetchCachedServerStatus,
|
||||
getFreshCachedServerStatus,
|
||||
} from '@/composables/instances/use-server-status-query'
|
||||
import { useInstanceConsole } from '@/composables/useInstanceConsole'
|
||||
import { trackEvent } from '@/helpers/analytics'
|
||||
import { get_project_v3 } from '@/helpers/cache.js'
|
||||
@@ -181,7 +327,7 @@ import { type InstanceContentData, loadInstanceContentData } from '@/helpers/ins
|
||||
import { get_by_instance_id } from '@/helpers/process'
|
||||
import type { GameInstance } from '@/helpers/types'
|
||||
import { createInstanceShortcut, showInstanceInFolder } from '@/helpers/utils.js'
|
||||
import { refreshWorlds, type ServerStatus } from '@/helpers/worlds'
|
||||
import { get_server_status, refreshWorlds } from '@/helpers/worlds'
|
||||
import { injectServerInstall } from '@/providers/server-install'
|
||||
import { handleSevereError } from '@/store/error.js'
|
||||
import { useBreadcrumbs, useTheming } from '@/store/state'
|
||||
@@ -226,16 +372,13 @@ const selected = ref<unknown[]>([])
|
||||
|
||||
const minecraftServer = computed(() => linkedProjectV3.value?.minecraft_server)
|
||||
const javaServerPingData = computed(() => linkedProjectV3.value?.minecraft_java_server?.ping?.data)
|
||||
const liveServerStatusOnline = ref(false)
|
||||
const statusOnline = computed(() => liveServerStatusOnline.value || !!javaServerPingData.value)
|
||||
const statusOnline = computed(() => !!javaServerPingData.value)
|
||||
const recentPlays = computed(
|
||||
() => linkedProjectV3.value?.minecraft_java_server?.verified_plays_2w ?? undefined,
|
||||
)
|
||||
const playersOnline = ref<number | undefined>(undefined)
|
||||
const ping = ref<number | undefined>(undefined)
|
||||
const loadingServerPing = ref(false)
|
||||
const activeInstanceId = ref<string>()
|
||||
let fetchInstanceRequestId = 0
|
||||
|
||||
watch(
|
||||
() => router.currentRoute.value,
|
||||
@@ -247,68 +390,24 @@ watch(
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
type InstanceRouteContext = {
|
||||
name: unknown
|
||||
path: string
|
||||
query: LocationQuery
|
||||
}
|
||||
|
||||
type InstancePageData = {
|
||||
instanceId: string
|
||||
instance?: GameInstance
|
||||
linkedProjectV3?: Labrinth.Projects.v3.Project
|
||||
isServerInstance: boolean
|
||||
preloadedContent: InstanceContentData | null
|
||||
}
|
||||
|
||||
function applyServerStatus(status: ServerStatus) {
|
||||
playersOnline.value = status.players?.online
|
||||
ping.value = status.ping
|
||||
liveServerStatusOnline.value = true
|
||||
loadingServerPing.value = true
|
||||
}
|
||||
|
||||
function isContentSubpageRoute(routeName: unknown = displayedInstanceRoute.value.name) {
|
||||
function isContentSubpageRoute(routeName = displayedInstanceRoute.value.name) {
|
||||
return typeof routeName === 'string' && contentSubpageRouteNames.has(routeName)
|
||||
}
|
||||
|
||||
function resetServerStatus() {
|
||||
async function fetchInstance() {
|
||||
isServerInstance.value = false
|
||||
linkedProjectV3.value = undefined
|
||||
preloadedContent.value = null
|
||||
ping.value = undefined
|
||||
playersOnline.value = undefined
|
||||
liveServerStatusOnline.value = false
|
||||
loadingServerPing.value = false
|
||||
}
|
||||
|
||||
function isCurrentInstanceRequest(requestId: number, instanceId: string) {
|
||||
return (
|
||||
requestId === fetchInstanceRequestId &&
|
||||
route.path.startsWith('/instance') &&
|
||||
route.params.id === instanceId
|
||||
)
|
||||
}
|
||||
|
||||
function setInstanceBreadcrumbs(nextInstance: GameInstance, routeContext: InstanceRouteContext) {
|
||||
breadcrumbs.setName(
|
||||
'Instance',
|
||||
nextInstance.name.length > 40 ? nextInstance.name.substring(0, 40) + '...' : nextInstance.name,
|
||||
)
|
||||
breadcrumbs.setContext({
|
||||
name: nextInstance.name,
|
||||
link: routeContext.path,
|
||||
query: routeContext.query,
|
||||
})
|
||||
}
|
||||
|
||||
async function loadInstancePageData(
|
||||
instanceId: string,
|
||||
routeName: unknown = displayedInstanceRoute.value.name,
|
||||
): Promise<InstancePageData> {
|
||||
const nextInstance = await get(instanceId).catch(handleError)
|
||||
const nextInstance = await get(route.params.id as string).catch(handleError)
|
||||
let nextLinkedProjectV3: Labrinth.Projects.v3.Project | undefined
|
||||
let nextIsServerInstance = false
|
||||
|
||||
const contentPreloadPromise =
|
||||
nextInstance && isContentSubpageRoute(routeName)
|
||||
nextInstance && isContentSubpageRoute()
|
||||
? loadInstanceContentData(nextInstance.id, undefined, handleError)
|
||||
: Promise.resolve(null)
|
||||
|
||||
@@ -326,113 +425,59 @@ async function loadInstancePageData(
|
||||
|
||||
const nextPreloadedContent = await contentPreloadPromise
|
||||
|
||||
return {
|
||||
instanceId,
|
||||
instance: nextInstance ?? undefined,
|
||||
linkedProjectV3: nextLinkedProjectV3,
|
||||
isServerInstance: nextIsServerInstance,
|
||||
preloadedContent: nextPreloadedContent,
|
||||
}
|
||||
}
|
||||
instance.value = nextInstance ?? undefined
|
||||
linkedProjectV3.value = nextLinkedProjectV3
|
||||
isServerInstance.value = nextIsServerInstance
|
||||
preloadedContent.value = nextPreloadedContent
|
||||
|
||||
function applyInstancePageData(data: InstancePageData, routeContext: InstanceRouteContext) {
|
||||
activeInstanceId.value = data.instanceId
|
||||
resetServerStatus()
|
||||
playing.value = false
|
||||
fetchDeferredData()
|
||||
|
||||
instance.value = data.instance
|
||||
linkedProjectV3.value = data.linkedProjectV3
|
||||
isServerInstance.value = data.isServerInstance
|
||||
preloadedContent.value = data.preloadedContent
|
||||
|
||||
if (data.instance) {
|
||||
setInstanceBreadcrumbs(data.instance, routeContext)
|
||||
}
|
||||
|
||||
fetchDeferredData(data.instanceId)
|
||||
|
||||
if (data.instance) {
|
||||
if (nextInstance) {
|
||||
queryClient.prefetchQuery({
|
||||
queryKey: ['worlds', data.instance.id],
|
||||
queryFn: () => refreshWorlds(data.instance!.id),
|
||||
queryKey: ['worlds', nextInstance.id],
|
||||
queryFn: () => refreshWorlds(nextInstance.id),
|
||||
staleTime: 30_000,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchInstance(instanceId = route.params.id as string) {
|
||||
const requestId = ++fetchInstanceRequestId
|
||||
const data = await loadInstancePageData(instanceId)
|
||||
if (!isCurrentInstanceRequest(requestId, instanceId)) return
|
||||
|
||||
applyInstancePageData(data, {
|
||||
name: route.name,
|
||||
path: route.path,
|
||||
query: route.query,
|
||||
})
|
||||
}
|
||||
|
||||
function fetchDeferredData(instanceId: string) {
|
||||
function fetchDeferredData() {
|
||||
const serverAddress = linkedProjectV3.value?.minecraft_java_server?.address
|
||||
if (isServerInstance.value && serverAddress) {
|
||||
const cachedStatus = getFreshCachedServerStatus(queryClient, serverAddress)
|
||||
if (cachedStatus) {
|
||||
applyServerStatus(cachedStatus)
|
||||
} else {
|
||||
playersOnline.value = undefined
|
||||
ping.value = undefined
|
||||
loadingServerPing.value = false
|
||||
}
|
||||
|
||||
fetchCachedServerStatus(queryClient, serverAddress)
|
||||
get_server_status(serverAddress)
|
||||
.then((status) => {
|
||||
if (
|
||||
activeInstanceId.value !== instanceId ||
|
||||
linkedProjectV3.value?.minecraft_java_server?.address !== serverAddress
|
||||
)
|
||||
return
|
||||
applyServerStatus(status)
|
||||
playersOnline.value = status.players?.online
|
||||
ping.value = status.ping
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(`Failed to fetch server status for ${serverAddress}:`, error)
|
||||
})
|
||||
.finally(() => {
|
||||
if (activeInstanceId.value !== instanceId) return
|
||||
loadingServerPing.value = true
|
||||
})
|
||||
} else {
|
||||
loadingServerPing.value = true
|
||||
}
|
||||
|
||||
updatePlayState(instanceId)
|
||||
updatePlayState()
|
||||
}
|
||||
|
||||
async function updatePlayState(instanceId = route.params.id as string) {
|
||||
if (!instanceId) return
|
||||
const runningProcesses = await get_by_instance_id(instanceId).catch(handleError)
|
||||
if (activeInstanceId.value !== instanceId) return
|
||||
async function updatePlayState() {
|
||||
if (!route.params.id) return
|
||||
const runningProcesses = await get_by_instance_id(route.params.id as string).catch(handleError)
|
||||
|
||||
playing.value = Array.isArray(runningProcesses) && runningProcesses.length > 0
|
||||
}
|
||||
|
||||
await fetchInstance(route.params.id as string)
|
||||
|
||||
onBeforeRouteUpdate(async (to) => {
|
||||
if (!to.path.startsWith('/instance')) return
|
||||
const instanceId = Array.isArray(to.params.id) ? to.params.id[0] : to.params.id
|
||||
if (typeof instanceId !== 'string') return false
|
||||
|
||||
const requestId = ++fetchInstanceRequestId
|
||||
const data = await loadInstancePageData(instanceId, to.name)
|
||||
if (requestId !== fetchInstanceRequestId) return false
|
||||
|
||||
displayedInstanceRoute.value = to
|
||||
applyInstancePageData(data, {
|
||||
name: to.name,
|
||||
path: to.path,
|
||||
query: to.query,
|
||||
})
|
||||
})
|
||||
await fetchInstance()
|
||||
watch(
|
||||
() => route.params.id,
|
||||
async () => {
|
||||
if (route.params.id && route.path.startsWith('/instance')) {
|
||||
await fetchInstance()
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
const basePath = computed(
|
||||
() => `/instance/${encodeURIComponent(displayedInstanceRoute.value.params.id as string)}`,
|
||||
@@ -477,6 +522,20 @@ const tabs = computed(() => [
|
||||
},
|
||||
])
|
||||
|
||||
if (instance.value) {
|
||||
breadcrumbs.setName(
|
||||
'Instance',
|
||||
instance.value.name.length > 40
|
||||
? instance.value.name.substring(0, 40) + '...'
|
||||
: instance.value.name,
|
||||
)
|
||||
breadcrumbs.setContext({
|
||||
name: instance.value.name,
|
||||
link: displayedInstanceRoute.value.path,
|
||||
query: displayedInstanceRoute.value.query,
|
||||
})
|
||||
}
|
||||
|
||||
const options = ref<InstanceType<typeof ContextMenu> | null>(null)
|
||||
|
||||
const startInstance = async (context: string) => {
|
||||
@@ -617,7 +676,7 @@ const handleOptionsClick = async (args: { option: string; item: unknown }) => {
|
||||
break
|
||||
case 'copy_path': {
|
||||
if (instance.value) {
|
||||
const fullPath = await get_full_path(instance.value?.path)
|
||||
const fullPath = await get_full_path(instance.value.id)
|
||||
await navigator.clipboard.writeText(fullPath)
|
||||
}
|
||||
break
|
||||
@@ -666,16 +725,6 @@ const timePlayed = computed(() => {
|
||||
: 0
|
||||
})
|
||||
|
||||
const loaderDisplayName = computed(() =>
|
||||
instance.value ? (formatLoaderLabel(instance.value.loader) as Loaders) : null,
|
||||
)
|
||||
|
||||
const loaderLabel = computed(() =>
|
||||
instance.value && loaderDisplayName.value
|
||||
? [loaderDisplayName.value, instance.value.loader_version].filter(Boolean).join(' ')
|
||||
: '',
|
||||
)
|
||||
|
||||
const timePlayedHumanized = computed(() => {
|
||||
const duration = dayjs.duration(timePlayed.value, 'seconds')
|
||||
const hours = Math.floor(duration.asHours())
|
||||
@@ -692,195 +741,6 @@ const timePlayedHumanized = computed(() => {
|
||||
return seconds + ' second' + (seconds > 1 ? 's' : '')
|
||||
})
|
||||
|
||||
const playtimeLabel = computed(() =>
|
||||
timePlayed.value > 0 ? timePlayedHumanized.value : 'Never played',
|
||||
)
|
||||
|
||||
const instanceHeaderLeading = computed(() => ({
|
||||
type: 'avatar' as const,
|
||||
src: icon.value ? icon.value : undefined,
|
||||
alt: instance.value?.name,
|
||||
avatarSize: '64px',
|
||||
tintBy: instance.value?.id,
|
||||
}))
|
||||
|
||||
const instanceHeaderMetadata = computed(() => {
|
||||
if (!instance.value) return []
|
||||
if (isServerInstance.value) {
|
||||
return [
|
||||
{
|
||||
id: 'server-details',
|
||||
type: 'custom' as const,
|
||||
class: 'contents',
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
return [
|
||||
{
|
||||
id: 'game-version',
|
||||
label: instance.value.game_version,
|
||||
icon: Gamepad2Icon,
|
||||
},
|
||||
{
|
||||
id: 'loader',
|
||||
label: loaderLabel.value,
|
||||
icon: ServerLoaderIcon,
|
||||
iconProps: {
|
||||
loader: loaderDisplayName.value,
|
||||
},
|
||||
},
|
||||
...(showInstancePlayTime.value
|
||||
? [
|
||||
{
|
||||
id: 'playtime',
|
||||
label: playtimeLabel.value,
|
||||
icon: TimerIcon,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
]
|
||||
})
|
||||
|
||||
const installingStages = [
|
||||
'installing',
|
||||
'pack_installing',
|
||||
'pack_installed',
|
||||
'not_installed',
|
||||
'minecraft_installing',
|
||||
]
|
||||
|
||||
const primaryInstanceAction = computed(() => {
|
||||
if (!instance.value) return null
|
||||
|
||||
if (installingStages.includes(instance.value.install_stage)) {
|
||||
return {
|
||||
id: 'installing',
|
||||
label: 'Installing...',
|
||||
color: 'brand' as const,
|
||||
disabled: true,
|
||||
}
|
||||
}
|
||||
|
||||
if (instance.value.install_stage !== 'installed') {
|
||||
return {
|
||||
id: 'repair',
|
||||
label: 'Repair',
|
||||
icon: DownloadIcon,
|
||||
color: 'brand' as const,
|
||||
onClick: () => {
|
||||
void repairInstance()
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
if (playing.value === true) {
|
||||
return {
|
||||
id: 'stop',
|
||||
label: stopping.value ? 'Stopping...' : 'Stop',
|
||||
icon: StopCircleIcon,
|
||||
color: 'red' as const,
|
||||
disabled: stopping.value,
|
||||
onClick: () => {
|
||||
void stopInstance('InstancePage')
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
if (playing.value === false && loading.value === false && !isServerInstance.value) {
|
||||
return {
|
||||
id: 'play',
|
||||
label: 'Play',
|
||||
icon: PlayIcon,
|
||||
color: 'brand' as const,
|
||||
onClick: () => {
|
||||
void startInstance('InstancePage')
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
if (playing.value === false && loading.value === false && isServerInstance.value) {
|
||||
return {
|
||||
id: 'play',
|
||||
label: 'Play',
|
||||
color: 'brand' as const,
|
||||
joinedActions: [
|
||||
{
|
||||
id: 'join_server',
|
||||
label: 'Play',
|
||||
icon: PlayIcon,
|
||||
action: () => {
|
||||
void handlePlayServer()
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'launch_instance',
|
||||
label: 'Launch instance',
|
||||
icon: PlayIcon,
|
||||
action: () => {
|
||||
void startInstance('InstancePage')
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
|
||||
if (loading.value === true && playing.value === false) {
|
||||
return {
|
||||
id: 'starting',
|
||||
label: 'Starting...',
|
||||
color: 'brand' as const,
|
||||
disabled: true,
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
})
|
||||
|
||||
const instanceHeaderActions = computed(() => [
|
||||
...(primaryInstanceAction.value ? [primaryInstanceAction.value] : []),
|
||||
{
|
||||
id: 'settings',
|
||||
label: 'Instance settings',
|
||||
icon: SettingsIcon,
|
||||
labelHidden: true,
|
||||
tooltip: 'Instance settings',
|
||||
onClick: () => settingsModal.value?.show(),
|
||||
},
|
||||
{
|
||||
id: 'more',
|
||||
label: 'More actions',
|
||||
icon: MoreVerticalIcon,
|
||||
labelHidden: true,
|
||||
type: 'transparent' as const,
|
||||
tooltip: 'More actions',
|
||||
menuActions: [
|
||||
{
|
||||
id: 'open-folder',
|
||||
label: 'Open folder',
|
||||
icon: FolderOpenIcon,
|
||||
action: () => {
|
||||
if (instance.value) void showInstanceInFolder(instance.value.id)
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'export-mrpack',
|
||||
label: 'Export modpack',
|
||||
icon: PackageIcon,
|
||||
action: () => exportModal.value?.show(),
|
||||
},
|
||||
{
|
||||
id: 'create-shortcut',
|
||||
label: 'Create shortcut',
|
||||
icon: ExternalIcon,
|
||||
action: () => {
|
||||
void createShortcut()
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
])
|
||||
|
||||
onUnmounted(() => {
|
||||
unlistenProcesses()
|
||||
unlistenInstances()
|
||||
|
||||
@@ -1443,7 +1443,7 @@ onMounted(() => {
|
||||
props.instance &&
|
||||
event.instance_id === props.instance.id &&
|
||||
event.event === 'synced' &&
|
||||
props.instance.install_stage !== 'pack_installing' &&
|
||||
props.instance.install_stage === 'installed' &&
|
||||
!isBulkOperating.value
|
||||
) {
|
||||
await initProjects()
|
||||
|
||||
@@ -618,10 +618,7 @@ const filterOptions = computed(() => {
|
||||
const hasSingleplayer = dedupedWorlds.value.some((x) => x.type === 'singleplayer')
|
||||
const hasServer = dedupedWorlds.value.some((x) => x.type === 'server')
|
||||
|
||||
const hasStatusFilter =
|
||||
selectedFilters.value.includes('online') || selectedFilters.value.includes('offline')
|
||||
|
||||
if (hasSingleplayer && hasServer && !hasStatusFilter) {
|
||||
if (hasSingleplayer && hasServer) {
|
||||
options.push({ id: 'singleplayer', label: formatMessage(commonMessages.singleplayerLabel) })
|
||||
}
|
||||
|
||||
@@ -633,13 +630,11 @@ const filterOptions = computed(() => {
|
||||
options.push({ id: 'vanilla', label: formatMessage(messages.vanillaFilter) })
|
||||
options.push({ id: 'modded', label: formatMessage(messages.moddedFilter) })
|
||||
}
|
||||
if (!selectedFilters.value.includes('singleplayer')) {
|
||||
const hasOnline = servers.some((x) => !!serverData.value[x.address]?.status)
|
||||
const hasOffline = servers.some((x) => !serverData.value[x.address]?.status)
|
||||
if (hasOnline && hasOffline) {
|
||||
options.push({ id: 'online', label: formatMessage(messages.onlineFilter) })
|
||||
options.push({ id: 'offline', label: formatMessage(messages.offlineFilter) })
|
||||
}
|
||||
const hasOnline = servers.some((x) => !!serverData.value[x.address]?.status)
|
||||
const hasOffline = servers.some((x) => !serverData.value[x.address]?.status)
|
||||
if (hasOnline && hasOffline) {
|
||||
options.push({ id: 'online', label: formatMessage(messages.onlineFilter) })
|
||||
options.push({ id: 'offline', label: formatMessage(messages.offlineFilter) })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@
|
||||
<div class="flex flex-col gap-4 p-6">
|
||||
<div
|
||||
v-if="projectInstallContext"
|
||||
class="sticky top-0 z-20 -mx-6 -mt-6 rounded-tl-[--radius-xl] border-0 border-b border-solid border-divider bg-surface-1 px-6 pt-6"
|
||||
class="sticky top-0 z-20 -mx-6 -mt-6 rounded-tl-[--radius-xl] border-0 border-b border-solid bg-surface-1 p-3 border-surface-5"
|
||||
>
|
||||
<BrowseInstallHeader :install-context="projectInstallContext" bottom-padding />
|
||||
<BrowseInstallHeader :install-context="projectInstallContext" />
|
||||
</div>
|
||||
<InstanceIndicator v-if="instance && !projectInstallContext" :instance="instance" />
|
||||
<template v-if="data">
|
||||
@@ -64,9 +64,121 @@
|
||||
:project="data"
|
||||
:project-v3="projectV3"
|
||||
:ping="serverPing"
|
||||
:actions="projectHeaderActions"
|
||||
@contextmenu.prevent.stop="handleRightClick"
|
||||
/>
|
||||
>
|
||||
<template v-if="isServerProject" #actions>
|
||||
<ButtonStyled v-if="serverPlaying" size="large" color="red">
|
||||
<button @click="handleStopServer">
|
||||
<StopCircleIcon />
|
||||
{{ formatMessage(commonMessages.stopButton) }}
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled v-else size="large" color="brand">
|
||||
<button
|
||||
:disabled="data && installingServerProjects.includes(data.id)"
|
||||
@click="handleClickPlay"
|
||||
>
|
||||
<PlayIcon />
|
||||
{{
|
||||
data && installingServerProjects.includes(data.id)
|
||||
? formatMessage(commonMessages.installingLabel)
|
||||
: formatMessage(commonMessages.playButton)
|
||||
}}
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled size="large" circular>
|
||||
<button
|
||||
v-tooltip="formatMessage(commonMessages.addServerToInstanceButton)"
|
||||
@click="handleAddServerToInstance"
|
||||
>
|
||||
<PlusIcon />
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled size="large" circular type="transparent">
|
||||
<OverflowMenu
|
||||
:tooltip="`More options`"
|
||||
:options="[
|
||||
{
|
||||
id: 'open-in-browser',
|
||||
link: `https://modrinth.com/project/${data.slug}`,
|
||||
external: true,
|
||||
},
|
||||
{
|
||||
divider: true,
|
||||
},
|
||||
{
|
||||
id: 'report',
|
||||
color: 'red',
|
||||
hoverFilled: true,
|
||||
link: `https://modrinth.com/report?item=project&itemID=${data.id}`,
|
||||
},
|
||||
]"
|
||||
aria-label="More options"
|
||||
>
|
||||
<MoreVerticalIcon aria-hidden="true" />
|
||||
<template #open-in-browser> <ExternalIcon /> Open in browser </template>
|
||||
<template #report> <ReportIcon /> Report </template>
|
||||
</OverflowMenu>
|
||||
</ButtonStyled>
|
||||
</template>
|
||||
<template v-else #actions>
|
||||
<ButtonStyled size="large" color="brand">
|
||||
<button
|
||||
v-tooltip="installButtonTooltip"
|
||||
:disabled="installButtonDisabled"
|
||||
@click="install(null)"
|
||||
>
|
||||
<SpinnerIcon
|
||||
v-if="installButtonLoading && !installButtonInstalled"
|
||||
class="animate-spin"
|
||||
/>
|
||||
<DownloadIcon v-else-if="!installButtonInstalled && !serverProjectSelected" />
|
||||
<CheckIcon v-else />
|
||||
{{ installButtonLabel }}
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled size="large" circular type="transparent">
|
||||
<OverflowMenu
|
||||
:tooltip="`More options`"
|
||||
:options="[
|
||||
{
|
||||
id: 'follow',
|
||||
disabled: true,
|
||||
tooltip: 'Coming soon',
|
||||
action: () => {},
|
||||
},
|
||||
{
|
||||
id: 'save',
|
||||
disabled: true,
|
||||
tooltip: 'Coming soon',
|
||||
action: () => {},
|
||||
},
|
||||
{
|
||||
id: 'open-in-browser',
|
||||
link: `https://modrinth.com/${data.project_type}/${data.slug}`,
|
||||
external: true,
|
||||
},
|
||||
{
|
||||
divider: true,
|
||||
},
|
||||
{
|
||||
id: 'report',
|
||||
color: 'red',
|
||||
hoverFilled: true,
|
||||
link: `https://modrinth.com/report?item=project&itemID=${data.id}`,
|
||||
},
|
||||
]"
|
||||
aria-label="More options"
|
||||
>
|
||||
<MoreVerticalIcon aria-hidden="true" />
|
||||
<template #open-in-browser> <ExternalIcon /> Open in browser </template>
|
||||
<template #follow> <HeartIcon /> Follow </template>
|
||||
<template #save> <BookmarkIcon /> Save </template>
|
||||
<template #report> <ReportIcon /> Report </template>
|
||||
</OverflowMenu>
|
||||
</ButtonStyled>
|
||||
</template>
|
||||
</ProjectHeader>
|
||||
<NavTabs
|
||||
:links="[
|
||||
{
|
||||
@@ -154,12 +266,14 @@ import {
|
||||
} from '@modrinth/assets'
|
||||
import {
|
||||
BrowseInstallHeader,
|
||||
ButtonStyled,
|
||||
commonMessages,
|
||||
CreationFlowModal,
|
||||
defineMessages,
|
||||
getTargetInstallPreferences,
|
||||
injectNotificationManager,
|
||||
NavTabs,
|
||||
OverflowMenu,
|
||||
ProjectBackgroundGradient,
|
||||
ProjectHeader,
|
||||
ProjectSidebarCompatibility,
|
||||
@@ -172,7 +286,6 @@ import {
|
||||
SelectedProjectsFloatingBar,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { useQueryClient } from '@tanstack/vue-query'
|
||||
import { convertFileSrc } from '@tauri-apps/api/core'
|
||||
import { openUrl } from '@tauri-apps/plugin-opener'
|
||||
import dayjs from 'dayjs'
|
||||
@@ -182,10 +295,6 @@ import { useRoute, useRouter } from 'vue-router'
|
||||
|
||||
import ContextMenu from '@/components/ui/ContextMenu.vue'
|
||||
import InstanceIndicator from '@/components/ui/InstanceIndicator.vue'
|
||||
import {
|
||||
fetchCachedServerStatus,
|
||||
getFreshCachedServerStatus,
|
||||
} from '@/composables/instances/use-server-status-query'
|
||||
import {
|
||||
get_organization,
|
||||
get_project,
|
||||
@@ -204,7 +313,7 @@ import {
|
||||
import { get_loader_versions as getLoaderManifest } from '@/helpers/metadata'
|
||||
import { get_by_instance_id } from '@/helpers/process'
|
||||
import { get_categories, get_game_versions, get_loaders } from '@/helpers/tags'
|
||||
import { getServerAddress } from '@/helpers/worlds'
|
||||
import { getServerAddress, getServerLatency } from '@/helpers/worlds'
|
||||
import { injectContentInstall } from '@/providers/content-install'
|
||||
import { injectServerInstall } from '@/providers/server-install'
|
||||
import { createServerInstallContent } from '@/providers/setup/server-install-content'
|
||||
@@ -217,7 +326,6 @@ const { handleError } = injectNotificationManager()
|
||||
const { install: installVersion } = injectContentInstall()
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const queryClient = useQueryClient()
|
||||
const breadcrumbs = useBreadcrumbs()
|
||||
const themeStore = useTheming()
|
||||
const { formatMessage } = useVIntl()
|
||||
@@ -231,10 +339,6 @@ const messages = defineMessages({
|
||||
id: 'app.project.install-context.install-content-to-instance',
|
||||
defaultMessage: 'Install content to instance',
|
||||
},
|
||||
worldFallbackName: {
|
||||
id: 'app.project.install-context.world-fallback-name',
|
||||
defaultMessage: 'Instance',
|
||||
},
|
||||
alreadyInstalled: {
|
||||
id: 'app.project.install-button.already-installed',
|
||||
defaultMessage: 'This project is already installed',
|
||||
@@ -265,10 +369,7 @@ const serverStatusOnline = ref(false)
|
||||
const serverInstancePath = ref(null)
|
||||
const serverPlaying = ref(false)
|
||||
const serverSetupModalRef = ref(null)
|
||||
const serverInstallContent = createServerInstallContent({
|
||||
serverSetupModalRef,
|
||||
isRouteInContext: (targetRoute) => targetRoute.path.startsWith('/project/'),
|
||||
})
|
||||
const serverInstallContent = createServerInstallContent({ serverSetupModalRef })
|
||||
|
||||
serverInstallContent.watchServerContextChanges()
|
||||
await serverInstallContent.initServerContext()
|
||||
@@ -335,9 +436,7 @@ const projectInstallContext = computed(() => {
|
||||
const serverData = serverInstallContent.serverContextServerData.value
|
||||
if (serverData) {
|
||||
return {
|
||||
name:
|
||||
serverInstallContent.serverContextWorldName.value ??
|
||||
formatMessage(messages.worldFallbackName),
|
||||
name: serverData.name,
|
||||
loader: serverData.loader ?? '',
|
||||
gameVersion: serverData.mc_version ?? '',
|
||||
serverId: serverInstallContent.serverIdQuery.value,
|
||||
@@ -415,131 +514,6 @@ const installButtonTooltip = computed(() => {
|
||||
return null
|
||||
})
|
||||
|
||||
const projectHeaderActions = computed(() => {
|
||||
if (!data.value) return []
|
||||
|
||||
if (isServerProject.value) {
|
||||
return [
|
||||
serverPlaying.value
|
||||
? {
|
||||
id: 'stop',
|
||||
label: formatMessage(commonMessages.stopButton),
|
||||
icon: StopCircleIcon,
|
||||
color: 'red',
|
||||
onClick: handleStopServer,
|
||||
}
|
||||
: {
|
||||
id: 'play',
|
||||
label:
|
||||
data.value && installingServerProjects.value.includes(data.value.id)
|
||||
? formatMessage(commonMessages.installingLabel)
|
||||
: formatMessage(commonMessages.playButton),
|
||||
icon: PlayIcon,
|
||||
color: 'brand',
|
||||
disabled: data.value && installingServerProjects.value.includes(data.value.id),
|
||||
onClick: handleClickPlay,
|
||||
},
|
||||
{
|
||||
id: 'add-server-to-instance',
|
||||
label: formatMessage(commonMessages.addServerToInstanceButton),
|
||||
icon: PlusIcon,
|
||||
labelHidden: true,
|
||||
tooltip: formatMessage(commonMessages.addServerToInstanceButton),
|
||||
onClick: handleAddServerToInstance,
|
||||
},
|
||||
{
|
||||
id: 'more',
|
||||
label: 'More options',
|
||||
icon: MoreVerticalIcon,
|
||||
labelHidden: true,
|
||||
type: 'transparent',
|
||||
tooltip: 'More options',
|
||||
menuActions: [
|
||||
{
|
||||
id: 'open-in-browser',
|
||||
label: 'Open in browser',
|
||||
icon: ExternalIcon,
|
||||
action: () => openUrl(`https://modrinth.com/project/${data.value.slug}`),
|
||||
},
|
||||
{
|
||||
divider: true,
|
||||
},
|
||||
{
|
||||
id: 'report',
|
||||
label: 'Report',
|
||||
icon: ReportIcon,
|
||||
color: 'red',
|
||||
action: () =>
|
||||
openUrl(`https://modrinth.com/report?item=project&itemID=${data.value.id}`),
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
return [
|
||||
{
|
||||
id: 'install',
|
||||
label: installButtonLabel.value,
|
||||
icon:
|
||||
installButtonLoading.value && !installButtonInstalled.value
|
||||
? SpinnerIcon
|
||||
: !installButtonInstalled.value && !serverProjectSelected.value
|
||||
? DownloadIcon
|
||||
: CheckIcon,
|
||||
iconClass:
|
||||
installButtonLoading.value && !installButtonInstalled.value ? 'animate-spin' : undefined,
|
||||
color: 'brand',
|
||||
tooltip: installButtonTooltip.value,
|
||||
disabled: installButtonDisabled.value,
|
||||
onClick: () => install(null),
|
||||
},
|
||||
{
|
||||
id: 'more',
|
||||
label: 'More options',
|
||||
icon: MoreVerticalIcon,
|
||||
labelHidden: true,
|
||||
type: 'transparent',
|
||||
tooltip: 'More options',
|
||||
menuActions: [
|
||||
{
|
||||
id: 'follow',
|
||||
label: 'Follow',
|
||||
icon: HeartIcon,
|
||||
disabled: true,
|
||||
tooltip: 'Coming soon',
|
||||
action: () => {},
|
||||
},
|
||||
{
|
||||
id: 'save',
|
||||
label: 'Save',
|
||||
icon: BookmarkIcon,
|
||||
disabled: true,
|
||||
tooltip: 'Coming soon',
|
||||
action: () => {},
|
||||
},
|
||||
{
|
||||
id: 'open-in-browser',
|
||||
label: 'Open in browser',
|
||||
icon: ExternalIcon,
|
||||
action: () =>
|
||||
openUrl(`https://modrinth.com/${data.value.project_type}/${data.value.slug}`),
|
||||
},
|
||||
{
|
||||
divider: true,
|
||||
},
|
||||
{
|
||||
id: 'report',
|
||||
label: 'Report',
|
||||
icon: ReportIcon,
|
||||
color: 'red',
|
||||
action: () => openUrl(`https://modrinth.com/report?item=project&itemID=${data.value.id}`),
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
})
|
||||
|
||||
const [allLoaders, allGameVersions] = await Promise.all([
|
||||
get_loaders().catch(handleError).then(ref),
|
||||
get_game_versions().catch(handleError).then(ref),
|
||||
@@ -626,19 +600,10 @@ async function fetchProjectData() {
|
||||
function fetchDeferredServerData(project) {
|
||||
const serverAddress = projectV3.value?.minecraft_java_server?.address
|
||||
if (serverAddress) {
|
||||
const cachedStatus = getFreshCachedServerStatus(queryClient, serverAddress)
|
||||
if (cachedStatus) {
|
||||
serverPing.value = cachedStatus.ping
|
||||
serverStatusOnline.value = true
|
||||
} else {
|
||||
serverPing.value = undefined
|
||||
}
|
||||
|
||||
fetchCachedServerStatus(queryClient, serverAddress)
|
||||
.then((status) => {
|
||||
if (projectV3.value?.minecraft_java_server?.address !== serverAddress) return
|
||||
serverPing.value = status.ping
|
||||
serverStatusOnline.value = true
|
||||
serverPing.value = undefined
|
||||
getServerLatency(serverAddress)
|
||||
.then((latency) => {
|
||||
serverPing.value = latency
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(`Failed to ping server ${serverAddress}:`, error)
|
||||
|
||||
@@ -5,16 +5,15 @@
|
||||
:game-versions="gameVersions"
|
||||
:versions="versions"
|
||||
:project="project"
|
||||
:show-environment-column="themeStore.featureFlags.show_version_environment_column"
|
||||
:version-link="(version) => buildProjectHref(`/project/${project.id}/version/${version.id}`)"
|
||||
>
|
||||
<template #actions="{ version }">
|
||||
<ButtonStyled circular type="transparent">
|
||||
<ButtonStyled circular type="transparent" color="green">
|
||||
<button
|
||||
v-tooltip="`Install`"
|
||||
:class="{
|
||||
'group-hover:!bg-brand group-hover:[&>svg]:!text-brand-inverted':
|
||||
!installed || version.id !== installedVersion,
|
||||
}"
|
||||
v-tooltip="
|
||||
!installed ? 'Install' : version.id !== installedVersion ? 'Swap version' : ''
|
||||
"
|
||||
:disabled="installing || (installed && version.id === installedVersion)"
|
||||
@click.stop="() => install(version.id)"
|
||||
>
|
||||
@@ -26,7 +25,6 @@
|
||||
<ButtonStyled circular type="transparent">
|
||||
<OverflowMenu
|
||||
v-if="false"
|
||||
class="group-hover:!bg-button-bg"
|
||||
:options="[
|
||||
{
|
||||
id: 'install-elsewhere',
|
||||
@@ -52,7 +50,6 @@
|
||||
<a
|
||||
v-else
|
||||
v-tooltip="`Open in browser`"
|
||||
class="group-hover:!bg-button-bg"
|
||||
:href="`https://modrinth.com/${project.project_type}/${project.slug}/version/${version.id}`"
|
||||
target="_blank"
|
||||
>
|
||||
@@ -77,6 +74,9 @@ import { useRoute } from 'vue-router'
|
||||
|
||||
import { SwapIcon } from '@/assets/icons/index.js'
|
||||
import { get_game_versions, get_loaders } from '@/helpers/tags.js'
|
||||
import { useTheming } from '@/store/theme.ts'
|
||||
|
||||
const themeStore = useTheming()
|
||||
|
||||
defineProps({
|
||||
project: {
|
||||
|
||||
@@ -18,18 +18,7 @@ import {
|
||||
writeStoredServerInstallQueue,
|
||||
} from '@modrinth/ui'
|
||||
import { useQueryClient } from '@tanstack/vue-query'
|
||||
import {
|
||||
computed,
|
||||
type ComputedRef,
|
||||
nextTick,
|
||||
onActivated,
|
||||
onDeactivated,
|
||||
type Ref,
|
||||
ref,
|
||||
shallowRef,
|
||||
watch,
|
||||
} from 'vue'
|
||||
import type { RouteLocationNormalizedLoaded } from 'vue-router'
|
||||
import { computed, type ComputedRef, nextTick, type Ref, ref, watch } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
|
||||
type ServerFlowFrom = 'onboarding' | 'reset-server'
|
||||
@@ -64,10 +53,6 @@ export interface ServerInstallContentContext {
|
||||
isSetupServerContext: ComputedRef<boolean>
|
||||
effectiveServerWorldId: ComputedRef<string | null>
|
||||
serverContextServerData: Ref<Archon.Servers.v0.Server | null>
|
||||
serverContextWorldName: ComputedRef<string | null>
|
||||
serverContextWorldGameVersion: ComputedRef<string | null>
|
||||
serverContextWorldLoader: ComputedRef<string | null>
|
||||
serverContextWorldLoaderVersion: ComputedRef<string | null>
|
||||
serverContentProjectIds: Ref<Set<string>>
|
||||
queuedServerInstallProjectIds: ComputedRef<Set<string>>
|
||||
queuedServerInstallCount: ComputedRef<number>
|
||||
@@ -218,7 +203,6 @@ async function getQueuedInstallPlaceholders(
|
||||
|
||||
export function createServerInstallContent(opts: {
|
||||
serverSetupModalRef: Ref<ServerSetupModalHandle | null>
|
||||
isRouteInContext?: (route: RouteLocationNormalizedLoaded) => boolean
|
||||
}) {
|
||||
const { serverSetupModalRef } = opts
|
||||
const route = useRoute()
|
||||
@@ -227,22 +211,9 @@ export function createServerInstallContent(opts: {
|
||||
const { handleError } = injectNotificationManager()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
const routeInContext = computed(() => opts.isRouteInContext?.(route) ?? true)
|
||||
const contextQuery = shallowRef(route.query)
|
||||
|
||||
watch(
|
||||
[() => route.fullPath, routeInContext],
|
||||
() => {
|
||||
if (routeInContext.value) {
|
||||
contextQuery.value = route.query
|
||||
}
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
|
||||
const serverIdQuery = computed(() => readQueryString(contextQuery.value.sid))
|
||||
const worldIdQuery = computed(() => readQueryString(contextQuery.value.wid))
|
||||
const browseFrom = computed(() => readQueryString(contextQuery.value.from))
|
||||
const serverIdQuery = computed(() => readQueryString(route.query.sid))
|
||||
const worldIdQuery = computed(() => readQueryString(route.query.wid))
|
||||
const browseFrom = computed(() => readQueryString(route.query.from))
|
||||
const serverFlowFrom = computed<ServerFlowFrom | null>(() =>
|
||||
browseFrom.value === 'onboarding' || browseFrom.value === 'reset-server'
|
||||
? browseFrom.value
|
||||
@@ -255,13 +226,11 @@ export function createServerInstallContent(opts: {
|
||||
|
||||
const serverContextWorldId = ref<string | null>(worldIdQuery.value)
|
||||
const serverContextServerData = ref<Archon.Servers.v0.Server | null>(null)
|
||||
const serverContextServerFull = ref<Archon.Servers.v1.ServerFull | null>(null)
|
||||
const serverContentProjectIds = ref<Set<string>>(new Set())
|
||||
const serverContentInstallKeys = ref<Set<string>>(new Set())
|
||||
const queuedServerInstalls = ref<Map<string, BrowseInstallPlan<InstallableSearchResult>>>(
|
||||
new Map(),
|
||||
)
|
||||
const componentActive = ref(true)
|
||||
const queuedServerInstallProjectIds = computed(() => new Set(queuedServerInstalls.value.keys()))
|
||||
const queuedServerInstallCount = computed(() => queuedServerInstalls.value.size)
|
||||
const selectedServerInstallProjects = computed<BrowseSelectedProject[]>(() =>
|
||||
@@ -274,33 +243,6 @@ export function createServerInstallContent(opts: {
|
||||
const isInstallingQueuedServerInstalls = ref(false)
|
||||
const queuedInstallProgress = ref({ completed: 0, total: 0 })
|
||||
const effectiveServerWorldId = computed(() => worldIdQuery.value ?? serverContextWorldId.value)
|
||||
const serverContextWorld = computed(() => {
|
||||
const serverFull = serverContextServerFull.value
|
||||
if (!serverFull) return null
|
||||
|
||||
const worldId = effectiveServerWorldId.value
|
||||
if (worldId) {
|
||||
return serverFull.worlds.find((world) => world.id === worldId) ?? null
|
||||
}
|
||||
|
||||
return serverFull.worlds.find((world) => world.is_active) ?? serverFull.worlds[0] ?? null
|
||||
})
|
||||
const serverContextWorldName = computed(() => serverContextWorld.value?.name ?? null)
|
||||
const serverContextWorldGameVersion = computed(() => {
|
||||
const worldGameVersion = serverContextWorld.value?.content?.game_version
|
||||
if (worldIdQuery.value) return worldGameVersion ?? null
|
||||
return worldGameVersion ?? serverContextServerData.value?.mc_version ?? null
|
||||
})
|
||||
const serverContextWorldLoader = computed(() => {
|
||||
const worldLoader = serverContextWorld.value?.content?.modloader
|
||||
if (worldIdQuery.value) return worldLoader ?? null
|
||||
return worldLoader ?? serverContextServerData.value?.loader ?? null
|
||||
})
|
||||
const serverContextWorldLoaderVersion = computed(() => {
|
||||
const worldLoaderVersion = serverContextWorld.value?.content?.modloader_version
|
||||
if (worldIdQuery.value) return worldLoaderVersion ?? null
|
||||
return worldLoaderVersion ?? serverContextServerData.value?.loader_version ?? null
|
||||
})
|
||||
const serverBackUrl = computed(() => {
|
||||
const sid = serverIdQuery.value
|
||||
if (!sid) return '/hosting/manage'
|
||||
@@ -310,7 +252,7 @@ export function createServerInstallContent(opts: {
|
||||
if (serverFlowFrom.value === 'reset-server') {
|
||||
return `/hosting/manage/${sid}?openSettings=installation`
|
||||
}
|
||||
return getServerInstanceContentPath(sid, effectiveServerWorldId.value)
|
||||
return `/hosting/manage/${sid}/content`
|
||||
})
|
||||
const serverBackLabel = computed(() => {
|
||||
if (serverFlowFrom.value === 'onboarding') return 'Back to setup'
|
||||
@@ -324,27 +266,9 @@ export function createServerInstallContent(opts: {
|
||||
return 'Installing content'
|
||||
})
|
||||
|
||||
onActivated(() => {
|
||||
componentActive.value = true
|
||||
})
|
||||
|
||||
onDeactivated(() => {
|
||||
componentActive.value = false
|
||||
})
|
||||
|
||||
async function getServerContextServerFull(serverId: string) {
|
||||
if (serverContextServerFull.value?.id === serverId) {
|
||||
return serverContextServerFull.value
|
||||
}
|
||||
|
||||
const server = await client.archon.servers_v1.get(serverId)
|
||||
serverContextServerFull.value = server
|
||||
return server
|
||||
}
|
||||
|
||||
async function resolveServerContextWorldId(serverId: string) {
|
||||
try {
|
||||
const server = await getServerContextServerFull(serverId)
|
||||
const server = await client.archon.servers_v1.get(serverId)
|
||||
const activeWorld = server.worlds.find((world) => world.is_active)
|
||||
return activeWorld?.id ?? server.worlds[0]?.id ?? null
|
||||
} catch (err) {
|
||||
@@ -380,11 +304,6 @@ export function createServerInstallContent(opts: {
|
||||
} catch (err) {
|
||||
handleError(err as Error)
|
||||
}
|
||||
try {
|
||||
await getServerContextServerFull(sid)
|
||||
} catch (err) {
|
||||
handleError(err as Error)
|
||||
}
|
||||
|
||||
let resolvedWorldId = effectiveServerWorldId.value
|
||||
if (!resolvedWorldId) {
|
||||
@@ -401,79 +320,41 @@ export function createServerInstallContent(opts: {
|
||||
}
|
||||
|
||||
function watchServerContextChanges() {
|
||||
watch(
|
||||
[componentActive, routeInContext, serverIdQuery, effectiveServerWorldId],
|
||||
async ([active, inContext, sid, wid], [prevActive, prevInContext, prevSid, prevWid]) => {
|
||||
if (!active || !inContext) return
|
||||
watch([serverIdQuery, effectiveServerWorldId], async ([sid, wid], [prevSid, prevWid]) => {
|
||||
if (!sid) {
|
||||
serverContextServerData.value = null
|
||||
serverContentProjectIds.value = new Set()
|
||||
serverContentInstallKeys.value = new Set()
|
||||
setQueuedServerInstallPlans(new Map())
|
||||
return
|
||||
}
|
||||
|
||||
if (!sid) {
|
||||
serverContextServerData.value = null
|
||||
serverContextServerFull.value = null
|
||||
serverContentProjectIds.value = new Set()
|
||||
serverContentInstallKeys.value = new Set()
|
||||
setQueuedServerInstallPlans(new Map())
|
||||
return
|
||||
if (sid !== prevSid) {
|
||||
serverContentProjectIds.value = new Set()
|
||||
serverContentInstallKeys.value = new Set()
|
||||
queuedServerInstalls.value = readStoredServerInstallQueue(sid, wid)
|
||||
try {
|
||||
serverContextServerData.value = await client.archon.servers_v0.get(sid)
|
||||
} catch (err) {
|
||||
handleError(err as Error)
|
||||
}
|
||||
}
|
||||
|
||||
const hasServerDataForRoute = serverContextServerData.value?.server_id === sid
|
||||
const hasServerFullForRoute = serverContextServerFull.value?.id === sid
|
||||
const didEnterContext = !prevActive || !prevInContext
|
||||
const shouldReloadRouteContext =
|
||||
didEnterContext ||
|
||||
sid !== prevSid ||
|
||||
wid !== prevWid ||
|
||||
!hasServerDataForRoute ||
|
||||
!hasServerFullForRoute
|
||||
if (wid !== prevWid) {
|
||||
queuedServerInstalls.value = readStoredServerInstallQueue(sid, wid)
|
||||
}
|
||||
|
||||
if (!hasServerDataForRoute || !hasServerFullForRoute) {
|
||||
serverContextWorldId.value = worldIdQuery.value
|
||||
if (!hasServerDataForRoute) {
|
||||
serverContextServerData.value = null
|
||||
}
|
||||
if (!hasServerFullForRoute) {
|
||||
serverContextServerFull.value = null
|
||||
}
|
||||
serverContentProjectIds.value = new Set()
|
||||
serverContentInstallKeys.value = new Set()
|
||||
}
|
||||
|
||||
if (!hasServerDataForRoute) {
|
||||
try {
|
||||
serverContextServerData.value = await client.archon.servers_v0.get(sid)
|
||||
} catch (err) {
|
||||
handleError(err as Error)
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasServerFullForRoute) {
|
||||
try {
|
||||
const serverFull = await getServerContextServerFull(sid)
|
||||
if (!worldIdQuery.value) {
|
||||
const activeWorld = serverFull.worlds.find((world) => world.is_active)
|
||||
serverContextWorldId.value = activeWorld?.id ?? serverFull.worlds[0]?.id ?? null
|
||||
}
|
||||
} catch (err) {
|
||||
handleError(err as Error)
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldReloadRouteContext) {
|
||||
queuedServerInstalls.value = readStoredServerInstallQueue(sid, wid)
|
||||
}
|
||||
|
||||
if (wid && shouldReloadRouteContext) {
|
||||
await refreshServerInstalledContent(sid, wid)
|
||||
}
|
||||
},
|
||||
)
|
||||
if (wid && (sid !== prevSid || wid !== prevWid)) {
|
||||
await refreshServerInstalledContent(sid, wid)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function enforceSetupModpackRoute(currentProjectType: string | undefined) {
|
||||
if (!routeInContext.value || !isSetupServerContext.value || currentProjectType === 'modpack')
|
||||
return
|
||||
if (!isSetupServerContext.value || currentProjectType === 'modpack') return
|
||||
router.replace({
|
||||
path: '/browse/modpack',
|
||||
query: contextQuery.value,
|
||||
query: route.query,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -543,7 +424,7 @@ export function createServerInstallContent(opts: {
|
||||
if (isInstallingQueuedServerInstalls.value) return false
|
||||
|
||||
if (!serverId || !worldId) {
|
||||
handleError(new Error('No server instance is available for install.'))
|
||||
handleError(new Error('No server world is available for install.'))
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -567,7 +448,6 @@ export function createServerInstallContent(opts: {
|
||||
plans.map((plan) => ({
|
||||
project_id: plan.projectId,
|
||||
version_id: plan.versionId,
|
||||
kind: plan.contentType as Archon.Content.v1.AddonKind,
|
||||
})),
|
||||
),
|
||||
onQueueChange: (plans) => setStoredServerInstallPlans(serverId, worldId, plans),
|
||||
@@ -676,7 +556,7 @@ export function createServerInstallContent(opts: {
|
||||
|
||||
if (serverFlowFrom.value === 'onboarding') {
|
||||
await client.archon.servers_v1.endIntro(sid)
|
||||
await router.push(getServerInstanceContentPath(sid, wid))
|
||||
await router.push(`/hosting/manage/${sid}/content`)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -691,11 +571,6 @@ export function createServerInstallContent(opts: {
|
||||
serverContentProjectIds.value = new Set([...serverContentProjectIds.value, id])
|
||||
}
|
||||
|
||||
function getServerInstanceContentPath(serverId: string, worldId: string | null) {
|
||||
const base = `/hosting/manage/${encodeURIComponent(serverId)}/instances`
|
||||
return worldId ? `${base}/${encodeURIComponent(worldId)}` : base
|
||||
}
|
||||
|
||||
return {
|
||||
serverIdQuery,
|
||||
worldIdQuery,
|
||||
@@ -706,10 +581,6 @@ export function createServerInstallContent(opts: {
|
||||
isSetupServerContext,
|
||||
effectiveServerWorldId,
|
||||
serverContextServerData,
|
||||
serverContextWorldName,
|
||||
serverContextWorldGameVersion,
|
||||
serverContextWorldLoader,
|
||||
serverContextWorldLoaderVersion,
|
||||
serverContentProjectIds,
|
||||
queuedServerInstallProjectIds,
|
||||
queuedServerInstallCount,
|
||||
|
||||
@@ -6,11 +6,6 @@ import * as Instance from '@/pages/instance'
|
||||
import * as Library from '@/pages/library'
|
||||
import * as Project from '@/pages/project'
|
||||
|
||||
function getQueryParam(value) {
|
||||
if (Array.isArray(value)) return value[0] ?? ''
|
||||
return value ?? ''
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures application routing. Add page to pages/index and then add to route table here.
|
||||
*/
|
||||
@@ -62,48 +57,6 @@ export default new createRouter({
|
||||
breadcrumb: [{ name: '?Server' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'instances',
|
||||
name: 'ServerManageInstances',
|
||||
component: Hosting.Instances,
|
||||
meta: {
|
||||
breadcrumb: [{ name: '?Server' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'instances/:instance_id',
|
||||
name: 'ServerManageInstance',
|
||||
component: Hosting.Instance,
|
||||
meta: {
|
||||
breadcrumb: [{ name: '?Server' }],
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
name: 'ServerManageInstanceContent',
|
||||
component: Hosting.Content,
|
||||
meta: {
|
||||
breadcrumb: [{ name: '?Server' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'files',
|
||||
name: 'ServerManageInstanceFiles',
|
||||
component: Hosting.Files,
|
||||
meta: {
|
||||
breadcrumb: [{ name: '?Server' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'backups',
|
||||
name: 'ServerManageInstanceBackups',
|
||||
component: Hosting.Backups,
|
||||
meta: {
|
||||
breadcrumb: [{ name: '?Server' }],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'files',
|
||||
name: 'ServerManageFiles',
|
||||
@@ -136,17 +89,6 @@ export default new createRouter({
|
||||
component: Pages.Browse,
|
||||
meta: {
|
||||
useContext: true,
|
||||
keepAliveComponent: 'Browse',
|
||||
keepAliveKey: (route) => {
|
||||
return [
|
||||
'browse',
|
||||
getQueryParam(route.params.projectType),
|
||||
getQueryParam(route.query.i),
|
||||
getQueryParam(route.query.sid),
|
||||
getQueryParam(route.query.wid),
|
||||
getQueryParam(route.query.from),
|
||||
].join(':')
|
||||
},
|
||||
breadcrumb: [{ name: '?BrowseTitle' }],
|
||||
},
|
||||
},
|
||||
@@ -305,6 +247,7 @@ export default new createRouter({
|
||||
name: 'Logs',
|
||||
component: Instance.Logs,
|
||||
meta: {
|
||||
renderMode: 'fixed',
|
||||
useRootContext: true,
|
||||
breadcrumb: [{ name: '?Instance', link: '/instance/{id}/' }, { name: 'Logs' }],
|
||||
},
|
||||
|
||||
@@ -8,6 +8,7 @@ export const DEFAULT_FEATURE_FLAGS = {
|
||||
worlds_tab: false,
|
||||
worlds_in_home: true,
|
||||
server_project_qa: false,
|
||||
show_version_environment_column: false,
|
||||
server_ram_as_bytes_always_on: false,
|
||||
always_show_app_controls: false,
|
||||
skip_non_essential_warnings: false,
|
||||
|
||||
@@ -49,10 +49,10 @@
|
||||
"url": "http://127.0.0.1:8000/*"
|
||||
},
|
||||
{
|
||||
"url": "http://*.tail029726.ts.net/*"
|
||||
"url": "http://*.taila228c5.ts.net/*"
|
||||
},
|
||||
{
|
||||
"url": "https://*.tail029726.ts.net/*"
|
||||
"url": "https://*.taila228c5.ts.net/*"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
],
|
||||
"csp": {
|
||||
"default-src": "'self' customprotocol: asset:",
|
||||
"connect-src": "ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.nodes.modrinth.com https://*.posthog.com https://posthog.modrinth.com https://*.sentry.io https://api.mclo.gs http://textures.minecraft.net https://textures.minecraft.net https://js.stripe.com https://*.stripe.com wss://*.stripe.com https://*.intercom.io wss://*.intercom.io https://*.intercomcdn.com https://www.intercom-reporting.com https://app.getsentry.com wss://*.nodes.modrinth.com https://*.tail029726.ts.net https://*.tail029726.ts.net wss://*.tail029726.ts.net https://fill.papermc.io https://api.purpurmc.org 'self' data: blob:",
|
||||
"connect-src": "ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.nodes.modrinth.com https://*.posthog.com https://posthog.modrinth.com https://*.sentry.io https://api.mclo.gs http://textures.minecraft.net https://textures.minecraft.net https://js.stripe.com https://*.stripe.com wss://*.stripe.com https://*.intercom.io wss://*.intercom.io https://*.intercomcdn.com https://www.intercom-reporting.com https://app.getsentry.com wss://*.nodes.modrinth.com https://*.taila228c5.ts.net https://*.taila228c5.ts.net wss://*.taila228c5.ts.net https://fill.papermc.io https://api.purpurmc.org 'self' data: blob:",
|
||||
"font-src": [
|
||||
"https://cdn-raw.modrinth.com/fonts/",
|
||||
"https://js.intercomcdn.com"
|
||||
|
||||
@@ -414,7 +414,7 @@ components:
|
||||
- unknown
|
||||
- signature
|
||||
example: required-resource-pack
|
||||
# https://github.com/modrinth/labrinth/blob/master/src/routes/version_creation.rs#L27-L57
|
||||
# https://github.com/modrinth/code/blob/main/apps/labrinth/src/routes/v2/version_creation.rs#L32-L76
|
||||
CreatableVersion:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/BaseVersion'
|
||||
@@ -446,6 +446,11 @@ components:
|
||||
- client_or_server_prefers_both
|
||||
- unknown
|
||||
description: The environment that this version is for.
|
||||
file_types:
|
||||
type: object
|
||||
additionalProperties:
|
||||
$ref: '#/components/schemas/FileTypeEnum'
|
||||
description: A map of file parts to their associated file type, a file type is used for additional files such as sources jars.
|
||||
required:
|
||||
- file_parts
|
||||
- project_id
|
||||
|
||||
+30
-30
@@ -41,38 +41,38 @@ export const VISIBLE_PROJECT_STATUS_CHANGE_EVENT_STATUS_SET =
|
||||
|
||||
export const LIGHT_LEGEND_PALETTE = [
|
||||
'hsl(152, 100%, 34%)',
|
||||
'hsl(26, 100%, 42%)',
|
||||
'hsl(202, 100%, 35%)',
|
||||
'hsl(327, 45%, 64%)',
|
||||
'hsl(41, 100%, 45%)',
|
||||
'hsl(250, 60%, 33%)',
|
||||
'hsl(170, 43%, 47%)',
|
||||
'hsl(330, 60%, 33%)',
|
||||
'hsl(46, 100%, 36%)',
|
||||
'hsl(167, 100%, 30%)',
|
||||
'hsl(343, 38%, 45%)',
|
||||
'hsl(222, 100%, 28%)',
|
||||
'hsl(270, 62%, 60%)',
|
||||
'hsl(32, 100%, 37%)',
|
||||
'hsl(349, 57%, 51%)',
|
||||
'hsl(191, 43%, 37%)',
|
||||
'hsl(41, 79%, 46%)',
|
||||
'hsl(203, 76%, 64%)',
|
||||
'hsl(0, 93%, 62%)',
|
||||
'hsl(143, 66%, 29%)',
|
||||
'hsl(58, 89%, 25%)',
|
||||
'hsl(311, 64%, 49%)',
|
||||
'hsl(198, 91%, 32%)',
|
||||
'hsl(12, 88%, 27%)',
|
||||
'hsl(236, 61%, 60%)',
|
||||
'hsl(102, 59%, 74%)',
|
||||
'hsl(293, 76%, 79%)',
|
||||
'hsl(67, 99%, 41%)',
|
||||
'hsl(179, 100%, 50%)',
|
||||
'hsl(102, 100%, 61%)',
|
||||
'hsl(0, 100%, 32%)',
|
||||
]
|
||||
|
||||
export const DARK_LEGEND_PALETTE = [
|
||||
'hsl(145, 78%, 48%)',
|
||||
'hsl(41, 100%, 50%)',
|
||||
'hsl(202, 77%, 63%)',
|
||||
'hsl(323, 66%, 72%)',
|
||||
'hsl(56, 85%, 60%)',
|
||||
'hsl(255, 92%, 80%)',
|
||||
'hsl(12, 100%, 67%)',
|
||||
'hsl(176, 58%, 56%)',
|
||||
'hsl(60, 100%, 41%)',
|
||||
'hsl(165, 80%, 38%)',
|
||||
'hsl(341, 36%, 56%)',
|
||||
'hsl(226, 60%, 49%)',
|
||||
'hsl(252, 53%, 62%)',
|
||||
'hsl(75, 59%, 50%)',
|
||||
'hsl(195, 56%, 42%)',
|
||||
'hsl(30, 59%, 56%)',
|
||||
'hsl(41, 79%, 46%)',
|
||||
'hsl(203, 76%, 64%)',
|
||||
'hsl(0, 93%, 62%)',
|
||||
'hsl(143, 66%, 29%)',
|
||||
'hsl(58, 94%, 45%)',
|
||||
'hsl(311, 64%, 49%)',
|
||||
'hsl(198, 91%, 32%)',
|
||||
'hsl(12, 88%, 27%)',
|
||||
'hsl(236, 61%, 60%)',
|
||||
'hsl(102, 59%, 74%)',
|
||||
'hsl(293, 76%, 79%)',
|
||||
'hsl(61, 92%, 33%)',
|
||||
'hsl(179, 100%, 50%)',
|
||||
'hsl(102, 100%, 61%)',
|
||||
'hsl(0, 100%, 32%)',
|
||||
]
|
||||
|
||||
+45
-14
@@ -288,6 +288,7 @@ type PaletteRankEntry = {
|
||||
key: string
|
||||
label: string
|
||||
total: number
|
||||
excludedFromRank?: boolean
|
||||
}
|
||||
|
||||
function formatDatasetTooltip(projectName: string | undefined): string | undefined {
|
||||
@@ -330,9 +331,12 @@ function buildPaletteColorsByDownloadRank(
|
||||
const colorsByKey = new Map<string, string>()
|
||||
if (palette.length === 0) return colorsByKey
|
||||
|
||||
const sortedEntries = [...entries].sort(
|
||||
(a, b) => b.total - a.total || a.label.localeCompare(b.label) || a.key.localeCompare(b.key),
|
||||
)
|
||||
const compareEntries = (a: PaletteRankEntry, b: PaletteRankEntry) =>
|
||||
b.total - a.total || a.label.localeCompare(b.label) || a.key.localeCompare(b.key)
|
||||
const rankedEntries = entries.filter((entry) => !entry.excludedFromRank).sort(compareEntries)
|
||||
const excludedEntries = entries.filter((entry) => entry.excludedFromRank).sort(compareEntries)
|
||||
const sortedEntries = [...rankedEntries, ...excludedEntries]
|
||||
|
||||
sortedEntries.forEach((entry, index) => {
|
||||
colorsByKey.set(entry.key, getPaletteColorForIndex(index, palette))
|
||||
})
|
||||
@@ -340,6 +344,27 @@ function buildPaletteColorsByDownloadRank(
|
||||
return colorsByKey
|
||||
}
|
||||
|
||||
function isExcludedFromPaletteRank(breakdownValues: readonly string[]): boolean {
|
||||
return breakdownValues.some(
|
||||
(value) =>
|
||||
isUnknownAnalyticsBreakdownValue(value) || isNoDependentAnalyticsBreakdownValue(value),
|
||||
)
|
||||
}
|
||||
|
||||
function buildPaletteRankEntry(
|
||||
key: string,
|
||||
breakdownValues: readonly string[],
|
||||
total: number,
|
||||
formatLabel: (breakdownValues: readonly string[]) => string,
|
||||
): PaletteRankEntry {
|
||||
return {
|
||||
key,
|
||||
label: formatLabel(breakdownValues),
|
||||
total,
|
||||
excludedFromRank: isExcludedFromPaletteRank(breakdownValues),
|
||||
}
|
||||
}
|
||||
|
||||
export function getMetricValue(
|
||||
point: Labrinth.Analytics.v3.ProjectAnalytics,
|
||||
activeStat: AnalyticsDashboardStat,
|
||||
@@ -499,11 +524,14 @@ export function buildChartDatasets(
|
||||
})
|
||||
|
||||
const colorsByBreakdown = buildPaletteColorsByDownloadRank(
|
||||
Array.from(dataByBreakdown.keys()).map((breakdownKey) => ({
|
||||
key: breakdownKey,
|
||||
label: formatChartBreakdownLabels(breakdownValuesByKey.get(breakdownKey) ?? []),
|
||||
total: downloadTotalsByBreakdown.get(breakdownKey) ?? 0,
|
||||
})),
|
||||
Array.from(dataByBreakdown.keys()).map((breakdownKey) =>
|
||||
buildPaletteRankEntry(
|
||||
breakdownKey,
|
||||
breakdownValuesByKey.get(breakdownKey) ?? [],
|
||||
downloadTotalsByBreakdown.get(breakdownKey) ?? 0,
|
||||
formatChartBreakdownLabels,
|
||||
),
|
||||
),
|
||||
palette,
|
||||
)
|
||||
|
||||
@@ -538,7 +566,7 @@ export function buildChartDatasets(
|
||||
? isNoDependentAnalyticsBreakdownValue(dependentProjectId)
|
||||
? formatMessage(analyticsMessages.noDependentTooltip)
|
||||
: isUnknownAnalyticsBreakdownValue(dependentProjectId)
|
||||
? formatMessage(analyticsMessages.unknown)
|
||||
? formatMessage(analyticsMessages.unknownDependentTooltip)
|
||||
: formatDependentProjectDatasetTooltip(
|
||||
versionName,
|
||||
dependentProjectName,
|
||||
@@ -675,11 +703,14 @@ export function buildChartDatasets(
|
||||
})
|
||||
|
||||
const colorsByBreakdown = buildPaletteColorsByDownloadRank(
|
||||
Array.from(dataByProjectBreakdown.keys()).map((breakdownKey) => ({
|
||||
key: breakdownKey,
|
||||
label: formatChartBreakdownLabels(breakdownValuesByKey.get(breakdownKey) ?? []),
|
||||
total: downloadTotalsByProjectBreakdown.get(breakdownKey) ?? 0,
|
||||
})),
|
||||
Array.from(dataByProjectBreakdown.keys()).map((breakdownKey) =>
|
||||
buildPaletteRankEntry(
|
||||
breakdownKey,
|
||||
breakdownValuesByKey.get(breakdownKey) ?? [],
|
||||
downloadTotalsByProjectBreakdown.get(breakdownKey) ?? 0,
|
||||
formatChartBreakdownLabels,
|
||||
),
|
||||
),
|
||||
palette,
|
||||
)
|
||||
|
||||
|
||||
@@ -92,6 +92,11 @@ export const analyticsMessages = defineMessages({
|
||||
id: 'analytics.value.no-dependent-tooltip',
|
||||
defaultMessage: 'Downloaded for reasons other than being a dependency',
|
||||
},
|
||||
unknownDependentTooltip: {
|
||||
id: 'analytics.value.unknown-dependent-tooltip',
|
||||
defaultMessage:
|
||||
"There's no metadata to determine which dependent project this download attributes to.",
|
||||
},
|
||||
other: {
|
||||
id: 'analytics.value.other',
|
||||
defaultMessage: 'Other',
|
||||
|
||||
@@ -515,7 +515,7 @@ function getDependentProjectTooltip(row: AnalyticsTableRow) {
|
||||
return formatMessage(analyticsMessages.noDependentTooltip)
|
||||
}
|
||||
if (isUnknownAnalyticsBreakdownValue(row.breakdownValues.dependent_project_download)) {
|
||||
return formatMessage(analyticsMessages.unknown)
|
||||
return formatMessage(analyticsMessages.unknownDependentTooltip)
|
||||
}
|
||||
|
||||
const dependencyProjectIds = new Set(row.dependentOnProjectIds)
|
||||
|
||||
@@ -1,127 +0,0 @@
|
||||
<template>
|
||||
<ButtonStyled size="large" circular>
|
||||
<PopoutMenu
|
||||
v-if="authUser"
|
||||
:tooltip="
|
||||
saved ? formatMessage(commonMessages.savedLabel) : formatMessage(commonMessages.saveButton)
|
||||
"
|
||||
from="top-right"
|
||||
:aria-label="formatMessage(commonMessages.saveButton)"
|
||||
:dropdown-id="`${baseId}-save`"
|
||||
>
|
||||
<BookmarkIcon aria-hidden="true" :fill="saved ? 'currentColor' : 'none'" />
|
||||
<template #menu>
|
||||
<StyledInput
|
||||
v-model="displayCollectionsSearch"
|
||||
:placeholder="formatMessage(commonMessages.searchPlaceholder)"
|
||||
wrapper-class="menu-search"
|
||||
/>
|
||||
<div v-if="filteredCollections.length > 0" class="collections-list text-primary">
|
||||
<Checkbox
|
||||
v-for="option in filteredCollections"
|
||||
:key="option.id"
|
||||
:model-value="option.projects.includes(projectId)"
|
||||
class="popout-checkbox"
|
||||
@update:model-value="() => collectProject(option, projectId)"
|
||||
>
|
||||
{{ option.name }}
|
||||
</Checkbox>
|
||||
</div>
|
||||
|
||||
<div v-else class="menu-text">
|
||||
<p class="popout-text">{{ noCollectionsLabel }}</p>
|
||||
</div>
|
||||
<ButtonStyled>
|
||||
<button class="mx-3 mb-3" @click="createCollection">
|
||||
<PlusIcon aria-hidden="true" />
|
||||
{{ createNewCollectionLabel }}
|
||||
</button>
|
||||
</ButtonStyled>
|
||||
</template>
|
||||
</PopoutMenu>
|
||||
<nuxt-link
|
||||
v-else
|
||||
v-tooltip="formatMessage(commonMessages.saveButton)"
|
||||
:to="signInRoute"
|
||||
:aria-label="formatMessage(commonMessages.saveButton)"
|
||||
>
|
||||
<BookmarkIcon aria-hidden="true" />
|
||||
</nuxt-link>
|
||||
</ButtonStyled>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { BookmarkIcon, PlusIcon } from '@modrinth/assets'
|
||||
import {
|
||||
ButtonStyled,
|
||||
Checkbox,
|
||||
commonMessages,
|
||||
PopoutMenu,
|
||||
StyledInput,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
import { computed, ref } from 'vue'
|
||||
import type { RouteLocationRaw } from 'vue-router'
|
||||
|
||||
type CollectionOption = {
|
||||
id: string
|
||||
name: string
|
||||
projects: string[]
|
||||
}
|
||||
|
||||
const props = defineProps<{
|
||||
authUser?: unknown
|
||||
signInRoute: RouteLocationRaw
|
||||
projectId: string
|
||||
collections: CollectionOption[]
|
||||
saved: boolean
|
||||
baseId: string
|
||||
noCollectionsLabel: string
|
||||
createNewCollectionLabel: string
|
||||
collectProject: (option: CollectionOption, projectId: string) => void | Promise<void>
|
||||
createCollection: (event: MouseEvent) => void
|
||||
}>()
|
||||
|
||||
const { formatMessage } = useVIntl()
|
||||
const displayCollectionsSearch = ref('')
|
||||
|
||||
const filteredCollections = computed(() =>
|
||||
props.collections
|
||||
.filter((collection) =>
|
||||
collection.name.toLowerCase().includes(displayCollectionsSearch.value.toLowerCase()),
|
||||
)
|
||||
.slice()
|
||||
.sort((a, b) => a.name.localeCompare(b.name)),
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.popout-checkbox {
|
||||
padding: var(--gap-sm) var(--gap-md);
|
||||
white-space: nowrap;
|
||||
|
||||
&:hover {
|
||||
filter: brightness(0.95);
|
||||
}
|
||||
}
|
||||
|
||||
.menu-text {
|
||||
padding: 0 var(--gap-md);
|
||||
font-size: var(--font-size-nm);
|
||||
color: var(--color-secondary);
|
||||
}
|
||||
|
||||
.menu-search {
|
||||
margin: var(--gap-sm) var(--gap-md);
|
||||
width: calc(100% - var(--gap-md) * 2);
|
||||
}
|
||||
|
||||
.collections-list {
|
||||
max-height: 40rem;
|
||||
overflow-y: auto;
|
||||
background-color: var(--color-bg);
|
||||
border-radius: var(--radius-md);
|
||||
margin: var(--gap-sm) var(--gap-md);
|
||||
padding: var(--gap-sm);
|
||||
}
|
||||
</style>
|
||||
@@ -73,6 +73,7 @@
|
||||
:options="[userOption, ...ownerOptions]"
|
||||
searchable
|
||||
:disabled="hasHitLimit"
|
||||
select-search-text-on-focus
|
||||
show-icon-in-selected
|
||||
/>
|
||||
<span>{{ formatMessage(messages.ownerDescription) }}</span>
|
||||
@@ -129,7 +130,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { Labrinth } from '@modrinth/api-client'
|
||||
import { PlusIcon, XIcon } from '@modrinth/assets'
|
||||
import { OrganizationIcon, PlusIcon, XIcon } from '@modrinth/assets'
|
||||
import {
|
||||
ButtonStyled,
|
||||
Chips,
|
||||
@@ -362,7 +363,13 @@ async function fetchOrganizations() {
|
||||
}),
|
||||
),
|
||||
)
|
||||
: undefined,
|
||||
: markRaw(
|
||||
defineAsyncComponent(() =>
|
||||
Promise.resolve({
|
||||
setup: () => () => h(OrganizationIcon, { class: 'size-5' }),
|
||||
}),
|
||||
),
|
||||
),
|
||||
}))
|
||||
if (props.organizationId) owner.value = props.organizationId
|
||||
} catch (err) {
|
||||
@@ -395,6 +402,7 @@ async function createProject() {
|
||||
server_side: 'required',
|
||||
license_id: 'LicenseRef-Unknown',
|
||||
is_draft: true,
|
||||
organization_id: owner.value !== 'self' ? owner.value : undefined,
|
||||
}
|
||||
|
||||
formData.append('data', JSON.stringify(projectData))
|
||||
|
||||
@@ -193,6 +193,7 @@ async function setStatus(status: Labrinth.Projects.v2.ProjectStatus) {
|
||||
isLoadingStatusAction.value = true
|
||||
try {
|
||||
await client.labrinth.projects_v2.edit(props.item.project.id, { status })
|
||||
emit('refetch')
|
||||
|
||||
projectStatus.value = status
|
||||
} catch (err) {
|
||||
@@ -1206,7 +1207,7 @@ async function handleSubmitReview(verdict: 'safe' | 'unsafe') {
|
||||
</OverflowMenu>
|
||||
</ButtonStyled>
|
||||
<ButtonStyled v-if="featureFlags.developerMode" type="outlined">
|
||||
<button @click="emit('showMaliciousSummary', unsafeFiles)">Debug Summary</button>
|
||||
<button @click="emit('showMaliciousSummary', unsafeFiles)">Debug</button>
|
||||
</ButtonStyled>
|
||||
</template>
|
||||
</ThreadView>
|
||||
|
||||
@@ -21,6 +21,7 @@ export const DEFAULT_FEATURE_FLAGS = validateValues({
|
||||
developerMode: false,
|
||||
demoMode: false,
|
||||
showVersionFilesInTable: false,
|
||||
showVersionEnvironmentColumn: false,
|
||||
showAdsWithPlus: false,
|
||||
alwaysShowChecklistAsPopup: true,
|
||||
testTaxForm: false,
|
||||
@@ -54,6 +55,7 @@ export const DEFAULT_FEATURE_FLAGS = validateValues({
|
||||
showModeratorProjectMemberUi: false,
|
||||
showModeratorPrivateMessageHighlight: true,
|
||||
archonApiStaging: false,
|
||||
showHostingAccessInstanceAuditLog: false,
|
||||
versionDevInfoCollapsed: true,
|
||||
alwaysShowVersionDevInfo: false,
|
||||
} as const)
|
||||
|
||||
@@ -21,8 +21,6 @@ import {
|
||||
readStoredServerInstallQueue,
|
||||
removePendingServerContentInstall,
|
||||
requestInstall,
|
||||
stripServerRuntimeInstallFilters,
|
||||
stripServerRuntimeInstallOverrides,
|
||||
useVIntl,
|
||||
writePendingServerContentInstallBaseline,
|
||||
writeStoredServerInstallQueue,
|
||||
@@ -67,11 +65,11 @@ const messages = defineMessages({
|
||||
},
|
||||
noServerWorld: {
|
||||
id: 'discover.install.error.no-server-world',
|
||||
defaultMessage: 'No server instance is available for install.',
|
||||
defaultMessage: 'No server world is available for install.',
|
||||
},
|
||||
backToCreateInstance: {
|
||||
id: 'discover.install.back-to-create-instance',
|
||||
defaultMessage: 'Back to create instance',
|
||||
backToSetup: {
|
||||
id: 'discover.install.back-to-setup',
|
||||
defaultMessage: 'Back to setup',
|
||||
},
|
||||
cancelReset: {
|
||||
id: 'discover.install.cancel-reset',
|
||||
@@ -85,18 +83,6 @@ const messages = defineMessages({
|
||||
id: 'discover.install.heading.reset-modpack',
|
||||
defaultMessage: 'Selecting modpack to install after reset',
|
||||
},
|
||||
createInstanceModpackHeading: {
|
||||
id: 'discover.install.heading.create-instance-modpack',
|
||||
defaultMessage: 'Selecting modpack base',
|
||||
},
|
||||
createInstanceName: {
|
||||
id: 'discover.install.create-instance-name',
|
||||
defaultMessage: 'Create instance',
|
||||
},
|
||||
worldFallbackName: {
|
||||
id: 'discover.install.world-fallback-name',
|
||||
defaultMessage: 'Instance',
|
||||
},
|
||||
})
|
||||
|
||||
function getQueuedInstallOwnerFallback(project: ServerInstallSearchResult) {
|
||||
@@ -159,11 +145,6 @@ export function useServerInstallContent({
|
||||
return enabled
|
||||
}),
|
||||
})
|
||||
const { data: serverFullData } = useQuery({
|
||||
queryKey: computed(() => ['servers', 'v1', 'detail', currentServerId.value ?? ''] as const),
|
||||
queryFn: () => client.archon.servers_v1.get(currentServerId.value!),
|
||||
enabled: computed(() => !!currentServerId.value),
|
||||
})
|
||||
|
||||
watch(serverData, (val) =>
|
||||
debug('serverData changed:', val?.server_id, val?.name, val?.loader, val?.mc_version),
|
||||
@@ -206,55 +187,14 @@ export function useServerInstallContent({
|
||||
},
|
||||
}
|
||||
|
||||
const contentQueryKey = computed(
|
||||
() =>
|
||||
['content', 'list', 'v1', currentServerId.value ?? '', currentWorldId.value ?? null] as const,
|
||||
)
|
||||
const contentQueryKey = computed(() => ['content', 'list', currentServerId.value ?? ''] as const)
|
||||
const { data: serverContentData, error: serverContentError } = useQuery({
|
||||
queryKey: contentQueryKey,
|
||||
queryFn: () =>
|
||||
client.archon.content_v1.getAddons(currentServerId.value!, currentWorldId.value!, {
|
||||
from_modpack: false,
|
||||
}),
|
||||
client.archon.content_v1.getAddons(currentServerId.value!, currentWorldId.value!),
|
||||
enabled: computed(() => !!currentServerId.value && !!currentWorldId.value),
|
||||
})
|
||||
|
||||
const currentWorld = computed(() => {
|
||||
if (fromContext.value === 'create-instance') return null
|
||||
|
||||
const full = serverFullData.value
|
||||
if (!full) return null
|
||||
|
||||
const worldId = currentWorldId.value
|
||||
if (worldId) {
|
||||
return full.worlds.find((world) => world.id === worldId) ?? null
|
||||
}
|
||||
|
||||
return full.worlds.find((world) => world.is_active) ?? full.worlds[0] ?? null
|
||||
})
|
||||
const serverContextWorldGameVersion = computed(() => {
|
||||
const worldGameVersion = currentWorld.value?.content?.game_version
|
||||
if (currentWorldId.value) return worldGameVersion ?? null
|
||||
return worldGameVersion ?? serverData.value?.mc_version ?? null
|
||||
})
|
||||
const serverContextWorldLoader = computed(() => {
|
||||
const worldLoader = currentWorld.value?.content?.modloader
|
||||
if (currentWorldId.value) return worldLoader ?? null
|
||||
return worldLoader ?? serverData.value?.loader ?? null
|
||||
})
|
||||
const serverContextWorldLoaderVersion = computed(() => {
|
||||
const worldLoaderVersion = currentWorld.value?.content?.modloader_version
|
||||
if (currentWorldId.value) return worldLoaderVersion ?? null
|
||||
return worldLoaderVersion ?? serverData.value?.loader_version ?? null
|
||||
})
|
||||
const serverContentProjectType = computed(() => {
|
||||
const loader = serverContextWorldLoader.value?.toLowerCase()
|
||||
if (!loader) return null
|
||||
if (loader === 'paper' || loader === 'purpur') return 'plugin'
|
||||
if (loader === 'vanilla') return 'datapack'
|
||||
return 'mod'
|
||||
})
|
||||
|
||||
function setBrowseSearchState(state: ServerInstallBrowseSearchState) {
|
||||
browseSearchState = state
|
||||
}
|
||||
@@ -391,12 +331,12 @@ export function useServerInstallContent({
|
||||
)
|
||||
const filters: FilterValue[] = []
|
||||
if (serverData.value && projectType.value?.id !== 'modpack') {
|
||||
const gameVersion = serverContextWorldGameVersion.value
|
||||
const gameVersion = serverData.value.mc_version
|
||||
if (gameVersion) {
|
||||
filters.push({ type: 'game_version', option: gameVersion })
|
||||
}
|
||||
|
||||
const platform = serverContextWorldLoader.value?.toLowerCase().replaceAll('_', '')
|
||||
const platform = serverData.value.loader?.toLowerCase()
|
||||
|
||||
const modLoaders = ['fabric', 'forge', 'quilt', 'neoforge']
|
||||
if (platform && modLoaders.includes(platform)) {
|
||||
@@ -454,8 +394,8 @@ export function useServerInstallContent({
|
||||
function getServerInstallTargetPreferences(contentType: BrowseInstallContentType) {
|
||||
return getTargetInstallPreferences(
|
||||
{
|
||||
gameVersion: serverContextWorldGameVersion.value,
|
||||
loader: serverContextWorldLoader.value,
|
||||
gameVersion: serverData.value?.mc_version,
|
||||
loader: serverData.value?.loader,
|
||||
},
|
||||
contentType,
|
||||
)
|
||||
@@ -472,11 +412,7 @@ export function useServerInstallContent({
|
||||
|
||||
async function resolveQueuedAddonPlans(plans: BrowseInstallPlan<ServerInstallSearchResult>[]) {
|
||||
const existingProjectIds = getServerInstalledProjectIds()
|
||||
const resolvedAddons: Array<{
|
||||
project_id: string
|
||||
version_id: string
|
||||
kind: Archon.Content.v1.AddonKind
|
||||
}> = []
|
||||
const resolvedAddons: Array<{ project_id: string; version_id: string }> = []
|
||||
|
||||
for (const plan of plans) {
|
||||
const resolved = await client.labrinth.content_v3.resolve({
|
||||
@@ -495,7 +431,6 @@ export function useServerInstallContent({
|
||||
resolvedAddons.push({
|
||||
project_id: item.project_id,
|
||||
version_id: item.version_id,
|
||||
kind: plan.contentType as Archon.Content.v1.AddonKind,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -622,6 +557,11 @@ export function useServerInstallContent({
|
||||
}
|
||||
|
||||
async function serverInstall(project: ServerInstallSearchResult) {
|
||||
if (!serverData.value || !currentServerId.value || !currentWorldId.value) {
|
||||
handleError(new Error('No server to install to.'))
|
||||
return
|
||||
}
|
||||
|
||||
if (!browseSearchState) {
|
||||
handleError(new Error('Search state is not ready.'))
|
||||
return
|
||||
@@ -629,17 +569,6 @@ export function useServerInstallContent({
|
||||
|
||||
const contentType = getCurrentServerInstallType()
|
||||
const isModpack = contentType === 'modpack'
|
||||
const isCreateInstanceFlow =
|
||||
fromContext.value === 'create-instance' || fromContext.value === 'onboarding'
|
||||
|
||||
if (
|
||||
!serverData.value ||
|
||||
!currentServerId.value ||
|
||||
(!currentWorldId.value && (!isCreateInstanceFlow || !isModpack))
|
||||
) {
|
||||
handleError(new Error('No server to install to.'))
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
if (!isModpack && queuedServerInstallProjectIds.value.has(project.project_id)) {
|
||||
@@ -655,15 +584,11 @@ export function useServerInstallContent({
|
||||
project,
|
||||
contentType,
|
||||
mode: isModpack ? 'immediate' : 'queue',
|
||||
selectedFilters: isModpack
|
||||
? []
|
||||
: stripServerRuntimeInstallFilters(browseSearchState.currentFilters.value),
|
||||
selectedFilters: isModpack ? [] : browseSearchState.currentFilters.value,
|
||||
providedFilters: isModpack ? [] : serverFilters.value,
|
||||
overriddenProvidedFilterTypes: isModpack
|
||||
? []
|
||||
: stripServerRuntimeInstallOverrides(
|
||||
browseSearchState.overriddenProvidedFilterTypes.value,
|
||||
),
|
||||
: browseSearchState.overriddenProvidedFilterTypes.value,
|
||||
targetPreferences: getServerInstallTargetPreferences(contentType),
|
||||
getProjectVersions: getInstallProjectVersions,
|
||||
queue: serverInstallQueue,
|
||||
@@ -717,41 +642,9 @@ export function useServerInstallContent({
|
||||
}
|
||||
|
||||
async function onModpackFlowCreate(config: CreationFlowContextValue) {
|
||||
if (!currentServerId.value || !config.modpackSelection.value) return
|
||||
if (!currentServerId.value || !currentWorldId.value || !config.modpackSelection.value) return
|
||||
|
||||
try {
|
||||
if (fromContext.value === 'create-instance' || fromContext.value === 'onboarding') {
|
||||
const createdWorld = await client.archon.servers_v1.createWorld(currentServerId.value, {
|
||||
name: config.worldName.value.trim(),
|
||||
properties: config.buildProperties(),
|
||||
content: {
|
||||
content_variant: 'modpack',
|
||||
spec: {
|
||||
platform: 'modrinth',
|
||||
project_id: config.modpackSelection.value.projectId,
|
||||
version_id: config.modpackSelection.value.versionId,
|
||||
},
|
||||
},
|
||||
} satisfies Archon.Servers.v1.CreateWorld)
|
||||
|
||||
if (fromContext.value === 'onboarding') {
|
||||
await client.archon.servers_v1.endIntro(currentServerId.value)
|
||||
}
|
||||
await Promise.all([
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['servers', 'worlds', 'summary', 'v1', currentServerId.value],
|
||||
}),
|
||||
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', currentServerId.value] }),
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['servers', 'v1', 'detail', currentServerId.value],
|
||||
}),
|
||||
])
|
||||
navigateTo(getServerInstanceContentPath(currentServerId.value, createdWorld.id))
|
||||
return
|
||||
}
|
||||
|
||||
if (!currentWorldId.value) return
|
||||
|
||||
await client.archon.content_v1.installContent(currentServerId.value, currentWorldId.value, {
|
||||
content_variant: 'modpack',
|
||||
spec: {
|
||||
@@ -763,7 +656,13 @@ export function useServerInstallContent({
|
||||
properties: config.buildProperties(),
|
||||
} satisfies Archon.Content.v1.InstallWorldContent)
|
||||
|
||||
navigateTo(`/hosting/manage/${currentServerId.value}?openSettings=installation`)
|
||||
if (fromContext.value === 'onboarding') {
|
||||
await client.archon.servers_v1.endIntro(currentServerId.value)
|
||||
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', currentServerId.value] })
|
||||
navigateTo(`/hosting/manage/${currentServerId.value}/content`)
|
||||
} else {
|
||||
navigateTo(`/hosting/manage/${currentServerId.value}?openSettings=installation`)
|
||||
}
|
||||
} catch (e) {
|
||||
handleError(new Error(`Error installing modpack: ${e}`))
|
||||
config.loading.value = false
|
||||
@@ -773,22 +672,14 @@ export function useServerInstallContent({
|
||||
const serverBackUrl = computed(() => {
|
||||
if (!serverData.value) return ''
|
||||
const id = serverData.value.server_id
|
||||
if (fromContext.value === 'create-instance')
|
||||
return `/hosting/manage/${id}/instances?resumeModal=create-instance`
|
||||
if (fromContext.value === 'onboarding') return `/hosting/manage/${id}?resumeModal=setup-type`
|
||||
if (fromContext.value === 'reset-server')
|
||||
return `/hosting/manage/${id}?openSettings=installation`
|
||||
return getServerInstanceContentPath(id, currentWorldId.value)
|
||||
return `/hosting/manage/${id}/content`
|
||||
})
|
||||
|
||||
function getServerInstanceContentPath(serverId: string, worldId: string | null) {
|
||||
const base = `/hosting/manage/${encodeURIComponent(serverId)}/instances`
|
||||
return worldId ? `${base}/${encodeURIComponent(worldId)}` : base
|
||||
}
|
||||
|
||||
const serverBackLabel = computed(() => {
|
||||
if (fromContext.value === 'create-instance') return formatMessage(messages.backToCreateInstance)
|
||||
if (fromContext.value === 'onboarding') return formatMessage(messages.backToCreateInstance)
|
||||
if (fromContext.value === 'onboarding') return formatMessage(messages.backToSetup)
|
||||
if (fromContext.value === 'reset-server') return formatMessage(messages.cancelReset)
|
||||
return formatMessage(messages.backToServer)
|
||||
})
|
||||
@@ -796,20 +687,15 @@ export function useServerInstallContent({
|
||||
const serverBrowseHeading = computed(() =>
|
||||
fromContext.value === 'reset-server'
|
||||
? formatMessage(messages.resetModpackHeading)
|
||||
: fromContext.value === 'create-instance' || fromContext.value === 'onboarding'
|
||||
? formatMessage(messages.createInstanceModpackHeading)
|
||||
: formatMessage(commonMessages.installingContentLabel),
|
||||
: formatMessage(commonMessages.installingContentLabel),
|
||||
)
|
||||
|
||||
const installContext = computed(() => {
|
||||
if (!serverData.value) return null
|
||||
return {
|
||||
name:
|
||||
fromContext.value === 'create-instance'
|
||||
? formatMessage(messages.createInstanceName)
|
||||
: (currentWorld.value?.name ?? formatMessage(messages.worldFallbackName)),
|
||||
loader: serverContextWorldLoader.value ?? '',
|
||||
loaderVersion: serverContextWorldLoaderVersion.value ?? '',
|
||||
gameVersion: serverContextWorldGameVersion.value ?? '',
|
||||
name: serverData.value.name,
|
||||
loader: serverData.value.loader ?? '',
|
||||
gameVersion: serverData.value.mc_version ?? '',
|
||||
serverId: currentServerId.value,
|
||||
upstream: serverData.value.upstream,
|
||||
iconSrc: serverIcon.value,
|
||||
@@ -823,7 +709,7 @@ export function useServerInstallContent({
|
||||
installProgress: queuedInstallProgress.value,
|
||||
clearQueued: clearQueuedServerInstalls,
|
||||
clearSelected: clearQueuedServerInstalls,
|
||||
onBack: fromContext.value === 'create-instance' ? undefined : flushQueuedServerInstalls,
|
||||
onBack: flushQueuedServerInstalls,
|
||||
discardSelectedAndBack: discardQueuedServerInstallsAndBack,
|
||||
installSelected: installQueuedServerInstallsAndBack,
|
||||
}
|
||||
@@ -875,7 +761,6 @@ export function useServerInstallContent({
|
||||
currentWorldId,
|
||||
serverData,
|
||||
serverContentData,
|
||||
serverContentProjectType,
|
||||
serverFilters,
|
||||
serverHideInstalled,
|
||||
hideSelectedServerInstalls,
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
<div class="pointer-events-none absolute inset-0 z-[-1]">
|
||||
<div id="absolute-background-teleport" class="relative"></div>
|
||||
</div>
|
||||
<div
|
||||
class="pride-backdrop pointer-events-none absolute inset-0 z-[-1]"
|
||||
:class="{ shown: showPrideBackdrop }"
|
||||
></div>
|
||||
<div class="pointer-events-none absolute inset-0 z-50">
|
||||
<div
|
||||
class="over-the-top-random-animation"
|
||||
@@ -801,6 +805,7 @@ import ProjectCreateModal from '~/components/ui/create/ProjectCreateModal.vue'
|
||||
import ModrinthFooter from '~/components/ui/ModrinthFooter.vue'
|
||||
import { getSignInRouteObj } from '~/composables/auth.ts'
|
||||
import { errors as generatedStateErrors } from '~/generated/state.json'
|
||||
import { provideCurrentProjectId } from '~/providers/current-project.ts'
|
||||
import { getProjectTypeMessage } from '~/utils/i18n-project-type.ts'
|
||||
import { hasActiveMidas } from '~/utils/user-membership.ts'
|
||||
|
||||
@@ -867,6 +872,32 @@ const showTinMismatchBanner = computed(() => {
|
||||
return !!auth.value.user && status === 'tin-mismatch'
|
||||
})
|
||||
|
||||
const PRIDE_COLLECTION_ID = 'M4c3ITvd'
|
||||
const PRIDE_ARTICLE_SLUGS = ['pride-campaign-2025', 'pride-campaign-2026', 'proud-of-you-2026']
|
||||
const PRIDE_CACHE_TIME = 1000 * 60 * 60 * 24
|
||||
|
||||
const { data: prideCollection } = useQuery({
|
||||
queryKey: computed(() => ['collection', PRIDE_COLLECTION_ID]),
|
||||
queryFn: () => client.labrinth.collections.get(PRIDE_COLLECTION_ID),
|
||||
staleTime: PRIDE_CACHE_TIME,
|
||||
gcTime: PRIDE_CACHE_TIME,
|
||||
})
|
||||
|
||||
const prideProjectIds = computed(() => new Set(prideCollection.value?.projects ?? []))
|
||||
|
||||
const currentProjectId = ref()
|
||||
provideCurrentProjectId(currentProjectId)
|
||||
|
||||
const showPrideBackdrop = computed(() => {
|
||||
if (PRIDE_ARTICLE_SLUGS.includes(route.params.slug)) {
|
||||
return true
|
||||
}
|
||||
if (route.params.collection === PRIDE_COLLECTION_ID) {
|
||||
return true
|
||||
}
|
||||
return !!currentProjectId.value && prideProjectIds.value.has(currentProjectId.value)
|
||||
})
|
||||
|
||||
const basePopoutId = useId()
|
||||
|
||||
async function fetchIntercomToken() {
|
||||
@@ -1695,4 +1726,21 @@ const { cycle: changeTheme } = useTheme()
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
.pride-backdrop {
|
||||
background-image: linear-gradient(to right, #c20732, #f57203, #ffd632, #21ca8b, #2f9ff2, #e420fc);
|
||||
mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0) 80%);
|
||||
height: 30rem;
|
||||
opacity: 0;
|
||||
transition: opacity 1s ease;
|
||||
}
|
||||
|
||||
.pride-backdrop.shown {
|
||||
opacity: 0.08;
|
||||
}
|
||||
|
||||
.light-mode .pride-backdrop.shown,
|
||||
.light .pride-backdrop.shown {
|
||||
opacity: 0.15;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -356,18 +356,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "تغيير كلمة المرور"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "يرجى إدخال رمز التحقق الثنائي للمتابعة."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "أدخل رمز التحقق الثنائي"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "أدخل الرمز..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "تسجيل الدخول باستخدام"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "تسجيل الدخول"
|
||||
},
|
||||
@@ -380,9 +371,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "إنشاء حساب"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "سجّل باستخدام"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "إعدادات الحساب"
|
||||
},
|
||||
@@ -926,18 +914,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "يرجى مراجعة بيانات تعريف البيئة"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "صعوداً"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "نزولا"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "الإسم"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "الحالة"
|
||||
},
|
||||
"dashboard.revenue.available-now": {
|
||||
"message": "متاح الآن"
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -254,18 +254,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Nulstil din adgangskode"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Indtast en to-faktor-kode for at fortsætte."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Indtast to-faktor-kode"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Indtast kode..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Log ind med"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Log ind"
|
||||
},
|
||||
@@ -278,9 +269,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Tilmeld"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Tilmeld dig med"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Kontoindstillinger"
|
||||
},
|
||||
|
||||
@@ -23,6 +23,15 @@
|
||||
"analytics.breakdown.country": {
|
||||
"message": "Land"
|
||||
},
|
||||
"analytics.breakdown.dependent-on": {
|
||||
"message": "Abhängig von"
|
||||
},
|
||||
"analytics.breakdown.dependent-project-download": {
|
||||
"message": "Abhängiges Projekt"
|
||||
},
|
||||
"analytics.breakdown.dependent-project-type": {
|
||||
"message": "Abhängiger Projekttyp"
|
||||
},
|
||||
"analytics.breakdown.download-reason": {
|
||||
"message": "Download-Grund"
|
||||
},
|
||||
@@ -38,6 +47,9 @@
|
||||
"analytics.breakdown.loader": {
|
||||
"message": "Loader"
|
||||
},
|
||||
"analytics.breakdown.members": {
|
||||
"message": "Mitglied"
|
||||
},
|
||||
"analytics.breakdown.monetization": {
|
||||
"message": "Monetarisierung"
|
||||
},
|
||||
@@ -134,6 +146,24 @@
|
||||
"analytics.chart.render-limit.header": {
|
||||
"message": "Alle {count} Linien im Diagramm anzeigen?"
|
||||
},
|
||||
"analytics.chart.table-selection.all": {
|
||||
"message": "Zeige alle {itemType, select, project {{count, plural, one {Projekt} other {Projekte}}} country {{count, plural, one {Land} other {Länder}}} monetization {{count, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{count, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{count, plural, one {Downloadgrund} other {Downloadgründe}}} member {{count, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{count, plural, one {Projektversion} other {Projektversionen}}} loader {{count, plural, one {Loader} other {Loader}}} gameVersion {{count, plural, one {Spielversion} other {Spielversionen}}} other {{count, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.table-selection.count": {
|
||||
"message": "Zeige {count} {itemType, select, project {{count, plural, one {Projekt} other {Projekte}}} country {{count, plural, one {Land} other {Länder}}} monetization {{count, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{count, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{count, plural, one {Downloadgrund} other {Downloadgründe}}} member {{count, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{count, plural, one {Projektversion} other {Projektversionen}}} loader {{count, plural, one {Loader} other {Loader}}} gameVersion {{count, plural, one {Spielversion} other {Spielversionen}}} other {{count, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.table-selection.limited": {
|
||||
"message": "Zeige {limit} {itemType, select, project {{limit, plural, one {Projekt} other {Projekte}}} country {{limit, plural, one {Land} other {Länder}}} monetization {{limit, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{limit, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{limit, plural, one {Downloadgrund} other {Downloadgründe}}} member {{limit, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{limit, plural, one {Projektversion} other {Projektversionen}}} loader {{limit, plural, one {Loader} other {Loader}}} gameVersion {{limit, plural, one {Spielversion} other {Spielversionen}}} other {{limit, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.table-selection.top": {
|
||||
"message": "Zeige die top {count} {itemType, select, project {{count, plural, one {Projekt} other {Projekte}}} country {{count, plural, one {Land} other {Länder}}} monetization {{count, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{count, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{count, plural, one {Downloadgrund} other {Downloadgründe}}} member {{count, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{count, plural, one {Projektversion} other {Projektversionen}}} loader {{count, plural, one {Loader} other {Loader}}} gameVersion {{count, plural, one {Spielversion} other {Spielversionen}}} other {{count, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.tooltip.dependent-on-project": {
|
||||
"message": "Abhängig von {project}"
|
||||
},
|
||||
"analytics.chart.tooltip.dependent-project-version": {
|
||||
"message": "{dependentProject} abhängig von {dependencyProject}, {version}"
|
||||
},
|
||||
"analytics.chart.tooltip.duration.days": {
|
||||
"message": "{count, plural, one {# Tag} other {# Tage}}"
|
||||
},
|
||||
@@ -218,9 +248,15 @@
|
||||
"analytics.filter.search.countries": {
|
||||
"message": "Länder suchen..."
|
||||
},
|
||||
"analytics.filter.search.dependent-projects": {
|
||||
"message": "Projekte durchsuchen..."
|
||||
},
|
||||
"analytics.filter.search.download-sources": {
|
||||
"message": "Download-Quellen suchen..."
|
||||
},
|
||||
"analytics.filter.search.members": {
|
||||
"message": "Mitglieder durchsuchen..."
|
||||
},
|
||||
"analytics.filter.search.project-versions": {
|
||||
"message": "Projektversionen suchen..."
|
||||
},
|
||||
@@ -467,6 +503,12 @@
|
||||
"analytics.value.monetized": {
|
||||
"message": "Monetarisiert"
|
||||
},
|
||||
"analytics.value.no-dependent": {
|
||||
"message": "Keine"
|
||||
},
|
||||
"analytics.value.no-dependent-tooltip": {
|
||||
"message": "Aus anderen Gründen als einer Abhängigkeit heruntergeladen"
|
||||
},
|
||||
"analytics.value.none": {
|
||||
"message": "Keine"
|
||||
},
|
||||
@@ -689,12 +731,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "{appName} autorisieren"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Erforderliche Abfrageparameter für OAuth fehlen."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "Keine Weiterleitungsziel in Antwort gefunden"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Ein Fehler ist aufgetreten"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Du wirst zu <redirect-url>{url}</redirect-url> weitergeleitet"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Weiter mit {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Mindestalter"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Registrierung abschließen"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Bitte gib ein gültiges Geburtsdatum ein. Das Jahr darf nicht 0000 sein."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Ungültiges Geburtsdatum"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Geburtsdatum"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Wähle dein Geburtsdatum"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Bitte gib dein Geburtsdatum ein, bevor du fortfährst."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Geburtsdatum erforderlich"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Du erfüllst das Mindestalter für die Erstellung eines Kontos bei Modrinth nicht."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Relevanter Quellcode"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "Wir speichern dein Geburtsdatum nicht. Wir verwenden es ausschließlich bei der Registrierung, um die Einhaltung der COPPA-Vorschriften sicherzustellen."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Konto erstellen"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Sicherheitscheck"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Haltet mich per E-Mail über coole Dinge auf dem Laufenden, an denen Modrinth gerade arbeitet"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Ein Konto erstellen"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Benutzername"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Benutzername eingeben"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Wiederherstellungs-E-Mail senden"
|
||||
},
|
||||
@@ -729,23 +831,53 @@
|
||||
"message": "Dein Passwort zurücksetzen"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Bitte gib einen Zwei-Faktor-Code ein, um fortzufahren."
|
||||
"message": "Gib den 6-stelligen Code aus deiner Authentifikator-App oder einen deiner Backup-Codes ein."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Zwei-Faktor-Code eingeben"
|
||||
"message": "Zwei-Faktor-Authentifizierung"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Code eingeben..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Weiter mit E-Mail"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Weiter mit Passkey"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Registrieren"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Passwort vergessen"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Zuletzt benutzt"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Kein Account?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Anmelden mit"
|
||||
"message": "Einloggen"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Anmelden"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Mindestalter"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Mit E-Mail fortfahren"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Durch das erstellen eines Kontos stimmst du den <terms-link>Nutzungsbedingungen</terms-link> und <privacy-policy-link>Datenschutzrichtlinien</privacy-policy-link> von Modrinth zu."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Weniger Optionen anzeigen"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Andere Optionen anzeigen"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Du hast bereits ein Konto?"
|
||||
},
|
||||
@@ -753,11 +885,14 @@
|
||||
"message": "Registrieren"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Registrieren mit"
|
||||
"message": "Account erstellen"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Kontoeinstellungen"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Mods entdecken"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Deine E-Mail ist bereits verifiziert!"
|
||||
},
|
||||
@@ -776,6 +911,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "E-Mail-Veifizierung fehlgeschlagen"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "Eine E-Mail an {email} wurde zur Verifikation deines Accounts geschickt."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "E-Mail gesendet"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Ein Fehler ist aufgetreten"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Deine E-Mail-Adresse wurde erfolgreich verifiziert!"
|
||||
},
|
||||
@@ -1490,9 +1634,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Benachrichtigungen werden geladen..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Du kannst mehrere Projekte gleichzeitig bearbeiten, indem du sie unten auswählst."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Serverprojekte understützen Massenbearbeitung nicht"
|
||||
},
|
||||
@@ -1568,24 +1709,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Bitte überprüfe die Umgebungsmetadaten"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Aufsteigend"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Absteigend"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Name"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Art"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Icon"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1805,6 +1928,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Zurück zum Server"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Zurück zur Einrichtung"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Reset abbrechen"
|
||||
},
|
||||
@@ -3324,43 +3450,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung fgolgender Dateien hast; alle zurückgehaltenen Versionen werden automatisch veröffentlicht."
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung folgender Dateien hast. Danach werden die zurückgehaltenen Versionen automatisch veröffentlicht."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung fgolgender Dateien hast, bevor du dein Projekt zur überprüfung einreichen kannst."
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung aller folgenden Dateien hast, bevor du dein Projekt zur Überprüfung einreichst."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Unbekannter eingebetteter Inhalt"
|
||||
"message": "Unbekannter externer Inhalt"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "Das Moderationsteam von Modrinth hat die von dir für einige externe Inhalte vorgelegten Berechtigungsnachweise abgelehnt. Bitte überprüfe die unten aufgeführten abgelehnten Einträge und lege zulässige Nachweise vor oder entfernen die Inhalte."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Manche Beweise wurden abgelehnt"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Alle minimieren"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Alle externen Inhalte haben Quellenangaben."
|
||||
"message": "Alle externen Inhalte sind mit Erlaubnisangaben versehen, und die Quellenangaben wurden angegeben."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Zuordnungen abgschlossen!"
|
||||
"message": "Genehmigungen abgeschlossen!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Keine deiner Versionen enrhalten externe Inhalte, also musst du dir keine Sorgen über die Einholung von Berechtigungen machen."
|
||||
"message": "Keine der Versionen deines Projekts enthält externe Inhalte, weshalb du dir keine Gedanken über die Einholung von Genehmigungen machen musst."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Du bist startklar!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Alle anzeigen"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Du hast keine Berechtigung, einige der von dir hinzugefügten externen Inhalte weiterzuverbreiten. Um auf Modrinth veröffentlichen zu können, entferne bitte die urheberrechtswidrigen Inhalte."
|
||||
"message": "Möglicherweise verfügst du nicht über die erforderliche Genehmigung zur Weitergabe einiger externer Inhalte in deinem Projekt. Um dein Projekt auf Modrinth zu veröffentlichen, entferne bitte diese Inhalte oder lege einen Nachweis vor, dass du über die erforderliche Genehmigung zur Nutzung verfügst."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Einige Inhalte können nicht enthalten sein"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Wenn du Inhalte einbindest, welche nicht auf Modrinth gehostet werden, musst du uns deren Quelle mitteilen und bestätigen, dass du die Berechtigung zur Verbreitung der Dateien hast. In <link>unserer Anleitung (Englisch)</link> lernst du, wie du dies am besten machst!"
|
||||
"message": "Wenn du Inhalte einbindest, welche nicht auf Modrinth gehostet werden, musst du uns deren Quelle mitteilen und bestätigen, dass du die Berechtigung zur Verbreitung der Dateien hast. Schau dir <link>unsere Ankündigung zu diesem neuen System</link> an, um mehr zu erfahren!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Lerne wie Zuschreibungen funktionieren"
|
||||
"message": "Erfahre mehr über die Rechte zur Verbreitung"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Mehr erfahren"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "Keine externen Dateien übereinstimmen deiner Suche."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Einige der enthaltenen externen Inhalte dürfen auf Modrinth nicht verbreitet werden, da sie gegen unsere Inhaltsrichtlinien verstoßen und daher entfernt werden müssen."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {Keine Quellenangaben müssen genehmigt werden} one {# Quellenangabe muss genehmigt werden} other {# Quellenangaben müssen genehmigt werden}}"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Durchsuche {count} {count, plural, one {externes Projekt} other {externe Projekte}}..."
|
||||
"message": "Durchsuche {count} {count, plural, one {Projekt} other {Projekten}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "Meiste Dateien"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Letztens bearbeitet"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Abgelehnt"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Einstellungen"
|
||||
@@ -3920,6 +4079,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "E-Mail"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Passkey hinzufügen"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Stell sicher, dass du etwas nimmst, was du dir gut merken kannst, damit du den Passkey später identifizieren kannst."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Name"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Mein Passkey"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Verwalte deine gespeicherten Passkeys oder füge einen neuen hinzu."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Hinzugefügt {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Zuletzt benutzt {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Passkeys laden..."
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Nie benutzt"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Du hast keine registrierten Passkeys."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "Dadurch wird der Passkey „{name}“ endgültig gelöscht. Du kannst dich mit ihm nicht mehr anmelden."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Möchtest du diesen Passkey wirklich löschen?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Passkey umbenennen"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Passkeys verwalten"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Passwort hinzufügen"
|
||||
},
|
||||
@@ -4532,6 +4733,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Abonniere den Modrinth Newsletter"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Alle Versionen"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Diese Version wird endgültig gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Version löschen"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Willst du diese Version wirklich löschen?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Projekt anzeigen"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Version anzeigen"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Abhängigkeit herunterladen"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Fehler: Keine primäre Datei gefunden"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Optionales Ressourcenpaket"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Erforderliches Ressourcenpaket"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Bearbeiten"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Details bearbeiten"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Dateien bearbeiten"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Metadaten bearbeiten"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "Die Umgebung für diese Version wurde nicht angegeben."
|
||||
},
|
||||
@@ -4543,5 +4786,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Unbekannte Umgebung"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Als Mod verpacken"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Dadurch wird eine neue Version mit Unterstützung für die ausgewählten Mod-Loader erstellt. Du wirst zur neuen Version weitergeleitet und kannst diese nach deinen Wünschen bearbeiten."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Datenpaket als Mod packen"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Modloader"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Die Modloader, für die du dein Datenpaket packen möchtest."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Modloader auswählen..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Datenpaket packen"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Informationen für Entwickler"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Maven-Koordinaten:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Projekte auf Modrinth sind automatisch über ein Maven-Repository für die Verwendung mit JVM-Build-Tools wie <gradle-link>Gradle</gradle-link> verfügbar. Um mehr über die Maven-API von Modrinth zu erfahren, <article-link>klicke hier</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Hinweis: Falls verfügbar, solltest du stattdessen das Maven-Repository des Entwicklers verwenden, da dieses Informationen zu transitiven Abhängigkeiten enthält, die in der Maven-API von Modrinth fehlen. Außerdem kann es zu doppelten Abhängigkeiten kommen, wenn du für deine Abhängigkeiten sowohl Modrinth- als auch andere Maven-Repositorys verwendest, da die Gruppen-ID bei der Bereitstellung über die Maven-API von Modrinth abweicht."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "Versions-ID:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "SHA-1 kopieren"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "SHA-512 kopieren"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Diese Version wird derzeit zurückgehalten und ist nicht öffentlich gelistet. Bitte lege Nachweise vor, dass du zur Verbreitung bestimmter darin enthaltener Dateien berechtigt bist."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Wegen unbekannten eingebetteten Inhalten zurückgehalten"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,15 @@
|
||||
"analytics.breakdown.country": {
|
||||
"message": "Land"
|
||||
},
|
||||
"analytics.breakdown.dependent-on": {
|
||||
"message": "Abhängig von"
|
||||
},
|
||||
"analytics.breakdown.dependent-project-download": {
|
||||
"message": "Abhängiges Projekt"
|
||||
},
|
||||
"analytics.breakdown.dependent-project-type": {
|
||||
"message": "Abhängiger Projekttyp"
|
||||
},
|
||||
"analytics.breakdown.download-reason": {
|
||||
"message": "Downloadgrund"
|
||||
},
|
||||
@@ -38,6 +47,9 @@
|
||||
"analytics.breakdown.loader": {
|
||||
"message": "Loader"
|
||||
},
|
||||
"analytics.breakdown.members": {
|
||||
"message": "Mitglied"
|
||||
},
|
||||
"analytics.breakdown.monetization": {
|
||||
"message": "Monetarisierung"
|
||||
},
|
||||
@@ -60,7 +72,7 @@
|
||||
"message": "Alle anzeigen"
|
||||
},
|
||||
"analytics.chart.action.show-limited": {
|
||||
"message": "Zeige limitierte"
|
||||
"message": "Eingeschränkt anzeigen"
|
||||
},
|
||||
"analytics.chart.action.show-top-eight": {
|
||||
"message": "Top 8 anzeigen"
|
||||
@@ -75,13 +87,13 @@
|
||||
"message": "Anmerkungen"
|
||||
},
|
||||
"analytics.chart.controls.aria": {
|
||||
"message": "Steuerelemente für Analysediagramm, {activeCount}"
|
||||
"message": "Einstellungselemente für Analysediagramm, {activeCount}"
|
||||
},
|
||||
"analytics.chart.controls.button": {
|
||||
"message": "Einstellungen"
|
||||
},
|
||||
"analytics.chart.controls.dialog-aria": {
|
||||
"message": "Steuerelemente für Analysediagramm"
|
||||
"message": "Einstellungselemente für Analysediagramm"
|
||||
},
|
||||
"analytics.chart.controls.display": {
|
||||
"message": "Anzeigen"
|
||||
@@ -134,6 +146,24 @@
|
||||
"analytics.chart.render-limit.header": {
|
||||
"message": "Alle {count} Zeilen im Graphen anzeigen?"
|
||||
},
|
||||
"analytics.chart.table-selection.all": {
|
||||
"message": "Zeige alle {itemType, select, project {{count, plural, one {Projekt} other {Projekte}}} country {{count, plural, one {Land} other {Länder}}} monetization {{count, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{count, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{count, plural, one {Downloadgrund} other {Downloadgründe}}} member {{count, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{count, plural, one {Projektversion} other {Projektversionen}}} loader {{count, plural, one {Loader} other {Loader}}} gameVersion {{count, plural, one {Spielversion} other {Spielversionen}}} other {{count, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.table-selection.count": {
|
||||
"message": "Zeige {count} {itemType, select, project {{count, plural, one {Projekt} other {Projekte}}} country {{count, plural, one {Land} other {Länder}}} monetization {{count, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{count, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{count, plural, one {Downloadgrund} other {Downloadgründe}}} member {{count, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{count, plural, one {Projektversion} other {Projektversionen}}} loader {{count, plural, one {Loader} other {Loader}}} gameVersion {{count, plural, one {Spielversion} other {Spielversionen}}} other {{count, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.table-selection.limited": {
|
||||
"message": "Zeige {limit} {itemType, select, project {{limit, plural, one {Projekt} other {Projekte}}} country {{limit, plural, one {Land} other {Länder}}} monetization {{limit, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{limit, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{limit, plural, one {Downloadgrund} other {Downloadgründe}}} member {{limit, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{limit, plural, one {Projektversion} other {Projektversionen}}} loader {{limit, plural, one {Loader} other {Loader}}} gameVersion {{limit, plural, one {Spielversion} other {Spielversionen}}} other {{limit, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.table-selection.top": {
|
||||
"message": "Zeige die top {count} {itemType, select, project {{count, plural, one {Projekt} other {Projekte}}} country {{count, plural, one {Land} other {Länder}}} monetization {{count, plural, one {Monetarisierungswert} other {Monetarisierungswerte}}} downloadSource {{count, plural, one {Downloadquelle} other {Downloadquellen}}} downloadReason {{count, plural, one {Downloadgrund} other {Downloadgründe}}} member {{count, plural, one {Mitglied} other {Mitglieder}}} projectVersion {{count, plural, one {Projektversion} other {Projektversionen}}} loader {{count, plural, one {Loader} other {Loader}}} gameVersion {{count, plural, one {Spielversion} other {Spielversionen}}} other {{count, plural, one {Artikel} other {Artikel}}}} aus der Tabelle"
|
||||
},
|
||||
"analytics.chart.tooltip.dependent-on-project": {
|
||||
"message": "Abhängig von {project}"
|
||||
},
|
||||
"analytics.chart.tooltip.dependent-project-version": {
|
||||
"message": "{dependentProject} abhängig von {dependencyProject}, {version}"
|
||||
},
|
||||
"analytics.chart.tooltip.duration.days": {
|
||||
"message": "{count, plural, one {# Tag} other {# Tage}}"
|
||||
},
|
||||
@@ -218,9 +248,15 @@
|
||||
"analytics.filter.search.countries": {
|
||||
"message": "Länder durchsuchen..."
|
||||
},
|
||||
"analytics.filter.search.dependent-projects": {
|
||||
"message": "Projekte durchsuchen..."
|
||||
},
|
||||
"analytics.filter.search.download-sources": {
|
||||
"message": "Download-Quellen durchsuchen..."
|
||||
},
|
||||
"analytics.filter.search.members": {
|
||||
"message": "Mitglieder durchsuchen..."
|
||||
},
|
||||
"analytics.filter.search.project-versions": {
|
||||
"message": "Projektversionen durchsuchen..."
|
||||
},
|
||||
@@ -467,6 +503,12 @@
|
||||
"analytics.value.monetized": {
|
||||
"message": "Monetarisiert"
|
||||
},
|
||||
"analytics.value.no-dependent": {
|
||||
"message": "Keine"
|
||||
},
|
||||
"analytics.value.no-dependent-tooltip": {
|
||||
"message": "Aus anderen Gründen als einer Abhängigkeit heruntergeladen"
|
||||
},
|
||||
"analytics.value.none": {
|
||||
"message": "Keine"
|
||||
},
|
||||
@@ -689,12 +731,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Autorisiere {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Erforderliche Abfrageparameter für OAuth fehlen."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "Keine Weiterleitungsziel in Antwort gefunden"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Ein Fehler ist aufgetreten"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Du wirst zu <redirect-url>{url}</redirect-url> weitergeleitet"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Weiter mit {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Mindestalter"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Registrierung abschließen"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Bitte gib ein gültiges Geburtsdatum ein. Das Jahr darf nicht 0000 sein."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Ungültiges Geburtsdatum"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Geburtsdatum"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Wähle dein Geburtsdatum"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Bitte gib dein Geburtsdatum ein, bevor du fortfährst."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Geburtsdatum erforderlich"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Du erfüllst das Mindestalter für die Erstellung eines Kontos bei Modrinth nicht."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Relevanter Quellcode"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "Wir speichern dein Geburtsdatum nicht. Wir verwenden es ausschließlich bei der Registrierung, um die Einhaltung der COPPA-Vorschriften sicherzustellen."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Konto erstellen"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Sicherheitscheck"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Haltet mich per E-Mail über coole Dinge auf dem Laufenden, an denen Modrinth gerade arbeitet"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Ein Konto erstellen"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Benutzername"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Benutzername eingeben"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "E-Mail zur Wiederherstellung senden"
|
||||
},
|
||||
@@ -729,23 +831,53 @@
|
||||
"message": "Dein Passwort zurücksetzen"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Bitte gib einen Zwei-Faktor-Code ein, um fortzufahren."
|
||||
"message": "Gib den 6-stelligen Code aus deiner Authentifikator-App oder einen deiner Backup-Codes ein."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Zwei-Faktor-Code eingeben"
|
||||
"message": "Zwei-Faktor-Authentifizierung"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Code eingeben..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Weiter mit E-Mail"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Weiter mit Passkey"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Registrieren"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Passwort vergessen"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Zuletzt benutzt"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Du hast kein Konto?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Anmelden mit"
|
||||
"message": "Bei Modrinth anmelden"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Anmelden"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Mindestalter"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Mit E-Mail fortfahren"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Durch die Erstellung eines Kontos stimmst du den <terms-link>Nutzungsbedingungen</terms-link> und der <privacy-policy-link>Datenschutzerklärung</privacy-policy-link> von Modrinth zu."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Zeige weniger Optionen"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Zeige weitere Optionen"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Du hast bereits ein Konto?"
|
||||
},
|
||||
@@ -753,11 +885,14 @@
|
||||
"message": "Registrieren"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Registrieren mit"
|
||||
"message": "Ein Konto erstellen"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Kontoeinstellungen"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Mods entdecken"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Deine E-Mail wurde bereits bestätigt!"
|
||||
},
|
||||
@@ -776,6 +911,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "E-Mail-Verifizierung fehlgeschlagen"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "Eine E-Mail mit einem Link zur Verifizierung deines Accounts wurde an {email} gesendet."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "E-Mail gesendet"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Ein Fehler ist aufgetreten"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Deine E-Mail-Adresse wurde erfolgreich bestätigt!"
|
||||
},
|
||||
@@ -1490,9 +1634,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Benachrichtigungen werden geladen..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Du kannst mehrere Projekte gleichzeitig bearbeiten, indem du sie unten auswählst."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Serverprojekte unterstützen Massenbearbeitung nicht"
|
||||
},
|
||||
@@ -1568,24 +1709,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Bitte überprüfe die Umgebungsmetadaten"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Aufsteigend"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Absteigend"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Name"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Typ"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Icon"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1805,6 +1928,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Zurück zum Server"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Zurück zur Einrichtung"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Zurücksetzung abbrechen"
|
||||
},
|
||||
@@ -3324,43 +3450,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung folgender Dateien hast; alle zurückgehaltenen Versionen werden automatisch veröffentlicht."
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung folgender Dateien hast. Danach werden die zurückgehaltenen Versionen automatisch veröffentlicht."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung aller folgenden Dateien hast, bevor du dein Projekt zur Überprüfung einreichen kannst."
|
||||
"message": "Bitte lege Nachweise vor, dass du die Erlaubnis zur Weiterverbreitung aller folgenden Dateien hast, bevor du dein Projekt zur Überprüfung einreichst."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Unbekannter eingebetteter Inhalt"
|
||||
"message": "Unbekannter externer Inhalt"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "Das Moderationsteam von Modrinth hat die von dir für einige externe Inhalte vorgelegten Berechtigungsnachweise abgelehnt. Bitte überprüfe die unten aufgeführten abgelehnten Einträge und lege zulässige Nachweise vor oder entfernen die Inhalte."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Einige Nachweise wurden abgelehnt"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Alle ausblenden"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Alle externen Inhalte haben Quellenangaben."
|
||||
"message": "Alle externen Inhalte sind mit Erlaubnisangaben versehen, und die Quellenangaben wurden angegeben."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Quellenangaben vollständig!"
|
||||
"message": "Genehmigungen abgeschlossen!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Keine deiner Versionen enthält externe Inhalte, du musst du dir keine Gedanken über die Einholung von Genehmigungen machen."
|
||||
"message": "Keine der Versionen deines Projekts enthält externe Inhalte, weshalb du dir keine Gedanken über die Einholung von Genehmigungen machen musst."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Du bist startklar!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Alle anzeigen"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Du hast keine Berechtigung, einige der von dir hinzugefügten externen Inhalte weiterzuverbreiten. Entferne die urheberrechtsverletzenden Inhalte, um auf Modrinth veröffentlichen zu können."
|
||||
"message": "Möglicherweise verfügst du nicht über die erforderliche Genehmigung zur Weitergabe einiger externer Inhalte in deinem Projekt. Um dein Projekt auf Modrinth zu veröffentlichen, entferne bitte diese Inhalte oder lege einen Nachweis vor, dass du über die erforderliche Genehmigung zur Nutzung verfügst."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Bestimmte Inhalte können nicht enthalten sein"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Wenn du Inhalte einbindest, welche nicht auf Modrinth gehostet werden, musst du uns deren Quelle mitteilen und bestätigen, dass du die Berechtigung zur Verbreitung der Dateien hast. In <link>unserer Anleitung</link> lernst du, wie du dies am besten machst!"
|
||||
"message": "Wenn du Inhalte einbindest, welche nicht auf Modrinth gehostet werden, musst du uns deren Quelle mitteilen und bestätigen, dass du die Berechtigung zur Verbreitung der Dateien hast. Schau dir <link>unsere Ankündigung zu diesem neuen System</link> an, um mehr zu erfahren!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "So funktionieren Quellenangaben"
|
||||
"message": "Erfahre mehr über die Rechte zur Verbreitung"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Mehr erfahren"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "Keine externen Dateien entsprechen deiner Suche."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Einige der enthaltenen externen Inhalte dürfen auf Modrinth nicht verbreitet werden, da sie gegen unsere Inhaltsrichtlinien verstoßen und daher entfernt werden müssen."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {Keine Quellenangaben müssen genehmigt werden} one {# Quellenangabe muss genehmigt werden} other {# Quellenangaben müssen genehmigt werden}}"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Durchsuche {count} {count, plural, one {externes Projekt} other {externe Projekte}}..."
|
||||
"message": "Durchsuche {count} {count, plural, one {Projekt} other {Projekten}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "Meiste Dateien"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Kürzlich bearbeitet"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Abgelehnt"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Einstellungen"
|
||||
@@ -3920,6 +4079,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "E-Mail"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Passkey hinzufügen"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Stell sicher, dass du etwas nimmst, was du dir gut merken kannst, damit du den Passkey später identifizieren kannst."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Name"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Mein Passkey"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Verwalte deine gespeicherten Passkeys oder füge einen neuen hinzu."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Vor {ago} hinzugefügt"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Zuletzt {ago} verwendet"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Passkeys werden geladen…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Nie verwendet"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Du hast keine registrierten Passkeys."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "Dadurch wird der Passkey „{name}“ endgültig gelöscht. Du kannst dich mit ihm nicht mehr anmelden."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Möchtest du diesen Passkey wirklich löschen?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Passkey umbenennen"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Passkeys verwalten"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Passwort hinzufügen"
|
||||
},
|
||||
@@ -4532,6 +4733,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Abonniere den Modrinth-Newsletter"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Alle Versionen"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Diese Version wird endgültig gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Version löschen"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Möchtest du diese Version wirklich löschen?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Projekt anzeigen"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Version anzeigen"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Abhängigkeit herunterladen"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Fehler: Keine primäre Datei gefunden"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Optionales Ressourcenpaket"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Erforderliches Ressourcenpaket"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Bearbeiten"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Details bearbeiten"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Dateien bearbeiten"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Metadaten bearbeiten"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "Die Umgebung für diese Version wurde nicht angegeben."
|
||||
},
|
||||
@@ -4543,5 +4786,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Unbekannte Umgebung"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Als Mod verpacken"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Dadurch wird eine neue Version mit Unterstützung für die ausgewählten Mod-Loader erstellt. Du wirst zur neuen Version weitergeleitet und kannst diese nach deinen Wünschen bearbeiten."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Datenpaket als Mod packen"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Modloader"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Die Modloader, für die du dein Datenpaket packen möchtest."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Modloader auswählen..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Datenpaket packen"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Informationen für Entwickler"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Maven-Koordinaten:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Projekte auf Modrinth sind automatisch über ein Maven-Repository für die Verwendung mit JVM-Build-Tools wie <gradle-link>Gradle</gradle-link> verfügbar. Um mehr über die Maven-API von Modrinth zu erfahren, <article-link>klicke hier</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Hinweis: Falls verfügbar, solltest du stattdessen das Maven-Repository des Entwicklers verwenden, da dieses Informationen zu transitiven Abhängigkeiten enthält, die in der Maven-API von Modrinth fehlen. Außerdem kann es zu doppelten Abhängigkeiten kommen, wenn du für deine Abhängigkeiten sowohl Modrinth- als auch andere Maven-Repositorys verwendest, da die Gruppen-ID bei der Bereitstellung über die Maven-API von Modrinth abweicht."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "Versions-ID:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "SHA-1 kopieren"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "SHA-512 kopieren"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Diese Version wird derzeit zurückgehalten und ist nicht öffentlich gelistet. Bitte lege Nachweise vor, dass du zur Verbreitung bestimmter darin enthaltener Dateien berechtigt bist."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Wegen unbekannten eingebetteten Inhalten zurückgehalten"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -518,6 +518,9 @@
|
||||
"analytics.value.unknown": {
|
||||
"message": "Unknown"
|
||||
},
|
||||
"analytics.value.unknown-dependent-tooltip": {
|
||||
"message": "There's no metadata to determine which dependent project this download attributes to."
|
||||
},
|
||||
"analytics.value.unmonetized": {
|
||||
"message": "Unmonetized"
|
||||
},
|
||||
@@ -1634,9 +1637,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Loading notifications..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "You can edit multiple projects at once by selecting them below."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Server projects do not support bulk editing"
|
||||
},
|
||||
@@ -1712,23 +1712,11 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Please review environment metadata"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Ascending"
|
||||
"dashboard.projects.selection-bar.aria-label": {
|
||||
"message": "Selected projects actions"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Descending"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Name"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Type"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Icon"
|
||||
"dashboard.projects.selection-bar.selected-count": {
|
||||
"message": "{count, plural, one {# project selected} other {# projects selected}}"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
@@ -1736,6 +1724,9 @@
|
||||
"dashboard.projects.table.name": {
|
||||
"message": "Name"
|
||||
},
|
||||
"dashboard.projects.table.select-all-bulk-editable": {
|
||||
"message": "Select all projects that support bulk editing"
|
||||
},
|
||||
"dashboard.projects.table.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
@@ -1946,33 +1937,24 @@
|
||||
"dashboard.withdraw.error.tax-form.title": {
|
||||
"message": "Please complete tax form"
|
||||
},
|
||||
"discover.install.back-to-create-instance": {
|
||||
"message": "Back to create instance"
|
||||
},
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Back to server"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Back to setup"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Cancel reset"
|
||||
},
|
||||
"discover.install.create-instance-name": {
|
||||
"message": "Create instance"
|
||||
},
|
||||
"discover.install.error.no-server-world": {
|
||||
"message": "No server instance is available for install."
|
||||
"message": "No server world is available for install."
|
||||
},
|
||||
"discover.install.error.unsupported-content-type": {
|
||||
"message": "This content type cannot be installed to a server from Discover."
|
||||
},
|
||||
"discover.install.heading.create-instance-modpack": {
|
||||
"message": "Selecting modpack base"
|
||||
},
|
||||
"discover.install.heading.reset-modpack": {
|
||||
"message": "Selecting modpack to install after reset"
|
||||
},
|
||||
"discover.install.world-fallback-name": {
|
||||
"message": "Instance"
|
||||
},
|
||||
"discover.seo.description": {
|
||||
"message": "Search and browse thousands of Minecraft {projectType} on Modrinth with instant, accurate search results. Our filters help you quickly find the best Minecraft {projectType}."
|
||||
},
|
||||
@@ -3332,9 +3314,6 @@
|
||||
"project.gallery.title": {
|
||||
"message": "Gallery"
|
||||
},
|
||||
"project.install-context.back-to-discover": {
|
||||
"message": "Back to discover"
|
||||
},
|
||||
"project.license.error": {
|
||||
"message": "License text could not be retrieved."
|
||||
},
|
||||
@@ -3950,12 +3929,6 @@
|
||||
"servers.manage.content.title": {
|
||||
"message": "Content - {serverName} - Modrinth"
|
||||
},
|
||||
"servers.manage.instances.meta.title": {
|
||||
"message": "Instances - {server} - Modrinth"
|
||||
},
|
||||
"servers.manage.instances.slot-name": {
|
||||
"message": "Instance #{index}"
|
||||
},
|
||||
"servers.notice.actions": {
|
||||
"message": "Actions"
|
||||
},
|
||||
|
||||
@@ -731,12 +731,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Autorizar {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Faltan los parámetros de consulta OAuth obligatorios."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "No se encontró una ubicación de redirección en la respuesta"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Se produjo un error"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Serás redirigido a <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Continuar con {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Requisito de edad"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Completar el registro"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Por favor, ingresa una fecha de nacimiento válida. El año no puede ser 0000."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Fecha de nacimiento no válida"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Fecha de nacimiento"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Selecciona tu fecha de nacimiento"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Por favor, ingresa tu fecha de nacimiento antes de continuar."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Se requiere la fecha de nacimiento"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "No cumples con el requisito de edad para crear una cuenta en Modrinth."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Código fuente relevante"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "No almacenamos tu fecha de nacimiento. Solo la utilizamos durante el registro para verificar el cumplimiento de la ley COPPA."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Crear cuenta"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Control de seguridad"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Manténme al tanto de las cosas geniales en las que está trabajando Modrinth por correo electrónico"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Crear una cuenta"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Nombre de usuario"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Ingresa tu nombre de usuario"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Enviar correo de recuperación"
|
||||
},
|
||||
@@ -771,23 +831,53 @@
|
||||
"message": "Restablece tu contraseña"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Por favor, introduce un código de verificación en dos pasos para continuar."
|
||||
"message": "Ingresa el código de 6 dígitos de tu aplicación de autenticación o uno de tus códigos de respaldo."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Introduce el código de verificación en dos pasos"
|
||||
"message": "Autenticación de dos factores"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Introduce el código..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Continuar con el correo electrónico"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Continuar con la clave de acceso"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Registrarse"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Olvidé mi contraseña"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Último inicio de sesión"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "¿No tienes una cuenta?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Iniciar sesión con"
|
||||
"message": "Inicia sesión en Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Iniciar sesión"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Requisito de edad"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Continuar con el correo electrónico"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Al crear una cuenta, aceptas los <terms-link>Términos</terms-link> y la <privacy-policy-link>Política de privacidad</privacy-policy-link> de Modrinth."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Mostrar menos opciones"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Mostrar otras opciones"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "¿Ya tienes una cuenta?"
|
||||
},
|
||||
@@ -795,11 +885,14 @@
|
||||
"message": "Registrarse"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Registrarse con"
|
||||
"message": "Crear una cuenta"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Configuración de cuenta"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Descubre mods"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "¡Tu correo ya está verificado!"
|
||||
},
|
||||
@@ -818,6 +911,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "Error al verificar el correo"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "Se ha enviado un correo electrónico con un enlace para verificar tu cuenta a {email}."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "Correo electrónico enviado"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Se produjo un error"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "¡Tu correo ha sido verificado correctamente!"
|
||||
},
|
||||
@@ -1532,9 +1634,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Cargando notificaciones..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Puedes editar varios proyectos a la vez seleccionándolos a continuación."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Los proyectos no son compatible con la edición masiva de servidores"
|
||||
},
|
||||
@@ -1610,24 +1709,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Por favor revisa los metadatos de entorno"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Ascendente"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Descendente"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nombre"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Estado"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Tipo"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Icono"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1847,6 +1928,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Volver al servidor"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Volver a configuración"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Cancelar reinicio"
|
||||
},
|
||||
@@ -3366,43 +3450,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Por favor, proporciona pruebas de que tienes permiso para redistribuir todos estos archivos y cualquier versión retenida se publicará automáticamente."
|
||||
"message": "Por favor, proporcione prueba de que tiene permiso para redistribuir todos los siguientes archivos. Una vez completado, las versiones retenidas se publicarán automáticamente."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Por favor, proporciona pruebas de que tienes permiso para redistribuir todos estos archivos antes de enviar tu proyecto a revisión."
|
||||
"message": "Por favor, proporcione prueba de que tiene permiso para redistribuir todos los siguientes archivos antes de enviar su proyecto para revisión."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Incluye contenido desconocido"
|
||||
"message": "Contenido externo desconocido"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "El equipo de moderación de Modrinth ha rechazado la información de permisos que proporcionaste para algún contenido externo. Por favor, revise los elementos rechazados a continuación y proporcione pruebas aceptables o elimine el contenido."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Algunas pruebas fueron rechazadas."
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Colapsar todo"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Todo el contenido externo proporciona atribuciones."
|
||||
"message": "Todo el contenido externo tiene información de permisos y se han proporcionado las atribuciones."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "¡Atribuciones completadas!"
|
||||
"message": "¡Permisos completados!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Ninguna de tus versiones presenta contenido externo, por lo que no necesitas preocuparte de obtener permisos."
|
||||
"message": "Ninguna de las versiones de tu proyecto contiene contenido externo, así que no necesitas preocuparte por obtener permisos."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "¡Ya estás listo!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Expandir todo"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "No tienes permiso de redistribuir parte del contenido externo que añadiste. Para poder publicar en Modrinth, quite el contenido infractor."
|
||||
"message": "Es posible que no tengas permiso para redistribuir parte del contenido externo en tu proyecto. Para publicar en Modrinth, por favor elimina este contenido o proporciona prueba de que tienes permiso para usarlo."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "No se puede incluir parte del contenido"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Si incluyes contenido que no está alojado en Modrinth, debes indicarnos de dónde es y verificar que tienes permiso para distribuir los archivos. ¡Mira <link>nuestra guía</link> para saber cómo hacerlo correctamente!"
|
||||
"message": "Si incluyes contenido que no esté alojado en Modrinth, debes informarnos de dónde proviene y verificar que tienes permiso para distribuir los archivos. Consulta <link>nuestro anuncio de este nuevo sistema</link> para obtener más información."
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Aprende cómo funcionan las atribuciones"
|
||||
"message": "Aprende sobre los permisos de distribución"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Aprender más"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "No hay archivos externos que coincidan con tu búsqueda."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Parte del contenido externo incluido no puede ser distribuido en Modrinth porque viola nuestras Reglas de Contenido y debe ser eliminado."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {No se necesita aprobación para las atribuciones} one {# atribución necesita aprobación} other {# atribuciones necesitan aprobación}}"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Busca {count} {count, plural, one {proyecto externo} other {proyectos externos}}..."
|
||||
"message": "Buscar {count} {count, plural, one {proyecto} other {proyectos}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "La mayoría de los archivos"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Recientemente editado"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Rechazado"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Estado"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Configuración"
|
||||
@@ -3962,6 +4079,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "Correo electrónico"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Agregar clave de acceso"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Asegúrate de elegir algo fácil de recordar, para que puedas identificar esta contraseña más adelante."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Nombre"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Mi clave de acceso"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Administra tus claves de acceso registradas o agrega una nueva."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Agregado {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Último uso {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Cargando claves de acceso…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Nunca usado"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "No tienes ninguna clave de acceso registrada."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "Esto eliminará de forma permanente la clave de acceso \"{name}\". Ya no podrás iniciar sesión con ella."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "¿Estás seguro de que quieres eliminar esta clave de acceso?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Renombrar clave de acceso"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Administrar claves de acceso"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Añadir contraseña"
|
||||
},
|
||||
@@ -4574,6 +4733,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Suscríbete a las noticias de Modrinth"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Todas las versiones"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Esta versión será eliminada permanentemente. Esta acción no se puede deshacer."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Eliminar versión"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "¿Estás seguro de que quieres eliminar esta versión?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Ver proyecto"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Ver versión"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Descargar dependencia"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Error: No se encontró el archivo principal"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Paquete de recursos opcional"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Paquete de recursos requerido"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Editar"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Editar detalles"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Editar archivos"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Editar metadatos"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "No se ha especificado el entorno para esta versión."
|
||||
},
|
||||
@@ -4585,5 +4786,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Entorno desconocido"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Empaquetar como mod"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Esto creará una nueva versión con soporte para los cargadores de mods seleccionados. Serás redirigido a la nueva versión y podrás editarla a tu gusto."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Empaquetar datapack como mod"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Cargadores de mods"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Los cargadores de mods para los que te gustaría empaquetar tu paquete de datos"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Elige cargadores de mods..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Paquete de datos"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Información del desarrollador"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Coordenadas de Maven:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Los proyectos en Modrinth están automáticamente disponibles a través de un repositorio Maven para su uso con herramientas de construcción de JVM como <gradle-link>Gradle</gradle-link>. Para obtener más información sobre la API de Modrinth Maven, <article-link>haga clic aquí</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Nota: Cuando esté disponible, deberías usar el repositorio maven del creador en su lugar, ya que tendrá información sobre las dependencias transitivas que la API de Modrinth Maven no tiene. También puedes terminar con dependencias duplicadas si usas una mezcla de repositorios Maven de Modrinth y no Modrinth para tus dependencias, porque el identificador de grupo será diferente cuando se sirva a través de la API de Maven de Modrinth."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "ID de versión:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Copiar SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Copiar SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Esta versión está actualmente retenida y no está listada públicamente. Por favor, proporcione prueba de que tiene permiso para redistribuir ciertos archivos incluidos."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Retenido debido a contenido incrustado desconocido"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -770,18 +770,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Restablecer tu contraseña"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Por favor introduce el código de autenticación de dos factores para continuar."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Introduce el código de autenticación de dos factores"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Introducir código..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Iniciar sesión con"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Iniciar sesión"
|
||||
},
|
||||
@@ -794,9 +785,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Registro"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Registrarse con"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Ajustes de cuenta"
|
||||
},
|
||||
@@ -1529,9 +1517,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Cargando notificaciones..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Puedes editar múltiples proyectos a la vez seleccionándolos abajo."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Proyectos de servidor no soportan edición masiva"
|
||||
},
|
||||
@@ -1604,24 +1589,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Por favor revise el entorno del metadata"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Ascendiendo"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Descendiendo"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nombre"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Estado"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Tipo"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Icono"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1841,6 +1808,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Volver al server"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Volver a configuración"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Cancelar reinicio"
|
||||
},
|
||||
@@ -3360,43 +3330,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Por favor, proporciona pruebas de que tienes permiso para redistribuir todos estos archivos y cualquier versión retenida se publicará automáticamente."
|
||||
"message": "Por favor, proporciona una prueba de que tienes permiso para redistribuir todos los siguientes archivos. Una vez completado, las versiones retenidas se publicarán automáticamente."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Por favor, proporciona pruebas de que tienes permiso para redistribuir todos estos archivos antes de enviar tu proyecto a revisión."
|
||||
"message": "Por favor, proporciona una prueba de que tiene permiso para redistribuir todos los siguientes archivos antes de enviar su proyecto para su revisión."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Incluye contenido desconocido"
|
||||
"message": "Contenido externo desconocido"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "El equipo de moderación de Modrinth ha rechazado la información de permisos que proporcionaste para cierto contenido externo. Revisa los elementos rechazados a continuación y proporciona una prueba aceptable o elimina el contenido."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Algunas pruebas fueron rechazadas"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Desbloquear todo"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Todo el contenido externo proporciona atribuciones."
|
||||
"message": "Todo el contenido externo cuenta con información de permisos y se han proporcionado las atribuciones correspondientes."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "¡Atribuciones completadas!"
|
||||
"message": "¡Permisos completados!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Ninguna de tus versiones presenta contenido externo, por lo que no necesitas preocuparte de obtener permisos."
|
||||
"message": "Ninguna de las versiones de tu proyecto contiene contenido externo, por lo que no necesitas preocuparte por obtener permisos."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "¡Ya estás listo!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Expandir todo"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "No tienes permiso de redistribuir parte del contenido externo que añadiste. Para poder publicar en Modrinth, quita el contenido infractor."
|
||||
"message": "Es posible que no tengas permiso para redistribuir parte del contenido externo en tu proyecto. Para publicar en Modrinth, por favor elimina este contenido o proporciona una prueba de que tienes permiso para usarlo."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "No se puede incluir parte del contenido"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Si incluyes contenido que no está alojado en Modrinth, necesitas comunicarnos de dónde viene y verificar que tienes permiso para distribuir los archivos. ¡Mira <link>nuestra guía</link> para saber cómo hacerlo correctamente!"
|
||||
"message": "Si incluyes contenido que no esté alojado en Modrinth, debes informarnos de dónde proviene y verificar que tienes permiso para distribuir los archivos. ¡Consulta <link>nuestro anuncio de este nuevo sistema</link> para obtener más información!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Aprende cómo funcionan las atribuciones"
|
||||
"message": "Más información sobre los permisos de distribución"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Saber más"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "No hay archivos externos que coincidan con tu búsqueda."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Parte del contenido externo incluido no puede distribuirse en Modrinth porque infringe nuestras Normas de Contenido y debe eliminarse."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {No hay atribuciones que necesiten aprobación} one {Una atribución necesita aprobación} other {# atribuciones necesitan aprobación}}"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Buscar {count} {count, plural, one {proyecto externo} other {proyectos externos}}..."
|
||||
"message": "Buscar {count} {count, plural, one {proyecto} other {proyectos}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "La mayoría de los archivos"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Recientemente editado"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Rechazado"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Estado"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Ajustes"
|
||||
@@ -4568,6 +4571,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Suscríbete al boletín de noticias de Modrinth"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Todas las versiones"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Esta versión será permanentemente eliminado. Esta acción no se puede deshacer."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Eliminar versión"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "¿Estás seguro de que quieres eliminar esta versión?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Ver proyecto"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Ver versión"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Descargar dependencia"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Error: No se encontró el archivo principal"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Resourse pack opcional"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Resourse pack requerido"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Editar"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Editar detalles"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Editar archivos"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Editar metadatos"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "El entorno para esta versión no ha sido especificado."
|
||||
},
|
||||
@@ -4579,5 +4624,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Entorno desconocido"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Paquete como mod"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Esto creará una nueva versión con soporte a los loader seleccionados. Serás redireccionado a la nueva versión para que puedas editarla a tu gusto."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Empaquetar datapack como mod"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Loaders de mods"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Los loaders para los que te gustaría empaquetar tu datapack."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Elige los loaders..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Empaquetar datapack"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Información del desarrollador"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Coordenadas de Maven:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Los proyectos en Modrinth están disponibles automáticamente a través de un repositorio Maven para su uso con herramientas de compilación JVM como <gradle-link>Gradle</gradle-link>. Para obtener más información sobre la API Maven de Modrinth, <article-link>presiona aquí</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Nota: Cuando esté disponible, debería usar el repositorio Maven del creador, ya que contendrá información de dependencia transitiva que la API Maven de Modrinth no tiene. También podría terminar con dependencias duplicadas si usa una combinación de repositorios Maven de Modrinth y de otros proveedores para sus dependencias, porque el identificador de grupo será diferente cuando se sirva a través de la API Maven de Modrinth."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "ID de la versión:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Copiar SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Copiar SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Esta versión está actualmente retenida y no está listada públicamente. Por favor, proporcione prueba de que tiene permiso para redistribuir ciertos archivos incluidos."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Retenido debido a contenido incrustado desconocido"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,24 @@
|
||||
"admin.billing.error.not-found": {
|
||||
"message": "Käyttäjää ei löydetty"
|
||||
},
|
||||
"analytics.action.add": {
|
||||
"message": "Lisää"
|
||||
},
|
||||
"analytics.action.cancel": {
|
||||
"message": "Peruuta"
|
||||
},
|
||||
"analytics.action.refresh": {
|
||||
"message": "Päivitä"
|
||||
},
|
||||
"analytics.action.reset": {
|
||||
"message": "Palauta"
|
||||
},
|
||||
"analytics.breakdown.country": {
|
||||
"message": "Valtio"
|
||||
},
|
||||
"analytics.breakdown.dependent-on": {
|
||||
"message": "Riippuu kohteesta"
|
||||
},
|
||||
"app-marketing.download.description": {
|
||||
"message": "Työpöytä sovelluksemme on saatavilla kaikilla alustoilla, valitse haluamasi versio."
|
||||
},
|
||||
@@ -254,18 +272,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Palauta salasanasi"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Syötä 2-vaiheisen tunnistautumisen koodi jatkaaksesi."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Syötä 2-vaiheisen tunnistautumisen koodi"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Anna koodi..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Kirjaudu sisään käyttäen"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Kirjaudu sisään"
|
||||
},
|
||||
@@ -278,9 +287,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Rekisteröidy"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Reskiteröidy käyttäen"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Tilin asetukset"
|
||||
},
|
||||
@@ -335,6 +341,12 @@
|
||||
"collection.delete-modal.title": {
|
||||
"message": "Oletko varma että haluat poistaa tämän kokoelman?"
|
||||
},
|
||||
"collection.description": {
|
||||
"message": "{description} - Katso kokoelma {name}, jonka on luonut {username}, Modrinthissa"
|
||||
},
|
||||
"collection.description.following": {
|
||||
"message": "Automattisesti luotu kokoelma kaikista projekteista joita seuraat."
|
||||
},
|
||||
"collection.editing": {
|
||||
"message": "Muokataan kokoelmaa"
|
||||
},
|
||||
@@ -599,24 +611,6 @@
|
||||
"dashboard.projects.project.icon-alt": {
|
||||
"message": "Kuvake projektille {title}"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Nouseva"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Laskeva"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nimi"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Tila"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Tyyppi"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Kuvake"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
|
||||
@@ -386,18 +386,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Baguhin ang iyong password"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Pakilagay ng two-factor code upang makapagpatuloy."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Ilagay ang two-factor code"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Ilagay ang code..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Mag-sign in gamit ang"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Mag-sign In"
|
||||
},
|
||||
@@ -410,9 +401,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Mag-sign Up"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Mag-sign up gamit ang"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Mga setting sa account"
|
||||
},
|
||||
@@ -1010,18 +998,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Pakisuri sa metadata sa environment"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Pangalan"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Estado"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Uri"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Ikono"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -2585,9 +2561,6 @@
|
||||
"project.settings.general.url.title": {
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Kung magsasama ka ng mga kontentong hindi naka-host sa Modrinth, kailangan niyong ipaalam sa amin sa pinanggalingan nito at matiyak na pinahintulutang mapakalat ang mga file. Tingnan ang <link>aming gabay</link> upang matuto kung papaano ito magawa nang maayos!"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Mga Setting"
|
||||
},
|
||||
|
||||
@@ -731,12 +731,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Autoriser {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Paramètres de requête d'authentification obligatoires manquants."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "Pas d'adresse de redirection trouvée dans la réponse"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Une Erreur est Survenue"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Vous serez redirigé vers <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Continuer avec {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Conditions d'âge"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Terminer l'inscription"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Veuillez entrer une année de naissance valide. L'année ne peut pas être 0000."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Date de naissance invalide"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Date de naissance"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Choisissez votre date de naissance"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Veuillez entrer votre date de naissance avant de continuer."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Date de naissance requise"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Vous ne rencontrez pas les conditions d'âge requises pour créer un compte sur Modrinth."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Code source pertinent"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "Nous ne conservons pas votre date de naissance. Nous l'utilisons uniquement lors de l'inscription pour vérifier la conformité avec la loi COPPA."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Créer un Compte"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Vérification de sécurité"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Me tenir au courant des trucs cools sur lesquels Modrinth travaille par e-mail"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Créer un Compte"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Pseudo"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Entrez un pseudo"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Envoyez un e-mail de récupération"
|
||||
},
|
||||
@@ -771,23 +831,53 @@
|
||||
"message": "Réinitialiser votre mot de passe"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Veuillez entrer un code à double facteur pour continuer."
|
||||
"message": "Entrez le code à 6 chiffres de votre application d'authentification, ou un de vos codes de secours."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Saisir le code à double facteur"
|
||||
"message": "Authentification à deux facteurs"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Saisir le code..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Continuer avec un E-mail"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Continuer avec une clé d'accès"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "S'inscrire"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Mot de passe oublié"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Dernière utilisation"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Vous n'avez pas de compte ?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Se connecter avec"
|
||||
"message": "Se connecter à Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Se connecter"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Conditions d'âge"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Continuer avec un E-mail"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "En créant un compte, vous acceptez les <terms-link>Conditions d'utilisation</terms-link> et la <privacy-policy-link>Politique de confidentialité</privacy-policy-link> de Modrinth."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Voir moins d'options"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Voir plus d'options"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Vous avez déjà un compte ?"
|
||||
},
|
||||
@@ -795,11 +885,14 @@
|
||||
"message": "S'inscrire"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "S'inscrire avec"
|
||||
"message": "Créer un Compte"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Paramètres du compte"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Découvrez des mods"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Votre adresse e-mail est déjà vérifiée !"
|
||||
},
|
||||
@@ -818,6 +911,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "La vérification de l'adresse e-mail a échouée"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "Un e-mail avec un lien pour vérifier votre compte a été envoyé à {email}."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "E-mail envoyé"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Une erreur est survenue"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Votre adresse e-mail a été vérifiée avec succès !"
|
||||
},
|
||||
@@ -1532,9 +1634,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Chargement des notifications..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Vous pouvez modifier plusieurs projets en même temps en les sélectionnant ci-dessous."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Les projets du serveur ne prennent pas en charge l'édition en masse"
|
||||
},
|
||||
@@ -1610,24 +1709,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Merci de revoir les métadonnées environnementales"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Ascendant"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Descendant"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nom"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Statut"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Type"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Icône"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1847,6 +1928,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Retour au serveur"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Retour au setup"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Annuler la réinitialisation"
|
||||
},
|
||||
@@ -3366,43 +3450,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Veuillez prouver que vous avez la permission de redistribuer tous les fichiers suivants et que toutes les versions retenues seront automatiquement publiées."
|
||||
"message": "Veuillez fournir la preuve que vous êtes autorisé à redistribuer tous les fichiers suivants. Une fois cette étape terminée, les versions actuellement retenues seront automatiquement publiées."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Veuillez fournir la preuve que vous avez l'autorisation de redistribuer tous les fichiers suivants avant de pouvoir soumettre votre projet pour évaluation."
|
||||
"message": "Veuillez fournir la preuve que vous êtes autorisé à redistribuer tous les fichiers suivants avant de soumettre votre projet pour examen."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Contenu intégré inconnu"
|
||||
"message": "Contenu externe inconnu"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "L'équipe de modération de Modrinth a rejeté les informations d'autorisation que vous avez fournies pour certains contenus externes. Veuillez examiner les éléments rejetés ci-dessous et fournir une preuve acceptable lub supprimer le contenu."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Certaines preuves ont été rejetées"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Tout réduire"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Tout le contenu externe est accompagné d'une attribution."
|
||||
"message": "Toutes les informations d'autorisation et les attributions ont été fournies pour l'ensemble du contenu externe."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Attributions terminées !"
|
||||
"message": "Autorisations terminées !"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Aucune de vos versions ne contient de contenu externe, vous n'avez donc pas à vous soucier d'obtenir d'autorisations."
|
||||
"message": "Aucune des versions de votre projet ne contient de contenu externe, vous n'avez donc pas à vous soucier d'obtenir des autorisations."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Vous êtes prêt !"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Tout développer"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Vous n'êtes pas autorisé à rediffuser certains des contenus externes que vous avez ajoutés. Pour pouvoir publier sur Modrinth, veuillez supprimer les contenus litigieux."
|
||||
"message": "Il se peut que vous n'ayez pas l'autorisation de redistribuer une partie du contenu externe de votre projet. Pour pouvoir publier na Modrinth, veuillez supprimer ce contenu ou fournir la preuve que vous avez l'autorisation de l'utiliser."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Certains contenus ne peuvent pas être inclus"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Si vous incluez du contenu qui n’est pas sur Modrinth, vous devez nous faire savoir d’où il vient et vérifier que vous avez la permission de distribuer les fichiers. Jettez un coup d’œil à <link>notre guide</link> pour apprendre comment faire cela proprement !"
|
||||
"message": "Si vous incluez du contenu qui n'est pas hébergé sur Modrinth, vous devez nous indiquer sa provenance et vérifier que vous avez l'autorisation de distribuer te pliki. Découvrez <link>notre annonce de ce nouveau système</link> pour en savoir plus !"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Découvrez comment fonctionnent les attributions"
|
||||
"message": "En savoir plus sur les autorisations de distribution"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "En savoir plus"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "Aucun fichier externe ne correspond à votre recherche."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Une partie du contenu externe inclus ne peut pas être distribuée sur Modrinth car elle enfreint nos règles relatives au contenu et doit être supprimée."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {Aucune attribution n'a besoin d'approbation} one {# attribution a besoin d'approbation} other {# attributions ont besoin d'approbation}}"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Rechercher {count} {count, plural, one {projet externe} other {projets externes}}..."
|
||||
"message": "Rechercher {count} {count, plural, one {projet} other {projets}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "La plupart des fichiers"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Modifié récemment"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Rejeté"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Statut"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Paramètres"
|
||||
@@ -3962,6 +4079,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "E-mail"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Ajouter une clé d'accès"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Veillez à choisir un nom facile à retenir, afin de pouvoir identifier tę klucz d'accès plus tard."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Nom"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Ma clé d'accès"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Gérez vos clés d'accès enregistrées ou ajoutez-en une nouvelle."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Ajouté il y a {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Dernière utilisation il y a {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Chargement des clés d'accès…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Jamais utilisée"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Vous n'avez aucune clé d'accès enregistrée."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "Cela supprimera définitivement la clé d'accès \"{name}\". Vous ne pourrez plus l'utiliser pour vous connecter."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Êtes-vous sûr de vouloir supprimer cette clé d'accès ?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Renommer la clé d'accès"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Gérer les clés d'accès"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Ajouter un mot de passe"
|
||||
},
|
||||
@@ -4574,6 +4733,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "S'abonner au journal Modrinth"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Toutes les versions"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Cette version sera définitivement supprimée. Cette action est irréversible."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Supprimer la version"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Êtes-vous sûr de vouloir supprimer cette version ?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Voir le projet"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Voir la version"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Télécharger la dépendance"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Erreur : aucun fichier principal trouvé"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Pack de ressources facultatif"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Pack de ressources requis"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Modifier"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Modifier les détails"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Modifier los pliki"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Modifier les métadonnées"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "L'environnement pour cette version n'a pas été spécifié."
|
||||
},
|
||||
@@ -4585,5 +4786,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Environnement Inconnue"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Packager comme mod"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Cela créera une nouvelle version prenant en charge les chargeurs de mods sélectionnés. Vous serez redirigé vers la nouvelle version et pourrez la modifier à votre guise."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Empaqueter le pack de données en mod"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Chargeurs de mods"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Les chargeurs de mods pour lesquels vous souhaitez packager votre data pack."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Choisir les chargeurs de mods..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Packager le data pack"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Informations de développement"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle :"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Coordonnées Maven :"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Les projets sur Modrinth sont automatiquement disponibles via un dépôt Maven pour une utilisation avec des outils de build JVM tels que <gradle-link>Gradle</gradle-link>. Pour en savoir plus sur l'API Maven de Modrinth, <article-link>cliquez ici</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Remarque : Lorsque cela est possible, il est préférable d'utiliser le dépôt Maven du créateur, car il contient des informations sur les dépendances transitives que l'API Maven de Modrinth ne fournit pas. Vous risquez également de vous retrouver avec des dépendances en double si vous combinez des dépôts Maven Modrinth et non-Modrinth pour vos dépendances, car l'identifiant de groupe (group ID) différera lorsqu'il est fourni via l'API Maven de Modrinth."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "ID de version :"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Copier SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Copier SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Cette version est actuellement retenue et ne figure pas dans la liste publique. Veuillez fournir la preuve que vous êtes autorisé à redistribuer certains des fichiers inclus."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Masqué en raison d'un contenu intégré inconnu"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,18 +254,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "הפס סיסמתכם"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "כתבו את הקוד אימות דו-שלבי שלכם כדי להמשיך."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "כתבו את האימות דו-שלבי"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "כתבו קוד..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "הכנס אם"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "הכנס"
|
||||
},
|
||||
@@ -278,9 +269,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "הרשם"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "הרשם אם"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "הגדרות חשבון"
|
||||
},
|
||||
|
||||
@@ -38,6 +38,9 @@
|
||||
"analytics.breakdown.loader": {
|
||||
"message": "Betöltő"
|
||||
},
|
||||
"analytics.breakdown.members": {
|
||||
"message": "Tag"
|
||||
},
|
||||
"analytics.breakdown.monetization": {
|
||||
"message": "Bevételszerzés"
|
||||
},
|
||||
@@ -221,6 +224,9 @@
|
||||
"analytics.filter.search.download-sources": {
|
||||
"message": "Letöltési források keresése..."
|
||||
},
|
||||
"analytics.filter.search.members": {
|
||||
"message": "Tagok keresése... "
|
||||
},
|
||||
"analytics.filter.search.project-versions": {
|
||||
"message": "Projektverziók keresése..."
|
||||
},
|
||||
@@ -680,18 +686,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Jelszavad visszaállítása"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Kérlek írd be a kétlépcsős hitelesítés kódját a folytatáshoz."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Írd be a kétlépcsős hitelesítés kódját"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Kód beírása..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Bejelentkezés ezzel"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Bejelentkezés"
|
||||
},
|
||||
@@ -704,9 +701,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Regisztráció"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Regisztráció ezzel"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Fiókbeállítások"
|
||||
},
|
||||
@@ -1388,9 +1382,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Értesítések betöltése..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Több projektet is szerkeszthetsz egyszerre, ha kiválasztod őket alább."
|
||||
},
|
||||
"dashboard.projects.empty": {
|
||||
"message": "Még nincsenek projektjeid. Kattints a fenti zöld gombra a kezdéshez."
|
||||
},
|
||||
@@ -1451,24 +1442,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Kérlek ellenőrizd a környezeti metaadatokat"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Növekvő"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Csökkenő"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Név"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Állapot"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Típus"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Ikon"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "Azonosító"
|
||||
},
|
||||
@@ -1688,6 +1661,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Vissza a szerverhez"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Vissza a beállításhoz"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Visszaállítás visszavonása"
|
||||
},
|
||||
@@ -3125,18 +3101,12 @@
|
||||
"project.settings.general.url.title": {
|
||||
"message": "Link"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Egyik verziód sem tartalmaz külső tartalmat, így nem kell aggódnod a jogosultságok beszerzése miatt."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Kész is van!"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "További információ"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Keresés {count} külső projekt között..."
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Beállítások"
|
||||
},
|
||||
|
||||
@@ -473,18 +473,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Atur ulang kata sandi Anda"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Mohon masukkan kode autentikasi dwifaktor untuk melanjutkan."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Masukkan kode dwifaktor"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Masukkan kode..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Masuk dengan"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Masuk"
|
||||
},
|
||||
@@ -497,9 +488,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Daftar"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Daftar dengan"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Pengaturan akun"
|
||||
},
|
||||
|
||||
@@ -725,12 +725,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Autorizza {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Parametri di query OAuth mancanti."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "Nessun link di reindirizzamento trovato nella risposta"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Si è verificato un errore"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Sarai reindirizzato a <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Continua con {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Età richiesta"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Completa la registrazione"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Inserisci una data di nascita valida. L'anno non può essere 0000."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Data di nascita non valida"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Data di nascita"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Seleziona la tua data di nascita"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Inserisci la tua data di nascita prima di continuare."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Data di nascita richiesta"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Non soddisfi i requisiti di età necessari per creare un account su Modrinth."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Codice sorgente rilevante"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "Non memorizziamo la tua data di nascita. La utilizziamo solo durante la registrazione per verificare la conformità alla normativa COPPA."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Crea account"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Controllo di sicurezza"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Tienimi aggiornato sulle fantastiche cose a cui Modrinth sta lavorando tramite email"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Crea un account"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Nome utente"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Inserisci il nome utente"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Invia email di recupero"
|
||||
},
|
||||
@@ -765,23 +825,53 @@
|
||||
"message": "Reimposta la password"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Inserisci il codice 2FA per continuare."
|
||||
"message": "Inserisci il codice a 6 cifre dalla tua app di autenticazione oppure uno dei tuoi codici di backup."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Inserisci un codice 2FA"
|
||||
"message": "Autenticazione a due fattori"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Inserisci il codice..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Continua con l'email"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Continua con passkey"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Registrati"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Password dimenticata"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Ultimo utilizzo"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Non hai un account?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Accedi con"
|
||||
"message": "Accedi a Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Accedi"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Età richiesta"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Continua con l'email"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Creando un''account, accetti i <terms-link>termini d''uso</terms-link> e l''<privacy-policy-link>informativa sulla privacy</privacy-policy-link> di Modrinth."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Mostra meno opzioni"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Mostra altre opzioni"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Hai già un account?"
|
||||
},
|
||||
@@ -789,11 +879,14 @@
|
||||
"message": "Registrati"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Accedi con"
|
||||
"message": "Crea un account"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Impostazioni account"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Esplora mod"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "La tua email è già stata verificata!"
|
||||
},
|
||||
@@ -812,6 +905,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "Errore nella verifica dell'email"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "È stata inviata un'email con il link per verificare il tuo account a {email}."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "Email inviata"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Si è verificato un errore"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Il tuo indirizzo email è stato verificato con successo!"
|
||||
},
|
||||
@@ -1526,9 +1628,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Caricando le notifiche..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Puoi modificare più progetti contemporaneamente selezionandoli qui sotto."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Non puoi modificare più server contemporaneamente"
|
||||
},
|
||||
@@ -1601,24 +1700,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Si prega di rivedere i metadati d'ambiente"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Crescente"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Decrescente"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nome"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Stato"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Tipo"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Icona"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1838,6 +1919,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Torna al server"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Torna alla configurazione"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Annulla ripristino"
|
||||
},
|
||||
@@ -2049,7 +2133,7 @@
|
||||
"message": "Avvia il tuo server"
|
||||
},
|
||||
"hosting-marketing.hero.host-with-modrinth": {
|
||||
"message": "Affida il tuo prossimo server a Modrinth Hosting"
|
||||
"message": "Scegli Modrinth Hosting per il tuo nuovo server"
|
||||
},
|
||||
"hosting-marketing.hero.hosting-description": {
|
||||
"message": "Modrinth Hosting è il modo più facile per gestire il tuo server personale per Minecraft: Java Edition. Installa e gioca alle tue mod e pacchetti preferiti, tutto tramite la piattaforma Modrinth."
|
||||
@@ -3357,43 +3441,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Dimostra di avere il permesso di ridistribuire tutti i seguenti file, e le versioni sospese verranno pubblicate automaticamente."
|
||||
"message": "Dimostra di avere il permesso di ridistribuire tutti i file seguenti. Una volta fatto, le versioni sospese verranno pubblicate automaticamente."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Dimostra di avere il permesso di ridistribuire tutti i seguenti file prima di presentare il tuo progetto alla revisione."
|
||||
"message": "Dimostra di avere il permesso di ridistribuire tutti i file seguenti prima di presentare il progetto alla revisione."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Contenuti di origine sconosciuta"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "Il team di moderazione di Modrinth ha rifiutato i permessi che hai dimostrato per alcuni contenuti esterni. Ricontrolla gli elementi rifiutati riportati di seguito e fornisci delle prove valide oppure rimuovi i contenuti."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Alcune prove sono state rifiutate"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Comprimi tutto"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Sono state fornite attribuzioni per tutti i contenuti esterni."
|
||||
"message": "Tutti i contenuti esterni hanno ricevuto i permessi e tutte le attribuzioni sono state fornite."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Attribuzioni complete!"
|
||||
"message": "Permessi completi!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Nessuna versione include contenuti esterni, quindi non è necessario dimostrare alcun permesso."
|
||||
"message": "Nessuna versione del progetto include contenuti esterni, quindi non è necessario dimostrare alcun permesso."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Tutto a posto!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Espandi tutto"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Non hai il permesso di ridistribuire alcuni dei contenuti esterni che hai incluso. Per pubblicare su Modrinth, rimuovi i contenuti illeciti."
|
||||
"message": "Potresti non avere il permesso di ridistribuire alcuni dei contenuti esterni contenuti nel progetto. Per pubblicare su Modrinth, rimuovili o dimostra di avere il permesso di usarli."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Alcuni contenuti non possono essere pubblicati"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Se includi dei contenuti esterni a Modrinth, devi dichiarare la loro origine e dimostrare di avere il permesso di ridistribuirli. Controlla la <link>nostra guida</link> per farlo nel modo giusto!"
|
||||
"message": "Se includi dei contenuti esterni a Modrinth, devi dichiarare la loro origine e dimostrare di avere il permesso di ridistribuirli. Controlla <link>il nostro annuncio su questo nuovo sistema</link> per scoprire di più!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Come funzionano le attribuzioni"
|
||||
"message": "Scopri di più sui permessi di distribuzione"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Scopri di più"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "Nessun file esterno corrisponde alla tua ricerca."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Alcuni dei contenuti esterni inclusi non possono essere distribuiti su Modrinth e devono essere rimossi in quanto violano le nostre Regole sui contenuti."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {Nessuna attribuzione necessita} one {# attribuzione necessita} other {# attribuzioni necessitano}} di approvazione"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Cerca tra {count, plural, one {# progetto esterno} other {# progetti esterni}}..."
|
||||
"message": "Cerca tra {count} {count, plural, one {progetto} other {progetti}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "Numero di file"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Modificati di recente"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Rifiutati"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Stato"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Impostazioni"
|
||||
@@ -3935,6 +4052,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "Email"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Aggiungi passkey"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Assicurati di scegliere un nome facile da ricordare, così da poter identificare la passkey più tardi."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Nome"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Passkey personale"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Gestisci le tue passkey o aggiungine una nuova."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Aggiunta {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Ultimo utilizzo {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Caricando le passkey…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Mai usata"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Non hai passkey registrate."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "Questo rimuoverà la passkey \"{name}\" permanentemente. Non potrai più accedere con questa."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Vuoi davvero eliminare questa passkey?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Rinomina passkey"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Gestisci passkey"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Aggiungi password"
|
||||
},
|
||||
@@ -4547,6 +4706,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Iscriviti alla newsletter di Modrinth"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Tutte le versioni"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Questa versione verrà eliminata permanentemente. Questa azione non può essere annullata."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Elimina versione"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Vuoi davvero eliminare questa versione?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Mostra progetto"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Mostra versione"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Scarica dipendenza"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Errore: nessun file primario trovato"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Pacchetto di risorse facoltativo"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Pacchetto di risorse obbligatorio"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Modifica"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Modifica dettagli"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Modifica file"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Modifica metadati"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "L'ambiente per questa versione non è stato specificato."
|
||||
},
|
||||
@@ -4558,5 +4759,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Ambiente sconosciuto"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Impacchetta come mod"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Questo creerà una nuova versione con il supporto ai loader selezionati. Sarai reindirizzato alla nuova versione così da modificarla a tuo piacimento."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Impacchetta in una mod"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Loader"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "I loader per cui verrà impacchettato il pacchetto di dati."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Scegli i loader..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Impacchetta"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Informazioni sullo sviluppatore"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Coordinate Maven:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "I progetti su Modrinth sono automaticamente disponibili tramite una repository su Maven per uso con strumenti di sviluppo come <gradle-link>Gradle</gradle-link>. Per saperne di più sull'API Maven di Modrinth, <article-link>clicca qui</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Nota: quando disponibile, dovresti usare la repository Maven dell'autore, in quanto conterrà informazioni transitive sulle dipendenze che l'API Maven di Modrinth non ha. Inoltre, usando altre repository non di Modrinth insieme a queste, potresti finire con dipendenze duplicate, poiché l'identificatore del gruppo risulterà diverso quando fornito dall'API."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "ID di versione:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Copia SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Copia SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Questa versione è attualmente sospesa e non elencata pubblicamente. Devi dimostrare di avere il permesso di ridistribuire alcuni dei file presenti."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Sospesa per attribuzioni incomplete"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
"message": "メンバー"
|
||||
},
|
||||
"analytics.breakdown.monetization": {
|
||||
"message": "収益化"
|
||||
"message": "収益の発生"
|
||||
},
|
||||
"analytics.breakdown.none.selected": {
|
||||
"message": "分析 - デフォルト"
|
||||
@@ -102,7 +102,7 @@
|
||||
"message": "プロジェクトのイベントがありません。"
|
||||
},
|
||||
"analytics.chart.controls.previous-period": {
|
||||
"message": "1期前の描画"
|
||||
"message": "前期の描画"
|
||||
},
|
||||
"analytics.chart.controls.project-events": {
|
||||
"message": "プロジェクト"
|
||||
@@ -158,6 +158,15 @@
|
||||
"analytics.filter.search.countries": {
|
||||
"message": "国を検索…"
|
||||
},
|
||||
"analytics.filter.search.dependent-projects": {
|
||||
"message": "プロジェクトを検索..."
|
||||
},
|
||||
"analytics.filter.search.download-sources": {
|
||||
"message": "ソースを検索..."
|
||||
},
|
||||
"analytics.filter.search.members": {
|
||||
"message": "メンバーを検索..."
|
||||
},
|
||||
"analytics.filter.search.project-versions": {
|
||||
"message": "プロジェクトバージョンを検索…"
|
||||
},
|
||||
@@ -167,9 +176,60 @@
|
||||
"analytics.graph.title.downloads": {
|
||||
"message": "ダウンロードの推移"
|
||||
},
|
||||
"analytics.graph.title.playtime": {
|
||||
"message": "プレイ時間の推移"
|
||||
},
|
||||
"analytics.graph.title.revenue": {
|
||||
"message": "収益の推移"
|
||||
},
|
||||
"analytics.graph.title.views": {
|
||||
"message": "表示の推移"
|
||||
},
|
||||
"analytics.group-by.1h": {
|
||||
"message": "1時間"
|
||||
},
|
||||
"analytics.group-by.6h": {
|
||||
"message": "6時間"
|
||||
},
|
||||
"analytics.group-by.date": {
|
||||
"message": "日付"
|
||||
},
|
||||
"analytics.group-by.day": {
|
||||
"message": "1日"
|
||||
},
|
||||
"analytics.group-by.month": {
|
||||
"message": "1月"
|
||||
},
|
||||
"analytics.group-by.selected.day": {
|
||||
"message": "日足"
|
||||
},
|
||||
"analytics.group-by.selected.hour": {
|
||||
"message": "1時間足"
|
||||
},
|
||||
"analytics.group-by.selected.month": {
|
||||
"message": "月足"
|
||||
},
|
||||
"analytics.group-by.selected.six-hours": {
|
||||
"message": "6時間足"
|
||||
},
|
||||
"analytics.group-by.selected.week": {
|
||||
"message": "週足"
|
||||
},
|
||||
"analytics.group-by.selected.year": {
|
||||
"message": "年足"
|
||||
},
|
||||
"analytics.group-by.week": {
|
||||
"message": "1週"
|
||||
},
|
||||
"analytics.group-by.year": {
|
||||
"message": "1年"
|
||||
},
|
||||
"analytics.loading.fetching-results": {
|
||||
"message": "データを取得中..."
|
||||
},
|
||||
"analytics.options.loading": {
|
||||
"message": "ロード中..."
|
||||
},
|
||||
"analytics.project-event.project-approved": {
|
||||
"message": "承認済み"
|
||||
},
|
||||
@@ -201,7 +261,7 @@
|
||||
"message": "ダウンロード"
|
||||
},
|
||||
"analytics.stat.monetization-banner.body": {
|
||||
"message": "Modrinthを通じて行われた閲覧およびダウンロードが収益の対象となります。\nまた、Webからの場合は不正防止のためのフィルターを通過する必要があり、アプリからの場合は先述のフィルターに加え、Modrinthにログインされたユーザーに限ります。\n注意として、すべてのプロジェクトにおいて、収益の対象となる操作の割合はほぼ均一に保たれるため、最終的な収益で不公平が生まれることはありません。"
|
||||
"message": "Modrinthを通じて行われた閲覧およびダウンロードが収益の対象となります。また、Webからの場合は不正防止のためのフィルターを通過する必要があり、アプリからの場合は先述のフィルターに加え、Modrinthにログインされたユーザーに限ります。注意として、すべてのプロジェクトにおいて、収益の対象となる操作の割合はほぼ均一に保たれるため、最終的な収益で不公平が生まれることはありません。"
|
||||
},
|
||||
"analytics.stat.monetization-banner.learn-more": {
|
||||
"message": "もっと詳しく"
|
||||
@@ -530,18 +590,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "パスワードを再設定する"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "続行するには二要素認証コードを入力してください。"
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "二要素認証コードを入力"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "コードを入力…"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "外部アカウントでログイン"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "ログイン"
|
||||
},
|
||||
@@ -554,9 +605,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "アカウント作成"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "外部アカウントで作成"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "アカウント設定"
|
||||
},
|
||||
@@ -1163,9 +1211,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "通知を読み込み中…"
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "以下で選択することで、複数のプロジェクトを一括で編集できます。"
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "サーバープロジェクトでは一括編集を利用できません"
|
||||
},
|
||||
@@ -1238,24 +1283,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "環境メタデータを確認してください"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "昇順"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "降順"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "名前"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "ステータス"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "種類"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "アイコン"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
|
||||
@@ -266,18 +266,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "비밀번호 재설정"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "진행하려면 2단계 인증 코드를 입력해 주세요."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "2단계 인증 코드 입력"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "코드 입력..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "다음을 통해 로그인"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "로그인"
|
||||
},
|
||||
@@ -290,9 +281,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "회원 가입"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "다음 계정으로 가입"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "계정 설정"
|
||||
},
|
||||
@@ -1010,9 +998,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "알림 불러오는 중..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "아래에서 여러 프로젝트를 선택하면 한 번에 편집할 수 있습니다."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "서버 프로젝트는 일괄 편집을 지원하지 않습니다"
|
||||
},
|
||||
@@ -1082,24 +1067,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "환경 메타데이터를 검토해 주세요"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "오름차순"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "내림차순"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "이름"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "상태"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "유형"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "아이콘"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1319,6 +1286,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "서버로 돌아가기"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "설정으로 돌아가기"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "리셋 취소"
|
||||
},
|
||||
@@ -2801,45 +2771,15 @@
|
||||
"project.settings.general.url.title": {
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "다음 파일들을 재배포할 권한이 있음을 증명하는 자료를 제출 바랍니다. 제출 시 보류된 버전은 자동으로 공개됩니다."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "프로젝트 검토를 위해 제출하기 전에 다음 파일들을 재배포할 권한이 있음을 증명하는 자료를 제출해 주세요."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "알 수 없는 내장 콘텐츠"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "모든 외부 콘텐츠에는 출처가 명시되어 있습니다."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "출처 표기 완료됨!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "어떤 버전에도 외부 콘텐츠가 포함되어 있지 않으므로 권한을 얻는 걸 걱정하지 않아도 됩니다."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "준비됨!"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "추가한 외부 콘텐츠 중 일부를 재배포할 권한이 없습니다. Modrinth에 게시하려면 저작권 침해 콘텐츠를 삭제해야 합니다."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "일부 콘텐츠는 포함될 수 없습니다"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Modrinth에 호스팅되지 않은 콘텐츠를 포함하는 경우, 해당 콘텐츠의 출처를 알리고 파일 배포 권한이 있는지 확인해야 합니다. <link>저희 지침</link>을 참고해 어떻게 처리하는지 알아보세요!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "출처 표기 방식 알아보기"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "더보기"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "{count}개의 {count, plural, other {외부 프로젝트}} 검색..."
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "설정"
|
||||
},
|
||||
|
||||
@@ -656,18 +656,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Tetap semula kata laluan anda"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Sila masukkan kod dua faktor untuk meneruskan."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Masukkan kod dua faktor"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Masukkan kod..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Daftar masuk dengan"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Daftar Masuk"
|
||||
},
|
||||
@@ -680,9 +671,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Daftar"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Daftar dengan"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Tetapan akaun"
|
||||
},
|
||||
@@ -1379,9 +1367,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Sedang memuat pemberitahuan..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Anda boleh menyunting berbilang projek sekaligus dengan memilihnya di bawah."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Projek pelayan tidak menyokong penyuntingan pukal"
|
||||
},
|
||||
@@ -1451,24 +1436,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Sila semak metadata persekitaran"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Menaik"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Menurun"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nama"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Jenis"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Ikon"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1688,6 +1655,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Kembali ke pelayan"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Kembali ke persediaan"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Batalkan penetapan semula"
|
||||
},
|
||||
@@ -3176,45 +3146,15 @@
|
||||
"project.settings.general.url.title": {
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Sila berikan bukti bahawa anda mempunyai kebenaran untuk mengedarkan semula semua fail berikut dan sebarang versi yang ditahan akan diterbitkan secara automatik."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Sila berikan bukti bahawa anda mempunyai kebenaran untuk mengedarkan semula semua fail berikut sebelum anda boleh menghantar projek anda untuk semakan."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Kandungan terbenam yang tidak diketahui"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Semua kandungan luaran mempunyai atribusi yang disediakan."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Atribusi selesai!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Tiada satu pun versi anda mengandungi kandungan luaran, jadi anda tidak perlu risau tentang mendapatkan kebenaran."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Semuanya sudah siap!"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Anda tidak mempunyai kebenaran untuk mengedarkan semula beberapa kandungan luaran yang ditambahkan. Untuk menerbitkan projek ini di Modrinth, sila buang kandungan yang melanggar hak."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Sesetengah kandungan tidak boleh disertakan"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Jika anda memasukkan kandungan yang tidak dihoskan di Modrinth, anda perlu memberitahu kami dari mana ia berasal dan mengesahkan bahawa anda mempunyai kebenaran untuk mengedarkan fail tersebut. Lihat <link>panduan kami</link> untuk mengetahui cara untuk melakukannya dengan betul!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Ketahui cara atribusi berfungsi"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Ketahui lebih lanjut"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Cari {count} {count, plural, other {projek luaran}}..."
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Tetapan"
|
||||
},
|
||||
|
||||
@@ -617,18 +617,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Uw wachtwoord opnieuw instellen"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Voer een tweestapsverificatie code in om verder te gaan."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Voer twee factor code in"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Voer code in..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Log in met"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Log in"
|
||||
},
|
||||
@@ -638,9 +629,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Aanmelden"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Meld je aan met"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Account instellingen"
|
||||
},
|
||||
@@ -1370,9 +1358,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Notificaties aan het laden..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "U kunt meerdere projecten tegelijkertijd bijwerken door ze hieronder te selecteren."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Massa wijzigingen worden niet ondersteund door server projecten"
|
||||
},
|
||||
@@ -1424,12 +1409,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Controller project metadata alstublieft"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Naam"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.table.name": {
|
||||
"message": "Naam"
|
||||
},
|
||||
|
||||
@@ -254,18 +254,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Tilbakestill passordet dit"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Vennligst skriv inn en tofaktor-kode for å fortsette."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Skriv inn tofaktor-kode"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Skriv inn kode..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Logg inn med"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Logg inn"
|
||||
},
|
||||
@@ -278,9 +269,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Registrer deg"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Registrer deg med"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Kontoinstillinger"
|
||||
},
|
||||
@@ -863,9 +851,6 @@
|
||||
"dashboard.organizations.title": {
|
||||
"message": "Organiseringer"
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Du kan redigere flere prosjekt samtidig ved å velge dem nedafor."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Serverprosjekt støtter ikke massredigering"
|
||||
},
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
"message": "Rozkład:"
|
||||
},
|
||||
"analytics.query.label.grouped-by": {
|
||||
"message": "Grupowane wg."
|
||||
"message": "Grupowane wg"
|
||||
},
|
||||
"analytics.query.label.project": {
|
||||
"message": "Projekt:"
|
||||
@@ -731,12 +731,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Autoryzuj {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Brak wymaganych parametrów zapytania OAuth."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "Nie znaleziono lokalizacji przekierowania w odpowiedzi"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Wystąpił błąd"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Zostaniesz przekierowany do <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Kontynuuj przez {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Wymaganie wiekowe"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Zakończ rejestrację"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Prosimy o podanie prawidłowej daty urodzenia. Rok 0000 jest nieprawidłowy."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Nieprawidłowa data urodzenia"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Data urodzenia"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Wprowadź datę urodzenia"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Prosimy o podanie twojej daty urodzenia przed kontynuowaniem."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Wymagana data urodzenia"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Nie spełniasz wymagań wiekowych, aby utworzyć konto na Modrinth."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Kod źródłowy funkcji"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "Nie zapisujemy Twojej daty urodzenia. Sprawdzamy ją tylko podczas tworzenia konta, by potwierdzić zgodność z COPPA."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Utwórz konto"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Test bezpieczeństwa"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Wysyłaj mi nowinki o Modrinth przez e-mail"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Utwórz konto"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Nazwa użytkownika"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Wprowadź nazwę użytkownika"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Wyślij e-mail do odzyskania konta"
|
||||
},
|
||||
@@ -771,23 +831,53 @@
|
||||
"message": "Zresetuj swoje hasło"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Wprowadź otrzymany kod, aby kontynuować."
|
||||
"message": "Wprowadź 6-znakowy kod z aplikacji autoryzującej lub jeden z kodów zapasowych."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Wprowadź otrzymany kod"
|
||||
"message": "Weryfikacja dwuetapowa"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Wprowadź kod..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Kontynuuj przez e-mail"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Kontynuuj przez klucz logowania"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Zarejestruj się"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Nie pamiętam hasła"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Ostatnio użyty"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Nie masz konta?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Zaloguj się przez"
|
||||
"message": "Zaloguj się na Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Zaloguj się"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Wymaganie wiekowe"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Kontynuuj przez e-mail"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Tworząc konto, wyrażasz zgodę na <terms-link>Warunki</terms-link> i <privacy-policy-link>Politykę Prywatności</privacy-policy-link> Modrinth."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Pokaż mniej opcji"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Pokaż inne opcje"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Masz już konto?"
|
||||
},
|
||||
@@ -795,11 +885,14 @@
|
||||
"message": "Zarejestruj się"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Zarejestruj się przez"
|
||||
"message": "Utwórz konto"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Ustawienia konta"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Odkrywaj modyfikacje"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Twój e-mail jest już zweryfikowany!"
|
||||
},
|
||||
@@ -818,6 +911,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "Weryfikacja e-maila nie powiodła się"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "E-mail z linkiem do weryfikacji Twojego konta został wysłany na adres {email}."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "E-mail wysłany"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Wystąpił błąd"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Twój adres e-mail został pomyślnie zweryfikowany!"
|
||||
},
|
||||
@@ -1532,9 +1634,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Ładowanie powiadomień..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Możesz edytować kilka projektów naraz, zaznaczając je poniżej."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Projekty serwerów nie wspierają grupowej edycji"
|
||||
},
|
||||
@@ -1607,24 +1706,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Sprawdź metadane środowiska"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Rosnąco"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Malejąco"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nazwa"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Rodzaj"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Ikona"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1844,6 +1925,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Powróć do serwera"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Powróć do ustawiania"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Anuluj resetowanie"
|
||||
},
|
||||
@@ -3360,43 +3444,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Prosimy o dostarczenie dowodu, że posiadasz pozwolenie na rozpowszechnianie wszystkich poniższych plików, a wszelkie wstrzymane wersje zostaną automatycznie opublikowane."
|
||||
"message": "Prosimy o dostarczenie dowodu, że posiadasz pozwolenie na rozpowszechnianie wszystkich poniższych plików. Po dostarczeniu dowodu wszelkie wstrzymane wersje zostaną automatycznie opublikowane."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Przed przesłaniem projektu do oceny prosimy o pokazanie, że posiadasz pozwolenie na rozpowszechnianie wszystkich poniższych plików."
|
||||
"message": "Przed przesłaniem projektu do przeglądu prosimy o pokazanie, że posiadasz pozwolenie na rozpowszechnianie wszystkich poniższych plików."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Nieznana osadzona treść"
|
||||
"message": "Nieznana zewnętrzna zawartość"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "Zespół moderatorów Modrinth odrzucił podane informacje o zezwoleniach dla niektórej zawartości. Podaj poprawne dowody lub usuń podaną niżej zawartość."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Niektóre dowody zostały odrzucone"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Zwiń wszystkie"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Wszystkie zewnętrzne treści mają podane źródła."
|
||||
"message": "Wszystkie zewnętrzne treści zawierają informacje o prawach autorskich, a źródła zostały podane."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Atrybuty przypisane!"
|
||||
"message": "Uprawnienia gotowe!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Żadna z Twoich wersji nie zawiera treści zewnętrznych, więc nie musisz martwić się o uzyskanie zezwoleń."
|
||||
"message": "Żadne z wersji Twojego projektu nie zawierają zewnętrznej zawartości, więc nie musisz martwić się o uzyskanie zezwoleń."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Wszystko gotowe!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Rozwiń wszytkie"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Nie masz uprawnień do redystrybucji części dodanych przez siebie treści zewnętrznych. Aby publikować na Modrinth, usuń treści naruszające prawa autorskie."
|
||||
"message": "Możesz nie mieć uprawnień do redystrybucji kilku zewnętrznych treści w twoim projekcie. Żeby publikować na Modrinth, proszę usunąć tę treść albo \nwysłać dowód, który potwierdza, że masz permisje do użycia go."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Niektórych treści nie można uwzględnić"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Jeśli zamieszczasz treści, które nie są hostowane na Modrinth, musisz poinformować nas, skąd pochodzą i potwierdzić, że masz pozwolenie na ich dystrybucję. Sprawdź <link>nasz poradnik</link>, aby dowiedzieć się, jak to zrobić poprawnie!"
|
||||
"message": "Jeśli zamieszczasz treści, które nie są hostowane na Modrinth, musisz poinformować nas, skąd pochodzą i potwierdzić, że masz pozwolenie na ich dystrybucję. Zobacz <link>nasze ogłoszenie o nowym systemie</link>, aby dowiedzieć się więcej!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Dowiedz się, jak działają atrybuty"
|
||||
"message": "Dowiedz się więcej o uprawnieniach dystrybucji"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Dowiedz się więcej"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "Nie znaleziono żadnego pliku zewnętrznego pasującego do Twojego wyszukiwania."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Niektóra zewnętrzna zawartość na może być dystrybuowana przez Modrinth i musi być usunięta, ponieważ jest niezgodna z naszymi Zasadami dotyczącymi treści."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {Żadna atrybucja nie potrzebuje sprawdzenia} one {# atrybucja potrzebuje sprawdzenia} few{# atrybucje potrzebują sprawdzenia} other {# atrybucji potrzebuje sprawdzenia}}"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Szukaj w {count} {count, plural, one {projekcie zewnętrznym} other {projektach zewnętrznych}}..."
|
||||
"message": "Szukaj wśród {count} {count, plural, one {projektu} other {projektów}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "Najwięcej plików"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Ostatnio edytowane"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Odrzucone"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Ustawienia"
|
||||
@@ -3956,6 +4073,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "E-mail"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Dodaj klucz logowania"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Wybierz coś, co zapamiętasz, by móć później rozpoznać ten klucz logowania."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Nazwa"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Moje klucze logowania"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Zarządzaj kluczami logowania lub dodaj nowe."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Dodano {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Ostatnio użyty {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Ładowanie kluczy logowania…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Nigdy nie użyty"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Nie masz żadnych kluczy logowania."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "To trwale usunie klucz logowania \"{name}\". Nie będzie można się nim zalogować."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Czy na pewno chcesz usunąć ten klucz logowania?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Zmień nazwę klucza logowania"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Zarządzaj kluczami logowania"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Dodaj hasło"
|
||||
},
|
||||
@@ -4143,7 +4302,7 @@
|
||||
"message": "Kiedy autoryzujesz aplikacje ze swoim kontem Modrinth, dajesz jej dostęp do swojego konta. Możesz tutaj zawsze zarządzać oraz przeglądać stan aplikacji z dostępem do Twojego konta."
|
||||
},
|
||||
"settings.authorizations.empty-state": {
|
||||
"message": "Nie udało się nam wyświetlić twoich zautoryzowanych aplikacji, pracujemy nad tym, aby to naprawić. Odwiedź tę stronę później, w innym czasie!"
|
||||
"message": "Nie udało się nam wyświetlić twoich zautoryzowanych aplikacji, pracujemy nad tym, aby to naprawić. Odwiedź tę stronę później!"
|
||||
},
|
||||
"settings.authorizations.head-title": {
|
||||
"message": "Autoryzacje"
|
||||
@@ -4568,6 +4727,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Subskrybuj do newslettera Modrinth"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Wszystkie wersje"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Ta wersja zostanie trwale usunięta. Tej akcji nie będzie można cofnąć."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Usuń wersję"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Czy na pewno chcesz usunąć tę wersję?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Pokaż projekt"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Pokaż wersję"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Pobierz zależność"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Błąd: Nie znaleziono pliku głównego"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Opcjonalna paczka zasobów"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Wymagana paczka zasobów"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Edytuj"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Edytuj szczegóły"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Edytuj pliki"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Edytuj metadane"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "Środowisko dla tej wersji nie zostało określone."
|
||||
},
|
||||
@@ -4579,5 +4780,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Nieznane środowisko"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Zapakuj jako mod"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Stworzy to nową wersję wspierającą wybrane loadery modów. Po przekierowaniu możesz dalej edytować nową wersję."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Zapakuj paczkę danych jako mod"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Loadery modów"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Loadery modów, dla których ma być zapakowana ta paczka danych."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Wybierz loadery modów..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Zapakuj paczkę danych"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Informacje dla twórców"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Koordynaty Maven:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Projekty na Modrinth są automatycznie dostępne przez repozytorium Maven do użytku z narzędziami takimi jak <gradle-link>Gradle</gradle-link>. By dowiedzieć się więcej o API Maven Modrinth, <article-link>kliknij tutaj</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Uwaga: Jeśli jest to możliwe, zalecanie jest używanie repozytorium Maven od twórcy projektu, ponieważ może zawierać przejściowe informacje o zależnościach, o których nie wie API Maven Modrinth. Możesz także skończyć z duplikatami niektórych zależności mieszając repozytoria Maven z i spoza Modrinth, ponieważ identyfikatory grup będą się różnić."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "Identyfikator wersji:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Kopiuj SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Kopiuj SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Ta wersja jest aktualnie wstrzymana i nie jest widoczna publicznie. Podaj dowód na to, że możesz rozpowszechniać niektóre zawarte pliki."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Wstrzymane z powodu nieznanej zewnętrznej zawartości"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -731,12 +731,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Autorizar {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Parâmetros de consulta OAuth necessários faltando."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "Sem redirecionamento encontrado na resposta"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Ocorreu Um Erro"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Você será redirecionado para <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Continuar com {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Requisito de idade"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Concluir registro"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Insira uma data de nascimento válida. O ano não pode ser 0000."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Data de nascimento inválida"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Data de nascimento"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Selecione sua data de nascimento"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Primeiro, insira sua data de nascimento para prosseguir."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Data de nascimento necessária"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Você não atende ao requisito de idade para criar uma conta no Modrinth."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Código-fonte relevante"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "Não armazenamos sua data de nascimento. Só usamos durante o registro para validar os cumprimentos COPPA."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Criar conta"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Verificação de segurança"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Mantenha-me informado por e-mail sobre coisas legais que o Modrinth está trabalhando"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Criar uma Conta"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Nome de usuário"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Inserir nome de usuário"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Enviar e-mail de recuperação"
|
||||
},
|
||||
@@ -771,23 +831,53 @@
|
||||
"message": "Redefina sua senha"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Insira o código de dois fatores para prosseguir."
|
||||
"message": "Insira o código de 6 dígitos do aplicativo de autenticação ou um dos códigos de backup."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Insira o código de dois fatores"
|
||||
"message": "Autenticação de dois fatores"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Insira o código..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Continuar com e-mail"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Continuar com chave de acesso"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Entrar"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Esqueci a senha"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Último uso"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Não possui uma conta?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Iniciar sessão com"
|
||||
"message": "Entrar no Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Iniciar sessão"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Requisito de idade"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Continuar com e-mail"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Ao criar uma conta, você concorda com os <terms-link>Termos</terms-link> e a <privacy-policy-link>Política de Privacidade</privacy-policy-link>."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Exibir menos opções"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Exibir outras opções"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Já possui uma conta?"
|
||||
},
|
||||
@@ -795,11 +885,14 @@
|
||||
"message": "Criar conta"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Criar conta com"
|
||||
"message": "Criar uma Conta"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Configuração da conta"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Descobrir mods"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Seu e-mail já está verificado!"
|
||||
},
|
||||
@@ -818,6 +911,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "A verificação de e-mail falhou"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "Um e-mail foi enviado para {email} com um link para verificar sua conta."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "E-mail enviado"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Ocorreu um erro"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Seu e-mail foi verificado com sucesso!"
|
||||
},
|
||||
@@ -1529,9 +1631,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Carregando notificações..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Você pode editar vários projetos em simultâneo, selecionando-os abaixo."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Os projetos de servidor não suportam edição em massa"
|
||||
},
|
||||
@@ -1607,24 +1706,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Por favor, revise os metadados do ambiente"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Crescente"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Decrescente"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nome"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Tipo"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Ícone"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1844,6 +1925,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Voltar ao servidor"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Voltar à configuração"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Cancelar redefinição"
|
||||
},
|
||||
@@ -3357,43 +3441,76 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Forneça a prova que possui permissão para redistribuir todos os seguintes arquivos e a versão retida será publicada automaticamente."
|
||||
"message": "Forneça a prova que possui permissão para redistribuir todos os seguintes arquivos. Após a conclusão, as versões retidas serão publicadas automaticamente."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Forneça a prova que possui permissão para redistribuir todos os seguintes arquivos antes de apresentar seu projeto para revisão."
|
||||
"message": "Forneça a prova que possui permissão para redistribuir todos os seguintes arquivos antes de enviar seu projeto para revisão."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Conteúdo incluso desconhecido"
|
||||
"message": "Conteúdo externo desconhecido"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "A equipe de moderação do Modrinth rejeitou as informações de permissão que você forneceu para alguns conteúdos externos. Por favor, revise os itens rejeitados abaixo e forneça provas aceitáveis ou remova o conteúdo."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Algumas provas foram rejeitadas"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Recolher tudo"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Todos os conteúdos externos possuem atribuição inclusa."
|
||||
"message": "Todo o conteúdo externo possui informações de permissão e as atribuições foram fornecidas."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Atribuições concluídas!"
|
||||
"message": "Permissões concluídas!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Nenhuma de suas versões contém conteúdo externo, não há o que se preocupar sobre adquirir permissões."
|
||||
"message": "Nenhuma das versões do seu projeto contém conteúdo externo, não há o que se preocupar sobre adquirir permissões."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Tudo joia!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Expandir tudo"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Você não possui permissão para redistribuir algum dos conteúdos externos que adicionou. Para poder publicar no Modrinth, remova os conteúdos que infringem."
|
||||
"message": "Você pode não ter permissão para redistribuir parte do conteúdo externo do seu projeto. Para publicar no Modrinth, remova esse conteúdo ou forneça um comprovante de que você tem permissão para usá-lo."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Alguns conteúdos não puderam ser incluídos"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Se você incluir conteúdo que não é fornecido pelo Modrinth, você precisa nos contar de onde isso vem e verificar que você tem permissão para distribuir os arquivos. Veja <link>nosso guia</link> para saber mais como fazer do jeito certo!"
|
||||
"message": "Se você incluir conteúdo que não é fornecido pelo Modrinth, você precisa nos contar de onde isso vem e verificar que você tem permissão para distribuir os arquivos. Confira <link>nosso anúncio sobre este novo sistema</link> para saber mais!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Saiba como atribuições funcionam"
|
||||
"message": "Saiba mais sobre permissões de distribuição"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Saber mais"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "Nenhum arquivo externo corresponde à sua busca."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Alguns dos conteúdos externos incluídos não podem ser distribuídos no Modrinth porque violam nossas Regras de Conteúdo e devem ser removidos."
|
||||
},
|
||||
"project.settings.permissions.pending-approval-count": {
|
||||
"message": "{count, plural, =0 {Nenhuma atribuição precisa de aprovação} one {# atribuição precisa de aprovação} other {# atribuições precisam de aprovação}}"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Buscar {count} {count, plural,one {projeto externo} other {projetos externos}}..."
|
||||
"message": "Buscar {count} {count, plural, one {projeto} other {projetos}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "Maioria dos arquivos"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Editado recentemente"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Rejeitado"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Configurações"
|
||||
@@ -3953,6 +4070,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "E-mail"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Adicionar chave de acesso"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Certifique-se de adicionar algo memorável, para poder identificar mais tarde."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Nome"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Minha chave de acesso"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Gerencie suas chaves de acesso registradas ou adicione uma nova."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Adicionado {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Usado pela última vez em {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Carregando chaves de acesso…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Nunca usado"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Você não possui chaves de acesso registradas."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "Isso removerá permanentemente a chave de acesso \"{name}\". Você não poderá mais entrar usando ela."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Tem certeza que quer remover esta chave de acesso?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Renomear chave de acesso"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Gerenciar chaves de acesso"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Adicionar senha"
|
||||
},
|
||||
@@ -4565,6 +4724,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Inscreva-se no boletim informativo do Modrinth"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Todas as versões"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Esta versão será excluída permanentemente. Esta ação não pode ser desfeita."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Excluir versão"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Tem certeza de que deseja excluir esta versão?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Ver projeto"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Ver versão"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Baixar dependência"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Erro: Nenhum arquivo primário encontrado"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Pacote de recursos opcional"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Pacote de recursos necessário"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Editar"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Editar detalhes"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Editar arquivos"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Editar metadados"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "O ambiente para esta versão não foi especificado."
|
||||
},
|
||||
@@ -4576,5 +4777,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Ambiente desconhecido"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Empacotar como mod"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Isso criará uma versão com suporte para os carregadores de mods selecionados. Você será redirecionado para a nova versão e poderá editá-la como quiser."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Empacotar pacote de dados como mod"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Carregadores de mods"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Os carregadores de mods para os quais você gostaria de empacotar seu pacote de dados."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Escolher carregadores de mods..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Empacotar pacote de dados"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Informações do desenvolvedor"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Coordenadas do Maven:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Os projetos no Modrinth são disponibilizados automaticamente através de um repositório Maven para uso com ferramentas de compilação JVM, como o <gradle-link>Gradle</gradle-link>. Para saber mais sobre a API Maven do Modrinth, <article-link>clique aqui</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Nota: Quando disponível, você deve usar o repositório Maven do criador, pois ele conterá informações de dependências transitivas que a API Maven do Modrinth não possui. Você também pode acabar com dependências duplicadas se usar uma mistura de repositórios Maven do Modrinth e de fora do Modrinth para suas dependências, porque o identificador de grupo (group identifier) será diferente quando servido através da API Maven do Modrinth."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "ID da versão:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Copiar SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Copiar SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Esta versão está atualmente retida e não está listada publicamente. Por favor, forneça comprovante de que você tem permissão para redistribuir determinados arquivos incluídos."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Retido devido a conteúdo incorporado desconhecido"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,18 +254,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Redefine a tua palavra-passe"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Insere um código de dois fatores para continuar."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Autenticação de dois fatores"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Inserir código..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Iniciar sessão com"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Iniciar sessão"
|
||||
},
|
||||
@@ -278,9 +269,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Criar conta"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Criar conta com"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Definições de conta"
|
||||
},
|
||||
@@ -833,18 +821,6 @@
|
||||
"dashboard.projects.links.wiki-page.label": {
|
||||
"message": "Página da Wiki"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Nome"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Tipo"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Ícone"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
|
||||
@@ -248,18 +248,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Resetează-ți parola"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Te rugăm să introduci codul de autorizare în doi pași (2FA) pentru a continua."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Introduceți codul 2FA"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Introdu codul..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Conectează-te cu"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Conectare"
|
||||
},
|
||||
@@ -272,9 +263,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Înregistrare"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Înregistrare cu"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Setările contului"
|
||||
},
|
||||
|
||||
@@ -23,6 +23,15 @@
|
||||
"analytics.breakdown.country": {
|
||||
"message": "Страна"
|
||||
},
|
||||
"analytics.breakdown.dependent-on": {
|
||||
"message": "Зависит от"
|
||||
},
|
||||
"analytics.breakdown.dependent-project-download": {
|
||||
"message": "Зависимый проект"
|
||||
},
|
||||
"analytics.breakdown.dependent-project-type": {
|
||||
"message": "Тип зависимого проекта"
|
||||
},
|
||||
"analytics.breakdown.download-reason": {
|
||||
"message": "Причина скачивания"
|
||||
},
|
||||
@@ -147,7 +156,7 @@
|
||||
"message": "Зависит от {project}"
|
||||
},
|
||||
"analytics.chart.tooltip.dependent-project-version": {
|
||||
"message": "{dependentProject} зависит от {dependencyProject} версии {version}"
|
||||
"message": "{dependentProject} зависит от {dependencyProject}, версия {version}"
|
||||
},
|
||||
"analytics.chart.tooltip.duration.days": {
|
||||
"message": "{count, plural, one {# день} few {# дня} other {# дней}}"
|
||||
@@ -491,6 +500,9 @@
|
||||
"analytics.value.no-dependent": {
|
||||
"message": "Нет"
|
||||
},
|
||||
"analytics.value.no-dependent-tooltip": {
|
||||
"message": "Скачано по иным причинам — не как зависимость"
|
||||
},
|
||||
"analytics.value.none": {
|
||||
"message": "Нет"
|
||||
},
|
||||
@@ -713,12 +725,72 @@
|
||||
"auth.authorize.authorize-app-name": {
|
||||
"message": "Авторизация {appName}"
|
||||
},
|
||||
"auth.authorize.error.missing-parameters": {
|
||||
"message": "Отсутствуют обязательные параметры запроса OAuth."
|
||||
},
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "В ответе не найдена информация для перенаправления"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Произошла ошибка"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Вы будете перенаправлены на <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.continue-with-provider": {
|
||||
"message": "Продолжить с {provider}"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Возрастное ограничение"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Завершить регистрацию"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Введите корректную дату рождения."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Неверная дата рождения"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Дата рождения"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Укажите дату рождения"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Сначала укажите дату рождения."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Необходима дата рождения"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Вы не подходите по возрастным требованиям для создания аккаунта на Modrinth."
|
||||
},
|
||||
"auth.create-account.info-panel.source-code-link": {
|
||||
"message": "Соответствующий исходный код"
|
||||
},
|
||||
"auth.create-account.info-panel.text": {
|
||||
"message": "Мы не храним вашу дату рождения. Она используется только при регистрации для соблюдения закона COPPA."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Создание аккаунта"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Проверка безопасности"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Держите меня в курсе всего крутого, над чем работает Modrinth"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Создание аккаунта"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Имя пользователя"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Введите имя"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Отправить письмо"
|
||||
},
|
||||
@@ -753,7 +825,7 @@
|
||||
"message": "Сброс пароля"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Введите код подтверждения из приложения."
|
||||
"message": "Введите 6-значный код в вашем аутентификаторе, или один из резервных кодов."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Двухфакторная аутентификация"
|
||||
@@ -761,15 +833,45 @@
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Введите код..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Продолжить с почтой"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Продолжить с ключом доступа"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Зарегистрироваться"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Забыли пароль"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Активность"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Нет аккаунта?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Войдите через"
|
||||
"message": "Вход на Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Вход"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Возрастное ограничение"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Продолжить с почтой"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Регистрируясь, вы принимаете наши <terms-link>условия</terms-link> и <privacy-policy-link>политику конфиденциальности</privacy-policy-link>."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Меньше вариантов"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Другие варианты"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Уже есть аккаунт?"
|
||||
},
|
||||
@@ -777,11 +879,14 @@
|
||||
"message": "Регистрация"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Зарегистрируйтесь через"
|
||||
"message": "Создать аккаунт"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Настройки аккаунта"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Найти моды"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Ваша почта уже подтверждена!"
|
||||
},
|
||||
@@ -800,6 +905,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "Ошибка подтверждения"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "На {email} было отправлено письмо со ссылкой для подтверждения аккаунта."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "Письмо отправлено"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Произошла ошибка"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Адрес электронной почты успешно подтверждён!"
|
||||
},
|
||||
@@ -1514,9 +1628,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Загрузка уведомлений..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Можно редактировать сразу несколько проектов, выбрав их ниже."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Серверные проекты не поддерживают массовое редактирование"
|
||||
},
|
||||
@@ -1592,24 +1703,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Проверьте метаданные среды"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "По возрастанию"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "По убыванию"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Название"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Статус"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Тип"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Иконка"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1829,6 +1922,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Вернуться к серверу"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Вернуться к установке"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Отменить сброс"
|
||||
},
|
||||
@@ -3264,7 +3360,7 @@
|
||||
"message": "Ваш проект не будет отображаться публично и будет доступен только по прямой ссылке.{requestedStatus, select, unlisted { В соответствии с выбранными вами <visibility-settings-link>настройками видимости</visibility-settings-link>, скорее всего, никаких действий не требуется.} other { Пожалуйста, устраните все замечания модерации, включая указанные в сообщениях ниже, прежде чем повторно отправлять проект на проверку.}}"
|
||||
},
|
||||
"project.moderation.admonition.withheld.header": {
|
||||
"message": "Скрыто командой Modrinth"
|
||||
"message": "Скрыт модератором"
|
||||
},
|
||||
"project.moderation.error.unauthorized": {
|
||||
"message": "Нет доступа"
|
||||
@@ -3348,43 +3444,70 @@
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Пожалуйста, предоставьте доказательства, что у вас есть разрешение на распространение всех следующих файлов, а также любые скрытые версии будут опубликованы."
|
||||
"message": "Пожалуйста, предоставьте доказательства, что у вас есть разрешение на распространение всех следующих файлов. После этого скрытые версии будут опубликованы."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Прежде чем отправить проект на рассмотрение, пожалуйста, подтвердите наличие у вас разрешения на распространение всех перечисленных ниже файлов."
|
||||
"message": "Прежде чем отправить проект на рассмотрение, подтвердите наличие у вас разрешения на распространение всех перечисленных ниже файлов."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Неизвестный встроенный контент"
|
||||
"message": "Неизвестный внешний контент"
|
||||
},
|
||||
"project.settings.permissions.bad-proof.description": {
|
||||
"message": "Команда модераторов Modrinth отклонила предоставленные вами данные для разрешения доступа к некоторому стороннему контенту. Пожалуйста, просмотрите список отклоненных материалов ниже и предоставьте убедительные доказательства или удалите контент."
|
||||
},
|
||||
"project.settings.permissions.bad-proof.title": {
|
||||
"message": "Часть доказательств отклонена"
|
||||
},
|
||||
"project.settings.permissions.collapse-all": {
|
||||
"message": "Свернуть всё"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Весь внешний контент сопровождается указанием авторства."
|
||||
"message": "Для всего стороннего контента указаны разрешения и источники."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Указание авторства завершено!"
|
||||
"message": "Разрешения получены!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Ни одна из ваших версий не содержит внешнего контента, поэтому вам не нужно беспокоиться о получении разрешений."
|
||||
"message": "Ни одна из версий вашего проекта не содержит внешнего контента, поэтому вам не нужно беспокоиться о получении разрешений."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Всё подтверждено!"
|
||||
},
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Развернуть всё"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Вам запрещено распространять часть добавленного вами внешнего контента. Для публикации на Modrinth удалите контент, нарушающий авторские права."
|
||||
"message": "Возможно, у вас нет разрешения на распространение части стороннего контента в вашем проекте. Чтобы опубликовать проект на Modrinth, удалите этот контент или предоставьте доказательства того, что у вас есть разрешение на его использование."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Некоторый контент не может быть включён"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Если вы используете контент, который не размещен на Modrinth, вам необходимо сообщить нам, откуда он взят, и подтвердить наличие у вас разрешения на распространение файлов. Ознакомьтесь с <link>нашим руководством</link>, чтобы узнать, как это сделать правильно!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Узнайте, как работает атрибуция"
|
||||
"message": "Узнайте о разрешениях на распространение"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Подробнее"
|
||||
},
|
||||
"project.settings.permissions.no-results": {
|
||||
"message": "Сторонние файлы не найдены."
|
||||
},
|
||||
"project.settings.permissions.not-allowed.description": {
|
||||
"message": "Часть внешнего контента не может распространяться на Modrinth за нарушение правил контента и должна быть удалена."
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Поиск среди {count} {count, plural, one {внешнего проекта} other {внешних проектов}}..."
|
||||
"message": "Поиск по {count, plural, one {# проекту} other {# проектам}}..."
|
||||
},
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "Количество файлов"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Дата изменения"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Отклонённые"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Статус"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Настройки"
|
||||
@@ -3926,6 +4049,48 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "Почта"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Добавить ключ доступа"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Выберите что-то запоминающееся, чтобы потом опознать этот ключ доступа."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "Название"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Мой ключ доступа"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Управляйте вашими кодами доступа, или добавьте новый."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "Добавлен {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.last-used": {
|
||||
"message": "Активность {ago}"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Загрузка ключей доступа…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Не использовался"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Ключи доступа отсутствуют."
|
||||
},
|
||||
"settings.account.security.passkey.remove.description": {
|
||||
"message": "Ключ доступа «{name}» будет удалён навсегда. Им нельзя будет воспользоваться для входа."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Вы действительно хотите удалить этот ключ доступа?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Переименовать ключ доступа"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Управление ключами доступа"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Добавить пароль"
|
||||
},
|
||||
@@ -4532,6 +4697,48 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Подписаться на рассылку от Modrinth"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Все версии"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Эта версия будет удалена навсегда. Отменить это действие нельзя."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Удалить версию"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Вы действительно хотите удалить эту версию?"
|
||||
},
|
||||
"version.dependency.view-project": {
|
||||
"message": "Посмотреть проект"
|
||||
},
|
||||
"version.dependency.view-version": {
|
||||
"message": "Посмотреть версию"
|
||||
},
|
||||
"version.download.download-dependency": {
|
||||
"message": "Скачать зависимость"
|
||||
},
|
||||
"version.download.no-primary-file": {
|
||||
"message": "Ошибка: основной файл не найден"
|
||||
},
|
||||
"version.download.optional-resource-pack": {
|
||||
"message": "Необязательный набор ресурсов"
|
||||
},
|
||||
"version.download.required-resource-pack": {
|
||||
"message": "Необходимый набор ресурсов"
|
||||
},
|
||||
"version.edit.button": {
|
||||
"message": "Изменить"
|
||||
},
|
||||
"version.edit.details": {
|
||||
"message": "Изменить сведения"
|
||||
},
|
||||
"version.edit.files": {
|
||||
"message": "Изменить файлы"
|
||||
},
|
||||
"version.edit.metadata": {
|
||||
"message": "Изменить метаданные"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "Среда для этой версии не указана."
|
||||
},
|
||||
@@ -4543,5 +4750,56 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Неизвестная среда"
|
||||
},
|
||||
"version.package-as-mod.button": {
|
||||
"message": "Собрать в мод"
|
||||
},
|
||||
"version.package-as-mod.description": {
|
||||
"message": "Это создаст новую версию с поддержкой выбранного загрузчика. Вас перенаправит на новую версию и сможете изменить её по своему усмотрению."
|
||||
},
|
||||
"version.package-as-mod.header": {
|
||||
"message": "Сборка набора данных в мод"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Загрузчики"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.description": {
|
||||
"message": "Загрузчики, для которых вы хотите собрать набор данных."
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Выберите загрузчики..."
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Собрать набор данных"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Для разработчиков"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "build.gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Координаты Maven:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Проекты на Modrinth автоматически доступны через репозиторий Maven для использования с инструментами сборки JVM, такими как <gradle-link>Gradle</gradle-link>. Чтобы узнать больше о Modrinth Maven API, <article-link>нажмите сюда</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Примечание: По возможности следует использовать Maven-репозиторий самого автора, так как он содержит информацию о транзитивных зависимостях, которой нет у Modrinth Maven API. Кроме того, вы можете столкнуться с дублированием зависимостей, если будете одновременно использовать Maven-репозитории Modrinth и сторонние репозитории для своих зависимостей, поскольку идентификатор группы будет отличаться при их получении через Modrinth Maven API."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "ID версии:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Копировать SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Копировать SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Эта версия скрыта и не отображается. Предоставьте доказательства наличия разрешения на распространение некоторых файлов."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Скрыто из-за неизвестного встроенного контента"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,27 @@
|
||||
"admin.billing.error.not-found": {
|
||||
"message": "Korisnik nije pronađen"
|
||||
},
|
||||
"analytics.action.add": {
|
||||
"message": "Dodaj"
|
||||
},
|
||||
"analytics.action.cancel": {
|
||||
"message": "Otkaži"
|
||||
},
|
||||
"analytics.action.refresh": {
|
||||
"message": "Osveži"
|
||||
},
|
||||
"analytics.action.reset": {
|
||||
"message": "Resetiraj"
|
||||
},
|
||||
"analytics.breakdown.country": {
|
||||
"message": "Država"
|
||||
},
|
||||
"analytics.chart.axis.playtime-hours": {
|
||||
"message": "{hours} sati"
|
||||
},
|
||||
"analytics.chart.controls.active-count": {
|
||||
"message": "{count} aktivnih"
|
||||
},
|
||||
"app-marketing.download.description": {
|
||||
"message": "Naša desktop aplikacija je dostupna na svim platformama, izaberite željenu verziju."
|
||||
},
|
||||
@@ -60,7 +81,7 @@
|
||||
"message": "Deli"
|
||||
},
|
||||
"app-marketing.hero.download-button": {
|
||||
"message": "Preuzmite aplikaciju Modrint"
|
||||
"message": "Preuzmite aplikaciju Modrinth"
|
||||
},
|
||||
"auth.authorize.action.authorize": {
|
||||
"message": "Odobri"
|
||||
@@ -113,18 +134,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Resetujte svoju lozinku"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Unesite kod za dvofaktorsku autentifikaciju da biste nastavili."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Unesite kod za dvofaktorsku autentifikaciju"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Unesite kod..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Prijavi se sa"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Prijavi se"
|
||||
},
|
||||
@@ -137,9 +149,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Registracija"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Prijavite se sa"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Podešavanja naloga"
|
||||
},
|
||||
@@ -1135,5 +1144,38 @@
|
||||
},
|
||||
"settings.sessions.unknown-platform": {
|
||||
"message": "Nepoznata platforma"
|
||||
},
|
||||
"version.package-as-mod.submit-button": {
|
||||
"message": "Spakiraj data pack"
|
||||
},
|
||||
"version.section.content.dev-info": {
|
||||
"message": "Informacije sa programere"
|
||||
},
|
||||
"version.section.content.dev-info.gradle-snippet": {
|
||||
"message": "sastavi sa gradle:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-coordinates": {
|
||||
"message": "Maven koordinate:"
|
||||
},
|
||||
"version.section.content.dev-info.maven-description": {
|
||||
"message": "Projekti na Modrinthu su automatski dostupni putem Maven spremišta za korišćenje sa JVM alatima za izgradnju, kao što je <gradle-link>Gradle</gradle-link>. Da biste saznali više o Modrinth Maven API-ju, <article-link>kliknite ovde</article-link>."
|
||||
},
|
||||
"version.section.content.dev-info.maven-note": {
|
||||
"message": "Napomena: Kada je dostupan, trebalo bi da koristite Maven repozitorijum autora umesto njega, jer će on imati informacije o tranzitivnim zavisnostima koje Modrinth Maven API nema. Takođe možete završiti sa dupliranim zavisnostima ako koristite kombinaciju Modrinth i ne-Modrinth Maven repozitorijuma za vaše zavisnosti, jer će identifikator grupe biti drugačiji kada se služi preko Modrinth Maven API-ja."
|
||||
},
|
||||
"version.section.content.dev-info.version-id": {
|
||||
"message": "ID verzije:"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha1": {
|
||||
"message": "Kopiraj SHA-1"
|
||||
},
|
||||
"version.supplementary-resources.copy-hash-sha512": {
|
||||
"message": "Kopiraj SHA-512"
|
||||
},
|
||||
"version.unknown-embedded-content.description": {
|
||||
"message": "Ova verzija je trenutno zadržana i nije javno objavljena. Molimo vas da dostavite dokaz da imate dozvolu za redistribuciju određenih uključenih datoteka."
|
||||
},
|
||||
"version.unknown-embedded-content.title": {
|
||||
"message": "Zadržan sadržaj zbog nepoznatog ugrađenog sadržaja"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,9 +194,15 @@
|
||||
"analytics.filter.search.countries": {
|
||||
"message": "Sök länder..."
|
||||
},
|
||||
"analytics.filter.search.dependent-projects": {
|
||||
"message": "Sök efter projekt..."
|
||||
},
|
||||
"analytics.filter.search.download-sources": {
|
||||
"message": "Sök nedladdningskällor..."
|
||||
},
|
||||
"analytics.filter.search.members": {
|
||||
"message": "Sök efter medlemmar..."
|
||||
},
|
||||
"analytics.filter.search.project-versions": {
|
||||
"message": "Sök projektversioner..."
|
||||
},
|
||||
@@ -272,6 +278,9 @@
|
||||
"analytics.project-event.project-unlisted": {
|
||||
"message": "Projekt är avlistat"
|
||||
},
|
||||
"analytics.project-event.version-released": {
|
||||
"message": "{version} släpptes"
|
||||
},
|
||||
"analytics.project-status.approved": {
|
||||
"message": "Godkänd"
|
||||
},
|
||||
@@ -398,6 +407,9 @@
|
||||
"analytics.title": {
|
||||
"message": "Statistik"
|
||||
},
|
||||
"analytics.value.no-dependent": {
|
||||
"message": "Ingen"
|
||||
},
|
||||
"analytics.value.none": {
|
||||
"message": "Ingen"
|
||||
},
|
||||
@@ -623,6 +635,18 @@
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "Du kommer bli flyttad till <redirect-url>{url}</redirect-url>"
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Skapa konto"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Skapa ett konto"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Användarnamn"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Ange användarnamn"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Skicka återställningsmejl"
|
||||
},
|
||||
@@ -657,23 +681,53 @@
|
||||
"message": "Återställ ditt lösenord"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Ange din tvåfaktorskod för att fortsätta."
|
||||
"message": "Ange 6-siffriga koden från din autentiseringsapp, eller en av dina reservkoder."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Ange tvåfaktorskod"
|
||||
"message": "Tvåfaktorsautentisering"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Ange kod..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Fortsätt med e-post"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Fortsätt med passkey"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Registrera"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Glömt lösenord"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Användes senast"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Har du inget konto?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Logga in med"
|
||||
"message": "Logga in på Modrinth"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Logga in"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Ålderskrav"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Fortsätt med e-post"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Genom att skapa ett konto godkänner du Modrinths <terms-link>villkor</terms-link> och <privacy-policy-link>sekretesspolicy</privacy-policy-link>."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Visa färre inloggningsmetoder"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Visa andra inloggningsmetoder"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Har du redan ett konto?"
|
||||
},
|
||||
@@ -681,11 +735,14 @@
|
||||
"message": "Registrera dig"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Registrera dig med"
|
||||
"message": "Skapa ett konto"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Kontoinställningar"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Upptäck moddar"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "Din e-post är redan verifierad!"
|
||||
},
|
||||
@@ -704,6 +761,15 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "Verifiering av e-post misslyckades"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.description": {
|
||||
"message": "Ett e-postmeddelande med en verifieringslänk har skickats till {email}."
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "E-postmeddelande skickat"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Ett fel inträffade"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "Din e-postadress har verifierats!"
|
||||
},
|
||||
@@ -827,6 +893,18 @@
|
||||
"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."
|
||||
},
|
||||
"conversation-thread.error.closing-report": {
|
||||
"message": "Fel vid stängning av rapport"
|
||||
},
|
||||
"conversation-thread.error.reopening-report": {
|
||||
"message": "Fel vid öppning av rapport"
|
||||
},
|
||||
"conversation-thread.error.sending-message": {
|
||||
"message": "Kunde inte skicka meddelande"
|
||||
},
|
||||
@@ -842,9 +920,15 @@
|
||||
"conversation-thread.reply-modal.confirmation.label": {
|
||||
"message": "Jag förstår att moderatorerna inte aktivt övervakar tråden."
|
||||
},
|
||||
"conversation-thread.reply-modal.description": {
|
||||
"message": "Ditt projekt är redan godkänt. Moderatorteamet övervakar därför inte aktivt den här tråden. De kan dock fortfarande se ditt inlägg om det uppstår något problem med ditt projekt."
|
||||
},
|
||||
"conversation-thread.reply-modal.header": {
|
||||
"message": "Svara tråden"
|
||||
},
|
||||
"conversation-thread.reply-modal.help-center-note": {
|
||||
"message": "Ifall du behöver komma i kontakt med moderatorteamet, vänligen använd <help-center-link>Modrinth hjälpcenter</help-center-link> och klicka på den blåa bubblan nere till höger för att kontakta support."
|
||||
},
|
||||
"conversation-thread.resubmit-modal.confirmation.description": {
|
||||
"message": "Bekräfta att jag tagit itu med meddelandena från moderatorerna"
|
||||
},
|
||||
@@ -1334,6 +1418,9 @@
|
||||
"dashboard.discord-roles.role.big-creator": {
|
||||
"message": "1 mn nedladdningar"
|
||||
},
|
||||
"dashboard.discord-roles.role.creator": {
|
||||
"message": "Kreatör"
|
||||
},
|
||||
"dashboard.discord-roles.role.pride": {
|
||||
"message": "Pride 2026"
|
||||
},
|
||||
@@ -1427,24 +1514,6 @@
|
||||
"dashboard.projects.project.icon-alt": {
|
||||
"message": "Ikon för {title}"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Stigande"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Fallande"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Namn"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Status"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Typ"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Ikon"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
|
||||
@@ -446,18 +446,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "ตั้งรหัสผ่านของคุณใหม่"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "โปรดป้อนรหัสการยืนยันตัวตนแบบ 2 ชั้นเพื่อดำเนินการต่อ"
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "ป้อนรหัสการยืนยันตัวตนแบบ 2 ชั้น"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "ป้อนรหัส"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "ลงชื่อเข้าใช้ด้วย"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "ลงชื่อเข้าใช้"
|
||||
},
|
||||
@@ -470,9 +461,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "ลงทะเบียน"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "สมัครใช้งานด้วย"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "ตั้งค่าบัญชี"
|
||||
},
|
||||
|
||||
@@ -692,9 +692,57 @@
|
||||
"auth.authorize.error.no-redirect-url": {
|
||||
"message": "Yanıtta yönlendirme konumu bulunamadı"
|
||||
},
|
||||
"auth.authorize.errro-title": {
|
||||
"message": "Bir hata ile karşılaşıldı"
|
||||
},
|
||||
"auth.authorize.redirect-url": {
|
||||
"message": "<redirect-url>{url}</redirect-url> adresine yönlendirileceksiniz"
|
||||
},
|
||||
"auth.create-account.age-requirement.warning-title": {
|
||||
"message": "Yaş gereksinimi"
|
||||
},
|
||||
"auth.create-account.complete-sign-up": {
|
||||
"message": "Kaydolmayı bitir"
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.text": {
|
||||
"message": "Lütfen geçerli bir doğum tarihi girin. Doğum tarihiniz 0000 olamaz."
|
||||
},
|
||||
"auth.create-account.date-of-birth.invalid.title": {
|
||||
"message": "Geçersiz doğum tarihi"
|
||||
},
|
||||
"auth.create-account.date-of-birth.label": {
|
||||
"message": "Doğum tarihi"
|
||||
},
|
||||
"auth.create-account.date-of-birth.placeholder": {
|
||||
"message": "Doğum tarihinizi seçin"
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.text": {
|
||||
"message": "Lütfen devam etmeden önce doğum tarihinizi girin."
|
||||
},
|
||||
"auth.create-account.date-of-birth.required.title": {
|
||||
"message": "Doğum tarihi gerekli"
|
||||
},
|
||||
"auth.create-account.date-of-birth.under13-helper": {
|
||||
"message": "Modrinth'de hesap oluşturmak için yaş gereksinimini karşılamıyorsunuz."
|
||||
},
|
||||
"auth.create-account.page-title": {
|
||||
"message": "Hesap oluştur"
|
||||
},
|
||||
"auth.create-account.security-check.label": {
|
||||
"message": "Güvenlik kontrolü"
|
||||
},
|
||||
"auth.create-account.subscribe.label": {
|
||||
"message": "Modrinth'in çalıştığı güzel şeylerden beni email ile bilgilendir"
|
||||
},
|
||||
"auth.create-account.title": {
|
||||
"message": "Hesap oluştur"
|
||||
},
|
||||
"auth.create-account.username.label": {
|
||||
"message": "Kullanıcı adı"
|
||||
},
|
||||
"auth.create-account.username.placeholder": {
|
||||
"message": "Kullanıcı adı giriniz"
|
||||
},
|
||||
"auth.reset-password.method-choice.action": {
|
||||
"message": "Kurtarma e-postası gönder"
|
||||
},
|
||||
@@ -728,24 +776,51 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Parolanızı sıfırlayın"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Lütfen devam etmek için bir çift aşamalı kod girin."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Çift aşamalı kodu girin"
|
||||
"message": "İki aşamalı doğrulama"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Kodu girin..."
|
||||
},
|
||||
"auth.sign-in.continue-with-email": {
|
||||
"message": "Email ile devam et"
|
||||
},
|
||||
"auth.sign-in.continue-with-passkey": {
|
||||
"message": "Giriş anahtarı ile devam et"
|
||||
},
|
||||
"auth.sign-in.create-account": {
|
||||
"message": "Kayıt ol"
|
||||
},
|
||||
"auth.sign-in.forgot-password": {
|
||||
"message": "Şifremi unuttum"
|
||||
},
|
||||
"auth.sign-in.last-sign-in": {
|
||||
"message": "Son kullanılan hesap"
|
||||
},
|
||||
"auth.sign-in.no-account": {
|
||||
"message": "Hesabınız yok mu?"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Şununla giriş yap"
|
||||
"message": "Modrinth'e giriş yapın"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Giriş Yap"
|
||||
},
|
||||
"auth.sign-up.age-requirement.warning-title": {
|
||||
"message": "Yaş zorunluluğu"
|
||||
},
|
||||
"auth.sign-up.continue-with-email": {
|
||||
"message": "Email ile devam edin"
|
||||
},
|
||||
"auth.sign-up.legal-dislaimer": {
|
||||
"message": "Bir hesap oluşturarak, Modrinth'in <terms-link>Kurallar</terms-link> ve <privacy-policy-link>Gizlilik İlkeleri </privacy-policy-link>'ni kabul etmiş bulunursunuz."
|
||||
},
|
||||
"auth.sign-up.show-fewer-options": {
|
||||
"message": "Daha az seçenek göster"
|
||||
},
|
||||
"auth.sign-up.show-other-options": {
|
||||
"message": "Diğer seçenekleri göster"
|
||||
},
|
||||
"auth.sign-up.sign-in-option.title": {
|
||||
"message": "Zaten bir hesabınız var mı?"
|
||||
},
|
||||
@@ -753,11 +828,14 @@
|
||||
"message": "Kaydol"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Şunlarla giriş yapın"
|
||||
"message": "Hesap oluştur"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Hesap ayarları"
|
||||
},
|
||||
"auth.verify-email.action.discover-mods": {
|
||||
"message": "Mod'ları keşfedin"
|
||||
},
|
||||
"auth.verify-email.already-verified.description": {
|
||||
"message": "E-postan zaten doğrulanmış!"
|
||||
},
|
||||
@@ -776,6 +854,12 @@
|
||||
"auth.verify-email.failed-verification.title": {
|
||||
"message": "E-posta doğrulaması başarısız"
|
||||
},
|
||||
"auth.verify-email.notification.email-sent.title": {
|
||||
"message": "Sana bir Email gönderdik"
|
||||
},
|
||||
"auth.verify-email.notification.error-occurred.title": {
|
||||
"message": "Bir hata yaşandı"
|
||||
},
|
||||
"auth.verify-email.post-verification.description": {
|
||||
"message": "E-posta adresiniz başarıyla doğrulandı!"
|
||||
},
|
||||
@@ -1490,9 +1574,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Bildirimler yükleniyor..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Aşağıdan seçerek birden fazla projeyi düzenleyebilirsiniz."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Sunucu projeleri toplu düzenlemeyi desteklemez"
|
||||
},
|
||||
@@ -1568,24 +1649,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Lütfen ortam meta verilerini inceleyin"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Artan"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Azalan sırada sırala"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "İsim"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Durum"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Tip"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Simge"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "Kimlik"
|
||||
},
|
||||
@@ -1805,6 +1868,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Sunucuya geri dön"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Sunucuya geri dön"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Sıfırlamayı iptal et"
|
||||
},
|
||||
@@ -3314,44 +3380,32 @@
|
||||
"project.settings.general.url.title": {
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Lütfen aşağıdaki dosyaların tümünü yeniden dağıtma izniniz olduğuna dair kanıt sunun; böylece bekletilen tüm sürümler otomatik olarak yayınlanacaktır."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Projenizi inceleme için göndermeden önce, lütfen aşağıdaki dosyaların tümünü yeniden dağıtma izniniz olduğuna dair kanıt sunun."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Bilinmeyen gömülü içerik"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Tüm harici içeriklere atıfta bulunulmuştur."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Atamalar tamamlandı!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Sürümlerinizin hiçbiri harici içerik içermez, bu nedenle izin alma konusunda endişelenmenize gerek yoktur."
|
||||
"message": "İzinler tamamlandı!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Hazırsınız!"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Eklediğiniz bazı harici içerikleri yeniden dağıtma izniniz yok. Modrinth'te yayınlamak için lütfen ihlalde bulunan içeriği kaldırın."
|
||||
"project.settings.permissions.expand-all": {
|
||||
"message": "Hepsini genişlet"
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Bazı içerikler dahil edilemez"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Eğer Modrinth'te barındırılmayan içerik ekliyorsanız, bu içeriğin nereden geldiğini ve dosyaları dağıtmak için yetkininize sahip olduğunuzu bize bildirmelisiniz. Bunu nasıl doğru bir şekilde yapacağınızı öğrenmek için <link>rehberimizi</link> inceleyin!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Atıfların nasıl çalıştığını öğrenin"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Daha Fazla Bilgi edinin"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "{count} {count, plural, one {harici proje} other {harici proje}} aranıyor..."
|
||||
"project.settings.permissions.sort.most-files": {
|
||||
"message": "Çoğu dosyalar"
|
||||
},
|
||||
"project.settings.permissions.sort.recently-edited": {
|
||||
"message": "Yakın zamanda düzenlenenler"
|
||||
},
|
||||
"project.settings.permissions.sort.rejected": {
|
||||
"message": "Reddedildi"
|
||||
},
|
||||
"project.settings.permissions.sort.status": {
|
||||
"message": "Durum"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Ayarlar"
|
||||
@@ -3911,6 +3965,42 @@
|
||||
"settings.account.security.email.title": {
|
||||
"message": "Eposta"
|
||||
},
|
||||
"settings.account.security.passkey.add": {
|
||||
"message": "Giriş anahtarı ekle"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.description": {
|
||||
"message": "Giriş anahtarınızı hatırlamanız için akılda kalıcı bir şey seçin."
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.label": {
|
||||
"message": "İsim"
|
||||
},
|
||||
"settings.account.security.passkey.add-modal.name.placeholder": {
|
||||
"message": "Giriş anahtarım"
|
||||
},
|
||||
"settings.account.security.passkey.description": {
|
||||
"message": "Giriş anahtarlarınızı yönetin, veya yeni bir tane ekleyin."
|
||||
},
|
||||
"settings.account.security.passkey.modal.added": {
|
||||
"message": "{ago} eklendi"
|
||||
},
|
||||
"settings.account.security.passkey.modal.loading": {
|
||||
"message": "Giriş anahtarları yükleniyor…"
|
||||
},
|
||||
"settings.account.security.passkey.modal.never-used": {
|
||||
"message": "Hiçbir zaman kullanılmadı"
|
||||
},
|
||||
"settings.account.security.passkey.modal.no-passkeys": {
|
||||
"message": "Hiçbir giriş anahtarın kayıtlı değil."
|
||||
},
|
||||
"settings.account.security.passkey.remove.title": {
|
||||
"message": "Bu giriş anahtarını kaldırmak için emin misin?"
|
||||
},
|
||||
"settings.account.security.passkey.rename-modal.header": {
|
||||
"message": "Giriş anahtarını yeniden adlandır"
|
||||
},
|
||||
"settings.account.security.passkey.title": {
|
||||
"message": "Giriş anahtarlarını yönet"
|
||||
},
|
||||
"settings.account.security.password.action.add": {
|
||||
"message": "Parola ekle"
|
||||
},
|
||||
@@ -4523,6 +4613,18 @@
|
||||
"ui.newsletter-button.tooltip": {
|
||||
"message": "Modrinth haber mektuplarına abone ol"
|
||||
},
|
||||
"version.all-versions": {
|
||||
"message": "Tüm sürümler"
|
||||
},
|
||||
"version.confirm-delete.description": {
|
||||
"message": "Bu sürüm kalıcı olarak silinecektir. Bu seçim geri alınamaz."
|
||||
},
|
||||
"version.confirm-delete.proceed": {
|
||||
"message": "Sürümü sil"
|
||||
},
|
||||
"version.confirm-delete.title": {
|
||||
"message": "Bu sürümü silmek istediğinizden emin misiniz?"
|
||||
},
|
||||
"version.environment.none.description": {
|
||||
"message": "Bu sürüm için ortam belirtilmemiş."
|
||||
},
|
||||
@@ -4534,5 +4636,11 @@
|
||||
},
|
||||
"version.environment.unknown.title": {
|
||||
"message": "Bilinmeyen ortam"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders": {
|
||||
"message": "Mod yükleyicileri"
|
||||
},
|
||||
"version.package-as-mod.mod-loaders.placeholder": {
|
||||
"message": "Mod yükleyici seç..."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -560,18 +560,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Скидання пароля"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Будь ласка, укажіть код двофакторної автентифікації, щоб продовжити."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Укажіть код двофакторної автентифікації"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Уведіть код…"
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Увійдіть за допомогою"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Вхід"
|
||||
},
|
||||
@@ -584,9 +575,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Реєстрація"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Реєстрація за допомогою"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Налаштування облікового запису"
|
||||
},
|
||||
@@ -1313,9 +1301,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Завантаження сповіщень…"
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Ви можете редагувати кілька проєктів одночасно, вибравши їх нижче."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Проєкти сервера не підтримують масове редагування"
|
||||
},
|
||||
@@ -1388,24 +1373,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Перегляньте метадані середовища"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Зростання"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Спадання"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Назва"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Статус"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Тип"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "Значок"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1625,6 +1592,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Повернутися до сервера"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Повернутися до налаштування"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Скасувати скидання"
|
||||
},
|
||||
@@ -3107,45 +3077,15 @@
|
||||
"project.settings.general.url.title": {
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Будь ласка, надайте підтвердження того, що ви маєте дозвіл на повторне розповсюдження всіх наведених нижче файлів, і будь-які приховані версії буде автоматично опубліковано."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Будь ласка, надайте підтвердження того, що у вас є дозвіл на повторне розповсюдження всіх наведених нижче файлів, перш ніж ви зможете подати свій проєкт на розгляд."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Невідомий убудований уміст"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Весь зовнішній вміст має посилання на авторство."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Авторство завершено!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Жодна з ваших версій не містить зовнішнього вмісту, тому вам не потрібно турбуватися про отримання дозволів."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Усе готово!"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Ви не маєте дозволу на повторне розповсюдження зовнішнього вмісту, який ви додали. Щоб опублікувати на Modrinth, видаліть правопорушний вміст."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Деякий уміст не можна включити"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Якщо ви додаєте вміст, який не розміщено на Modrinth, вам потрібно повідомити нам, звідки він походить, і підтвердити, що у вас є дозвіл на розповсюдження файлів. Перегляньте <link>наш посібник</link>, щоб дізнатися, як це зробити правильно!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Дізнайтеся, як працює авторство"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Дізнатися більше"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Пошук {count} {count, plural, one {зовнішнього проєкту} few {зовнішніх проєктів} many {зовнішніх проєктів} other {зовнішніх проєктів}}…"
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Налаштування"
|
||||
},
|
||||
|
||||
@@ -728,18 +728,9 @@
|
||||
"auth.reset-password.title.long": {
|
||||
"message": "Đặt lại mật khẩu của bạn"
|
||||
},
|
||||
"auth.sign-in.2fa.description": {
|
||||
"message": "Vui lòng nhập mã xác thực hai bước để tiếp tục."
|
||||
},
|
||||
"auth.sign-in.2fa.label": {
|
||||
"message": "Nhập mã xác thực hai bước"
|
||||
},
|
||||
"auth.sign-in.2fa.placeholder": {
|
||||
"message": "Nhập mã..."
|
||||
},
|
||||
"auth.sign-in.sign-in-with": {
|
||||
"message": "Đăng nhập bằng"
|
||||
},
|
||||
"auth.sign-in.title": {
|
||||
"message": "Đăng nhập"
|
||||
},
|
||||
@@ -752,9 +743,6 @@
|
||||
"auth.sign-up.title": {
|
||||
"message": "Đăng ký"
|
||||
},
|
||||
"auth.sign-up.title.sign-up-with": {
|
||||
"message": "Đăng ký bằng"
|
||||
},
|
||||
"auth.verify-email.action.account-settings": {
|
||||
"message": "Thiết đặt tài khoản"
|
||||
},
|
||||
@@ -1490,9 +1478,6 @@
|
||||
"dashboard.overview.notifications.loading": {
|
||||
"message": "Đang tải thông báo..."
|
||||
},
|
||||
"dashboard.projects.bulk-edit-hint": {
|
||||
"message": "Bạn có thể sửa đổi nhiều dự án cùng một lúc bằng cách chọn chúng ở dưới."
|
||||
},
|
||||
"dashboard.projects.bulk-edit.server-disabled": {
|
||||
"message": "Dự án máy chủ không hỗ trợ sửa đổi nhiều mục cùng một lúc"
|
||||
},
|
||||
@@ -1568,24 +1553,6 @@
|
||||
"dashboard.projects.project.review-environment-metadata": {
|
||||
"message": "Vui lòng xem lại thông tin dữ liệu"
|
||||
},
|
||||
"dashboard.projects.sort.ascending": {
|
||||
"message": "Từ dưới lên"
|
||||
},
|
||||
"dashboard.projects.sort.descending": {
|
||||
"message": "Từ trên xuống"
|
||||
},
|
||||
"dashboard.projects.sort.option.name": {
|
||||
"message": "Tên"
|
||||
},
|
||||
"dashboard.projects.sort.option.status": {
|
||||
"message": "Trạng thái"
|
||||
},
|
||||
"dashboard.projects.sort.option.type": {
|
||||
"message": "Loại"
|
||||
},
|
||||
"dashboard.projects.table.icon": {
|
||||
"message": "B.tượng"
|
||||
},
|
||||
"dashboard.projects.table.id": {
|
||||
"message": "ID"
|
||||
},
|
||||
@@ -1805,6 +1772,9 @@
|
||||
"discover.install.back-to-server": {
|
||||
"message": "Quay lại máy chủ"
|
||||
},
|
||||
"discover.install.back-to-setup": {
|
||||
"message": "Quay lại cài đặt"
|
||||
},
|
||||
"discover.install.cancel-reset": {
|
||||
"message": "Hủy cài lại"
|
||||
},
|
||||
@@ -3323,45 +3293,15 @@
|
||||
"project.settings.general.url.title": {
|
||||
"message": "URL"
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-approved": {
|
||||
"message": "Vui lòng đưa ra bằng chứng cho rằng bạn có quyền để đăng lại mọi tệp trên và bất kỳ phiên bản nào bị giữ lại sẽ tự động được đăng tải."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.description.proj-draft": {
|
||||
"message": "Vui lòng đưa ra bằng chứng cho rằng bạn có quyền để đăng lại mọi tệp trên trước khi bạn có thể đăng tải để kiểm duyệt."
|
||||
},
|
||||
"project.settings.permissions.attention-needed.title": {
|
||||
"message": "Nội dung nhúng không xác định"
|
||||
},
|
||||
"project.settings.permissions.completed.description": {
|
||||
"message": "Mọi nội dung ngoài đều có sự quy kết."
|
||||
},
|
||||
"project.settings.permissions.completed.title": {
|
||||
"message": "Đã hoàn thành quy kết!"
|
||||
},
|
||||
"project.settings.permissions.empty-state.description": {
|
||||
"message": "Không phiên bản nào của bạn đều có nội dung ngoài, nên bạn không cần lo lắng về quyền."
|
||||
},
|
||||
"project.settings.permissions.empty-state.heading": {
|
||||
"message": "Mọi thứ đều sẵn sàng!"
|
||||
},
|
||||
"project.settings.permissions.fail.description": {
|
||||
"message": "Bạn không có quyền đăng tải một số nội dung bạn đã thêm. Để đăng lên Modrinth, xóa nội dung bản quyền."
|
||||
},
|
||||
"project.settings.permissions.fail.title": {
|
||||
"message": "Một số nội dung không thể bao gồm"
|
||||
},
|
||||
"project.settings.permissions.info-banner.description": {
|
||||
"message": "Nếu bạn đăng nội dung không dược chủ trì trên modrinth, bạn cần cho chúng tôi biết nó đến từ đâu và xác minh mạn có quyền để đăng tải những tệp đó. Hãy xem <link>hướng dẫn</link> để biết về cách làm điều này đúng cách!"
|
||||
},
|
||||
"project.settings.permissions.info-banner.title": {
|
||||
"message": "Tìm hiểu cách quy kết hoạt động"
|
||||
},
|
||||
"project.settings.permissions.learn-more": {
|
||||
"message": "Tìm hiểu thêm"
|
||||
},
|
||||
"project.settings.permissions.search-placeholder": {
|
||||
"message": "Tìm kiếm trong {count} {count, plural,other {dự án ngoài}}..."
|
||||
},
|
||||
"project.settings.title": {
|
||||
"message": "Cài đặt"
|
||||
},
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user