feat: implement world creation flow routes

This commit is contained in:
Calum H. (IMB11)
2026-06-26 17:09:22 +01:00
parent 0a451d9f9a
commit 54e6fe09cd
65 changed files with 834 additions and 1307 deletions
@@ -168,7 +168,7 @@
<component
:is="item.icon"
v-if="item.icon"
class="flex size-5 shrink-0"
class="flex size-5 shrink-0 text-current"
aria-hidden="true"
v-bind="item.iconProps"
/>
@@ -185,7 +185,7 @@
<component
:is="item.icon"
v-if="item.icon"
class="flex size-5 shrink-0"
class="flex size-5 shrink-0 text-current"
aria-hidden="true"
v-bind="item.iconProps"
/>
@@ -200,7 +200,7 @@
<component
:is="item.icon"
v-if="item.icon"
class="flex size-5 shrink-0"
class="flex size-5 shrink-0 text-current"
aria-hidden="true"
v-bind="item.iconProps"
/>
@@ -419,7 +419,7 @@
<component
:is="item.icon"
v-if="item.icon"
class="flex size-5 shrink-0"
class="flex size-5 shrink-0 text-current"
aria-hidden="true"
v-bind="item.iconProps"
/>
@@ -436,7 +436,7 @@
<component
:is="item.icon"
v-if="item.icon"
class="flex size-5 shrink-0"
class="flex size-5 shrink-0 text-current"
aria-hidden="true"
v-bind="item.iconProps"
/>
@@ -451,7 +451,7 @@
<component
:is="item.icon"
v-if="item.icon"
class="flex size-5 shrink-0"
class="flex size-5 shrink-0 text-current"
aria-hidden="true"
v-bind="item.iconProps"
/>
+5 -5
View File
@@ -87,6 +87,11 @@ export type { TabsTab, TabsValue } from './Tabs.vue'
export { default as Tabs } from './Tabs.vue'
export { default as TagItem } from './TagItem.vue'
export { default as TagTagItem } from './TagTagItem.vue'
export type {
Item as TeleportOverflowMenuItem,
Option as TeleportOverflowMenuOption,
} from './TeleportOverflowMenu.vue'
export { default as TeleportOverflowMenu } from './TeleportOverflowMenu.vue'
export type {
TimeFrameLastUnit,
TimeFrameLastUnitOption,
@@ -95,11 +100,6 @@ export type {
TimeFramePreset,
} from './TimeFramePicker.vue'
export { default as TimeFramePicker } from './TimeFramePicker.vue'
export type {
Item as TeleportOverflowMenuItem,
Option as TeleportOverflowMenuOption,
} from './TeleportOverflowMenu.vue'
export { default as TeleportOverflowMenu } from './TeleportOverflowMenu.vue'
export { default as Timeline } from './Timeline.vue'
export { default as Toggle } from './Toggle.vue'
export { default as UnsavedChangesPopup } from './UnsavedChangesPopup.vue'
@@ -4,7 +4,9 @@
v-if="ctx.flowType !== 'server-onboarding' && ctx.flowType !== 'reset-server'"
class="flex flex-col gap-2"
>
<span class="font-semibold text-contrast">{{ formatMessage(messages.worldNameLabel) }}</span>
<span class="font-semibold text-contrast">
{{ formatMessage(messages.worldNameLabel) }} <span class="text-red">*</span>
</span>
<StyledInput
v-model="worldName"
:placeholder="formatMessage(messages.worldNamePlaceholder)"
@@ -156,11 +158,11 @@ const { formatMessage } = useVIntl()
const messages = defineMessages({
worldNameLabel: {
id: 'creation-flow.modal.final-config.world-name.label',
defaultMessage: 'World name',
defaultMessage: 'Instance name',
},
worldNamePlaceholder: {
id: 'creation-flow.modal.final-config.world-name.placeholder',
defaultMessage: 'Enter world name',
defaultMessage: 'Enter instance name',
},
gameVersionPlaceholder: {
id: 'creation-flow.modal.final-config.game-version.placeholder',
@@ -83,7 +83,7 @@ const messages = defineMessages({
},
worldTypeTitle: {
id: 'creation-flow.modal.setup-type.title.world',
defaultMessage: 'Select world type',
defaultMessage: 'Select instance type',
},
customSetupTitle: {
id: 'creation-flow.modal.setup-type.option.custom-setup.title',
@@ -95,11 +95,11 @@ const messages = defineMessages({
},
modpackBaseTitle: {
id: 'creation-flow.modal.setup-type.option.modpack-base.title',
defaultMessage: 'Install modpack',
defaultMessage: 'Modpack base',
},
modpackBaseDescription: {
id: 'creation-flow.modal.setup-type.option.modpack-base.description',
defaultMessage: 'Browse modpacks on Modrinth or import one from a file.',
defaultMessage: 'Use a popular modpack as your starting point.',
},
importInstanceTitle: {
id: 'creation-flow.modal.setup-type.option.import-instance.title',
@@ -127,7 +127,7 @@ const setupTypeTitle = computed(() => {
if (ctx.flowType === 'instance') {
return formatMessage(messages.instanceTypeTitle)
}
if (ctx.flowType === 'server-onboarding' || ctx.flowType === 'reset-server') {
if (ctx.flowType === 'reset-server') {
return formatMessage(messages.installationTypeTitle)
}
return formatMessage(messages.worldTypeTitle)
@@ -38,11 +38,11 @@ const purpurSupportedVersionsQueryKey = ['creation-flow', 'purpur', 'supported-v
export const creationFlowMessages = defineMessages({
createWorldTitle: {
id: 'creation-flow.title.create-world',
defaultMessage: 'Create world',
defaultMessage: 'Create instance',
},
setUpServerTitle: {
id: 'creation-flow.title.set-up-server',
defaultMessage: 'Set up server',
defaultMessage: 'Create instance',
},
resetServerTitle: {
id: 'creation-flow.title.reset-server',
@@ -54,7 +54,7 @@ export const creationFlowMessages = defineMessages({
},
createWorldButton: {
id: 'creation-flow.button.create-world',
defaultMessage: 'Create world',
defaultMessage: 'Create instance',
},
createInstanceButton: {
id: 'creation-flow.button.create-instance',
@@ -62,7 +62,7 @@ export const creationFlowMessages = defineMessages({
},
setupServerButton: {
id: 'creation-flow.button.setup-server',
defaultMessage: 'Setup server',
defaultMessage: 'Create instance',
},
finishButton: {
id: 'creation-flow.button.finish',
@@ -88,7 +88,7 @@ export const creationFlowMessages = defineMessages({
export const flowTypeHeadingMessages: Record<FlowType, MessageDescriptor> = {
world: creationFlowMessages.createWorldTitle,
'server-onboarding': creationFlowMessages.setUpServerTitle,
'server-onboarding': creationFlowMessages.createWorldTitle,
'reset-server': creationFlowMessages.resetServerTitle,
instance: creationFlowMessages.createInstanceTitle,
}
@@ -219,9 +219,6 @@ export interface CreationFlowContextValue {
export const [injectCreationFlowContext, provideCreationFlowContext] =
createContext<CreationFlowContextValue>('CreationFlowModal')
// TODO: replace with actual world count from the world list once available
let worldCounter = 0
export interface CreationFlowOptions {
availableLoaders?: string[]
showSnapshotToggle?: boolean
@@ -431,8 +428,7 @@ export function createCreationFlowContext(
}
setupType.value = null
isImportMode.value = false
worldCounter++
worldName.value = flowType === 'world' ? `World ${worldCounter}` : ''
worldName.value = flowType === 'world' ? 'My instance' : ''
gamemode.value = 'survival'
difficulty.value = 'normal'
worldSeed.value = ''
@@ -44,7 +44,7 @@ export const stageConfig: StageConfigInput<CreationFlowContextValue> = {
: isReset
? ctx.formatMessage(creationFlowMessages.resetServerTitle)
: isOnboarding
? ctx.formatMessage(creationFlowMessages.setupServerButton)
? ctx.formatMessage(creationFlowMessages.createWorldButton)
: ctx.formatMessage(commonMessages.continueButton)
return {
label,
@@ -83,8 +83,9 @@
<div class="px-5 pb-4">
<ButtonStyled color="brand">
<button class="w-full !h-10" @click="emit('create', world.id)">
<PlusIcon aria-hidden="true" />
<button class="w-full !h-10" :disabled="creating" @click="emit('create', world.id)">
<LoaderCircleIcon v-if="creating" class="animate-spin" aria-hidden="true" />
<PlusIcon v-else aria-hidden="true" />
{{ formatMessage(messages.createInstance) }}
</button>
</ButtonStyled>
@@ -177,41 +178,22 @@
{{ formatMessage(messages.editInstance) }}
</button>
</ButtonStyled>
<div class="flex items-center gap-2">
<ButtonStyled v-if="!world.active" color="brand">
<button
class="!shadow-none"
:disabled="switching"
@click="emit('switch', world.id)"
>
<LoaderCircleIcon v-if="switching" class="animate-spin" aria-hidden="true" />
<RefreshCwIcon v-else aria-hidden="true" />
{{ formatMessage(messages.switchInstance) }}
</button>
</ButtonStyled>
<ButtonStyled circular>
<button
v-tooltip="formatMessage(messages.instanceSettings)"
class="!shadow-none"
@click="emit('settings', world.id)"
>
<Settings2Icon aria-hidden="true" />
</button>
</ButtonStyled>
</div>
<ButtonStyled circular>
<button
v-tooltip="formatMessage(messages.instanceSettings)"
class="!shadow-none"
@click="emit('settings', world.id)"
>
<Settings2Icon aria-hidden="true" />
</button>
</ButtonStyled>
</footer>
</template>
</article>
</template>
<script setup lang="ts">
import {
LoaderCircleIcon,
PencilIcon,
PlusIcon,
RefreshCwIcon,
Settings2Icon,
} from '@modrinth/assets'
import { LoaderCircleIcon, PencilIcon, PlusIcon, Settings2Icon } from '@modrinth/assets'
import { capitalizeString } from '@modrinth/utils'
import { computed, useId, useTemplateRef } from 'vue'
@@ -257,10 +239,6 @@ const messages = defineMessages({
id: 'servers.manage.instances.card.edit',
defaultMessage: 'Edit instance',
},
switchInstance: {
id: 'servers.manage.instances.card.switch',
defaultMessage: 'Switch to instance',
},
instanceSettings: {
id: 'servers.manage.instances.card.settings',
defaultMessage: 'Instance settings',
@@ -298,13 +276,12 @@ type EmptyWorld = {
const props = defineProps<{
world: UsedWorld | EmptyWorld
switching?: boolean
creating?: boolean
}>()
const emit = defineEmits<{
create: [slotId: string]
edit: [worldId: string]
switch: [worldId: string]
settings: [worldId: string]
}>()
@@ -30,10 +30,10 @@ import { computed } from 'vue'
import type { RouteLocationRaw } from 'vue-router'
import Avatar from '#ui/components/base/Avatar.vue'
import PageHeader from '#ui/components/base/PageHeader.vue'
import type { JoinedButtonAction } from '#ui/components/base/JoinedButtons.vue'
import ServerIcon from '#ui/components/servers/icons/ServerIcon.vue'
import PageHeader from '#ui/components/base/PageHeader.vue'
import LoaderIcon from '#ui/components/servers/icons/LoaderIcon.vue'
import ServerIcon from '#ui/components/servers/icons/ServerIcon.vue'
import {
injectModrinthClient,
injectModrinthServerContext,
@@ -212,7 +212,9 @@ const serverAddress = computed(() => {
})
const showAddress = computed(
() => !!serverAddress.value && (!props.server?.net?.domain || !userPreferences.value.hideSubdomainLabel),
() =>
!!serverAddress.value &&
(!props.server?.net?.domain || !userPreferences.value.hideSubdomainLabel),
)
const metadataItems = computed<HeaderMetadataItem[]>(() => {
@@ -205,9 +205,7 @@
<span>{{
warning ??
formatMessage(
incompatibilityWarningMode
? messages.incompatibilityWarning
: messages.updateWarning,
incompatibilityWarningMode ? messages.incompatibilityWarning : messages.updateWarning,
{
type: updateWarningTargetType,
},
@@ -1,17 +1,5 @@
<template>
<div class="flex flex-col gap-6">
<Teleport to="body">
<div class="relative z-[100]">
<ConfirmModal
ref="resetToOnboardingModal"
:title="formatMessage(messages.resetToOnboardingModalTitle)"
:description="formatMessage(messages.resetToOnboardingModalDescription)"
:proceed-label="formatMessage(messages.resetToOnboardingButton)"
@proceed="confirmResetToOnboarding"
/>
</div>
</Teleport>
<InstallationSettingsLayout
ref="installationSettingsLayout"
@reset-server="showResetServerModal"
@@ -29,35 +17,13 @@
</Teleport>
</template>
</InstallationSettingsLayout>
<div v-if="isSiteAdmin" class="flex flex-col gap-2.5">
<span class="text-lg font-semibold text-contrast">
{{ formatMessage(messages.supportOptionsTitle) }}
</span>
<div>
<ButtonStyled color="red">
<button
v-tooltip="supportResetToOnboardingTooltip"
class="!shadow-none"
:disabled="supportResetToOnboardingDisabled"
@click="showResetToOnboardingModal"
>
<RotateCounterClockwiseIcon class="size-5" />
{{ formatMessage(messages.resetToOnboardingButton) }}
</button>
</ButtonStyled>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import type { Archon } from '@modrinth/api-client'
import { RotateCounterClockwiseIcon } from '@modrinth/assets'
import {
ButtonStyled,
commonMessages,
ConfirmModal,
defineMessages,
formatLoaderLabel,
type GameVersionOption,
@@ -133,35 +99,6 @@ const messages = defineMessages({
id: 'hosting.loader.failed-to-unlink',
defaultMessage: 'Failed to unlink modpack',
},
supportOptionsTitle: {
id: 'hosting.loader.support-options-title',
defaultMessage: 'Support options',
},
resetToOnboardingButton: {
id: 'hosting.loader.reset-to-onboarding-button',
defaultMessage: 'Reset to onboarding',
},
resetToOnboardingModalTitle: {
id: 'hosting.loader.reset-to-onboarding-modal-title',
defaultMessage: 'Reset to onboarding',
},
resetToOnboardingModalDescription: {
id: 'hosting.loader.reset-to-onboarding-modal-description',
defaultMessage:
'This will send the instance back into onboarding so setup can be completed again. Are you sure you want to continue?',
},
resetToOnboardingSuccessTitle: {
id: 'hosting.loader.reset-to-onboarding-success-title',
defaultMessage: 'Instance reset to onboarding',
},
resetToOnboardingSuccessDescription: {
id: 'hosting.loader.reset-to-onboarding-success-description',
defaultMessage: 'The instance has been returned to the onboarding flow.',
},
failedToResetToOnboarding: {
id: 'hosting.loader.failed-to-reset-to-onboarding',
defaultMessage: 'Failed to reset instance to onboarding',
},
})
const emit = defineEmits<{
@@ -229,8 +166,6 @@ const modpackVersionsQuery = useQuery({
enabled: computed(() => !!modpackProjectId.value),
})
const isSiteAdmin = computed(() => serverSettings.currentUserRole.value === 'admin')
function normalizeLoader(loader?: string | null) {
const normalized = loader?.toLowerCase()
if (!normalized) return 'vanilla'
@@ -249,19 +184,6 @@ const currentLoaderVersion = computed(
)
const editingPlatform = ref(currentPlatform.value)
const editingGameVersion = ref(currentGameVersion.value)
const resetToOnboardingModal = ref<InstanceType<typeof ConfirmModal>>()
const isResettingToOnboarding = ref(false)
const supportResetToOnboardingDisabled = computed(
() => !worldId.value || isResettingToOnboarding.value || !canResetServer.value,
)
const supportResetToOnboardingTooltip = computed(() =>
!canResetServer.value ? permissionDeniedMessage.value : undefined,
)
function showResetToOnboardingModal() {
if (supportResetToOnboardingDisabled.value) return
resetToOnboardingModal.value?.show()
}
const modLoaders = ['fabric', 'forge', 'quilt', 'neoforge']
@@ -910,40 +832,4 @@ function onBrowseModpacks() {
from: 'reset-server',
})
}
async function confirmResetToOnboarding() {
if (supportResetToOnboardingDisabled.value || !worldId.value) return
try {
isResettingToOnboarding.value = true
await client.archon.servers_v1.resetToOnboarding(serverId, worldId.value)
modrinthServersConsole.clear()
try {
await client.kyros.logs_v1.clear()
} catch (error) {
console.error('Failed to clear server logs:', error)
}
server.value.flows = { intro: true }
await Promise.all([
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', serverId] }),
queryClient.invalidateQueries({ queryKey: ['servers', 'v1', 'detail', serverId] }),
queryClient.invalidateQueries({
queryKey: ['servers', 'worlds', 'summary', 'v1', serverId],
}),
])
addNotification({
type: 'success',
title: formatMessage(messages.resetToOnboardingSuccessTitle),
text: formatMessage(messages.resetToOnboardingSuccessDescription),
})
serverSettings.closeModal?.()
} catch (err) {
addNotification({
type: 'error',
text: err instanceof Error ? err.message : formatMessage(messages.failedToResetToOnboarding),
})
} finally {
isResettingToOnboarding.value = false
}
}
</script>
@@ -2,6 +2,20 @@
<div class="flex h-full w-full flex-col gap-6">
<Teleport to="body">
<div class="relative z-[100]">
<ConfirmModal
ref="resetWorldFilesModal"
:title="formatMessage(messages.resetWorldFilesModalTitle)"
:description="formatMessage(messages.resetWorldFilesModalDescription)"
:proceed-label="formatMessage(messages.resetWorldFilesButton)"
@proceed="resetWorldFiles"
/>
<ConfirmModal
ref="resetToOnboardingModal"
:title="formatMessage(messages.resetToOnboardingModalTitle)"
:description="formatMessage(messages.resetToOnboardingModalDescription)"
:proceed-label="formatMessage(messages.resetToOnboardingButton)"
@proceed="confirmResetToOnboarding"
/>
<ServerSetupModal
ref="setupModal"
@reinstall="onResetEverything"
@@ -14,14 +28,13 @@
<label for="instance-name-field" class="font-semibold text-contrast">
{{ formatMessage(messages.instanceNameLabel) }}
</label>
<div v-tooltip="formatMessage(messages.notImplemented)" class="max-w-[400px]">
<StyledInput
id="instance-name-field"
:model-value="instanceName"
disabled
wrapper-class="w-full"
/>
</div>
<StyledInput
id="instance-name-field"
v-model="editingInstanceName"
v-tooltip="nameSaveDisabledTooltip"
:disabled="isNameSaveDisabled"
:maxlength="64"
/>
<span class="text-primary">{{ formatMessage(messages.instanceNameDescription) }}</span>
</div>
@@ -31,14 +44,17 @@
</span>
<div class="flex flex-col gap-4 rounded-2xl border border-solid border-surface-5 p-4">
<div class="flex flex-col items-start gap-2.5">
<div v-tooltip="formatMessage(messages.notImplemented)">
<ButtonStyled color="red">
<button class="!shadow-none" disabled>
<RotateCounterClockwiseIcon class="size-5" />
{{ formatMessage(messages.resetWorldFilesButton) }}
</button>
</ButtonStyled>
</div>
<ButtonStyled color="red">
<button
v-tooltip="resetWorldFilesDisabledTooltip"
class="!shadow-none"
:disabled="isResetWorldFilesDisabled"
@click="resetWorldFilesModal?.show()"
>
<RotateCounterClockwiseIcon class="size-5" />
{{ formatMessage(messages.resetWorldFilesButton) }}
</button>
</ButtonStyled>
<span class="text-primary">
{{ formatMessage(messages.resetWorldFilesDescription) }}
</span>
@@ -57,29 +73,74 @@
</div>
</div>
</div>
<div v-if="isSiteAdmin" class="flex flex-col gap-2.5">
<span class="font-semibold text-contrast">
{{ formatMessage(messages.supportZoneLabel) }}
</span>
<div class="flex flex-col gap-4 rounded-2xl border border-solid border-surface-5 p-4">
<div class="flex flex-col items-start gap-2.5">
<ButtonStyled color="blue">
<button
v-tooltip="supportResetToOnboardingTooltip"
class="!shadow-none"
:disabled="supportResetToOnboardingDisabled"
@click="showResetToOnboardingModal"
>
<RotateCounterClockwiseIcon class="size-5" />
{{ formatMessage(messages.resetToOnboardingButton) }}
</button>
</ButtonStyled>
<span class="text-primary">
{{ formatMessage(messages.resetToOnboardingDescription) }}
</span>
</div>
</div>
</div>
<SaveBanner
:is-visible="
(canUseAdvancedSettings && hasUnsavedName && isInstanceNameValid) || isUpdatingName
"
:server-id="serverId"
:is-updating="isUpdatingName"
:save="saveInstanceName"
:reset="resetInstanceName"
/>
</div>
</template>
<script setup lang="ts">
import { RotateCounterClockwiseIcon, TrashIcon } from '@modrinth/assets'
import { useQuery, useQueryClient } from '@tanstack/vue-query'
import { computed, ref } from 'vue'
import { useMutation, useQuery, useQueryClient } from '@tanstack/vue-query'
import { computed, ref, watch } from 'vue'
import { ButtonStyled, StyledInput } from '#ui/components'
import { ButtonStyled, ConfirmModal, StyledInput } from '#ui/components'
import SaveBanner from '#ui/components/servers/SaveBanner.vue'
import ServerSetupModal from '#ui/components/servers/ServerSetupModal.vue'
import { useModrinthServersConsole } from '#ui/composables'
import { defineMessages, useVIntl } from '#ui/composables/i18n'
import { useServerPermissions } from '#ui/composables/server-permissions'
import { injectServerSettings } from '#ui/layouts/shared/server-settings'
import { injectModrinthClient, injectModrinthServerContext } from '#ui/providers'
import {
injectModrinthClient,
injectModrinthServerContext,
injectNotificationManager,
} from '#ui/providers'
const { formatMessage } = useVIntl()
const client = injectModrinthClient()
const { server, serverId, worldId, isSyncingContent, busyReasons } = injectModrinthServerContext()
const { addNotification } = injectNotificationManager()
const serverSettings = injectServerSettings()
const queryClient = useQueryClient()
const modrinthServersConsole = useModrinthServersConsole()
const { canUseAdvancedSettings, canResetServer, permissionDeniedMessage } = useServerPermissions()
const setupModal = ref<InstanceType<typeof ServerSetupModal>>()
const resetWorldFilesModal = ref<InstanceType<typeof ConfirmModal>>()
const resetToOnboardingModal = ref<InstanceType<typeof ConfirmModal>>()
const editingInstanceName = ref('')
const messages = defineMessages({
instanceNameLabel: {
@@ -90,6 +151,18 @@ const messages = defineMessages({
id: 'server.instance-settings.general.instance-name.description',
defaultMessage: 'This name is only visible on Modrinth.',
},
instanceNameSavedTitle: {
id: 'server.instance-settings.general.instance-name.saved.title',
defaultMessage: 'Instance renamed',
},
instanceNameSavedDescription: {
id: 'server.instance-settings.general.instance-name.saved.description',
defaultMessage: 'The instance name has been updated.',
},
instanceNameSaveError: {
id: 'server.instance-settings.general.instance-name.error',
defaultMessage: 'Failed to update instance name',
},
instanceFallbackName: {
id: 'server.instance-settings.general.instance-name.fallback',
defaultMessage: 'Instance',
@@ -98,6 +171,10 @@ const messages = defineMessages({
id: 'server.instance-settings.general.danger-zone.label',
defaultMessage: 'Danger zone',
},
supportZoneLabel: {
id: 'server.instance-settings.general.support-zone.label',
defaultMessage: 'Support zone',
},
resetWorldFilesButton: {
id: 'server.instance-settings.general.reset-world-files.button',
defaultMessage: 'Reset world data',
@@ -107,6 +184,56 @@ const messages = defineMessages({
defaultMessage:
'Delete the current world data and generate a new one. Your content and files will stay the same.',
},
resetWorldFilesModalTitle: {
id: 'server.instance-settings.general.reset-world-files.modal.title',
defaultMessage: 'Reset world data',
},
resetWorldFilesModalDescription: {
id: 'server.instance-settings.general.reset-world-files.modal.description',
defaultMessage:
'This deletes the world directory for this instance. Installed content and settings will stay the same.',
},
resetWorldFilesStartedTitle: {
id: 'server.instance-settings.general.reset-world-files.started.title',
defaultMessage: 'World data reset started',
},
resetWorldFilesStartedDescription: {
id: 'server.instance-settings.general.reset-world-files.started.description',
defaultMessage: 'The world directory is being reset.',
},
resetWorldFilesError: {
id: 'server.instance-settings.general.reset-world-files.error',
defaultMessage: 'Failed to reset world data',
},
resetToOnboardingButton: {
id: 'hosting.loader.reset-to-onboarding-button',
defaultMessage: 'Reset to onboarding',
},
resetToOnboardingDescription: {
id: 'hosting.loader.reset-to-onboarding-description',
defaultMessage: 'Send this instance back into onboarding so setup can be completed again.',
},
resetToOnboardingModalTitle: {
id: 'hosting.loader.reset-to-onboarding-modal-title',
defaultMessage: 'Reset to onboarding',
},
resetToOnboardingModalDescription: {
id: 'hosting.loader.reset-to-onboarding-modal-description',
defaultMessage:
'This will send the instance back into onboarding so setup can be completed again. Are you sure you want to continue?',
},
resetToOnboardingSuccessTitle: {
id: 'hosting.loader.reset-to-onboarding-success-title',
defaultMessage: 'Instance reset to onboarding',
},
resetToOnboardingSuccessDescription: {
id: 'hosting.loader.reset-to-onboarding-success-description',
defaultMessage: 'The instance has been returned to the onboarding flow.',
},
failedToResetToOnboarding: {
id: 'hosting.loader.failed-to-reset-to-onboarding',
defaultMessage: 'Failed to reset instance to onboarding',
},
resetEverythingButton: {
id: 'server.instance-settings.general.reset-everything.button',
defaultMessage: 'Reset everything',
@@ -116,10 +243,6 @@ const messages = defineMessages({
defaultMessage:
'Reset your instance completely. This removes world data, content, and any configuration. A backup of the previous instance will remain available.',
},
notImplemented: {
id: 'server.instance-settings.general.not-implemented',
defaultMessage: 'Not yet implemented',
},
})
const serverFullQuery = useQuery({
@@ -137,7 +260,7 @@ const currentWorld = computed(() => {
const instanceName = computed(
() => currentWorld.value?.name ?? formatMessage(messages.instanceFallbackName),
)
const trimmedInstanceName = computed(() => editingInstanceName.value.trim())
const isResetDisabled = computed(
() =>
!worldId.value ||
@@ -146,19 +269,145 @@ const isResetDisabled = computed(
busyReasons.value.length > 0,
)
const patchWorldMutation = useMutation({
mutationFn: (name: string) =>
client.archon.servers_v1.patchWorld(serverId, worldId.value!, { name }),
onSuccess: async () => {
await invalidateServerState()
addNotification({
type: 'success',
title: formatMessage(messages.instanceNameSavedTitle),
text: formatMessage(messages.instanceNameSavedDescription),
})
},
onError: (error) => {
addNotification({
type: 'error',
text: error instanceof Error ? error.message : formatMessage(messages.instanceNameSaveError),
})
},
})
const resetWorldMutation = useMutation({
mutationFn: () => client.archon.content_v1.resetWorld(serverId, worldId.value!),
onSuccess: async () => {
await invalidateServerState()
addNotification({
type: 'success',
title: formatMessage(messages.resetWorldFilesStartedTitle),
text: formatMessage(messages.resetWorldFilesStartedDescription),
})
},
onError: (error) => {
addNotification({
type: 'error',
text: error instanceof Error ? error.message : formatMessage(messages.resetWorldFilesError),
})
},
})
const isUpdatingName = computed(() => patchWorldMutation.isPending.value)
const isSiteAdmin = computed(() => serverSettings.currentUserRole.value === 'admin')
const isResettingToOnboarding = ref(false)
const isNameSaveDisabled = computed(
() => !worldId.value || isUpdatingName.value || !canUseAdvancedSettings.value,
)
const nameSaveDisabledTooltip = computed(() =>
canUseAdvancedSettings.value ? undefined : permissionDeniedMessage.value,
)
const isInstanceNameValid = computed(() => trimmedInstanceName.value.length > 0)
const hasUnsavedName = computed(() => trimmedInstanceName.value !== instanceName.value)
const isResetWorldFilesDisabled = computed(
() => isResetDisabled.value || resetWorldMutation.isPending.value || !canResetServer.value,
)
const resetWorldFilesDisabledTooltip = computed(() =>
canResetServer.value ? undefined : permissionDeniedMessage.value,
)
const supportResetToOnboardingDisabled = computed(
() => !worldId.value || isResettingToOnboarding.value || !canResetServer.value,
)
const supportResetToOnboardingTooltip = computed(() =>
!canResetServer.value ? permissionDeniedMessage.value : undefined,
)
watch(
instanceName,
(name) => {
editingInstanceName.value = name
},
{ immediate: true },
)
function onResetEverything() {
modrinthServersConsole.clear()
queryClient.removeQueries({ queryKey: ['servers', 'ws-state', serverId] })
void Promise.all([
void invalidateServerState()
serverSettings.closeModal?.()
}
async function saveInstanceName() {
if (isNameSaveDisabled.value || !isInstanceNameValid.value || !hasUnsavedName.value) return
await patchWorldMutation.mutateAsync(trimmedInstanceName.value)
}
function resetInstanceName() {
editingInstanceName.value = instanceName.value
}
function resetWorldFiles() {
if (isResetWorldFilesDisabled.value) return
resetWorldMutation.mutate()
}
function showResetToOnboardingModal() {
if (supportResetToOnboardingDisabled.value) return
resetToOnboardingModal.value?.show()
}
async function confirmResetToOnboarding() {
if (supportResetToOnboardingDisabled.value || !worldId.value) return
try {
isResettingToOnboarding.value = true
await client.archon.servers_v1.resetToOnboarding(serverId, worldId.value)
modrinthServersConsole.clear()
try {
await client.kyros.logs_v1.clear()
} catch (error) {
console.error('Failed to clear server logs:', error)
}
server.value.flows = { intro: true }
await invalidateServerState()
addNotification({
type: 'success',
title: formatMessage(messages.resetToOnboardingSuccessTitle),
text: formatMessage(messages.resetToOnboardingSuccessDescription),
})
serverSettings.closeModal?.()
} catch (err) {
addNotification({
type: 'error',
text: err instanceof Error ? err.message : formatMessage(messages.failedToResetToOnboarding),
})
} finally {
isResettingToOnboarding.value = false
}
}
function invalidateServerState() {
return Promise.all([
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', serverId] }),
queryClient.invalidateQueries({ queryKey: ['servers', 'v1', 'detail', serverId] }),
queryClient.invalidateQueries({
queryKey: ['servers', 'worlds', 'summary', 'v1', serverId],
}),
queryClient.invalidateQueries({ queryKey: ['files', serverId] }),
worldId.value
? queryClient.invalidateQueries({
queryKey: ['content', 'list', 'v1', serverId, worldId.value],
})
: Promise.resolve(),
])
serverSettings.closeModal?.()
}
function onBrowseModpacks() {
@@ -222,6 +222,7 @@ const serverUsersQueryKey = ['servers', 'users', 'v1', serverId]
const serverUsersQuery = useQuery({
queryKey: serverUsersQueryKey,
queryFn: () => client.archon.server_users_v1.list(serverId),
staleTime: 30_000,
})
const friendsQueryKey = ['user', 'friends', 'v3']
@@ -40,27 +40,46 @@
v-for="world in worldSlots"
:key="world.id"
:world="world"
:switching="world.type === 'world' && switchingWorldId === world.id"
@create="handleCreateWorld"
@edit="handleEditWorld"
@switch="handleSwitchWorld"
@settings="handleWorldSettings"
/>
</div>
</div>
<CreationFlowModal
ref="createWorldModalRef"
type="world"
:available-loaders="SERVER_LOADERS"
:show-snapshot-toggle="true"
:search-modpacks="searchModpacks"
:get-project-versions="getProjectVersions"
:finish-disabled="!canSetup"
:finish-disabled-tooltip="!canSetup ? permissionDeniedMessage : undefined"
@browse-modpacks="handleBrowseModpacks"
@create="onCreateWorld"
/>
<UploadProgressModal ref="uploadProgressModal" />
</template>
<script setup lang="ts">
import type { Archon } from '@modrinth/api-client'
import { InfoIcon, XIcon } from '@modrinth/assets'
import { useMutation, useQuery, useQueryClient } from '@tanstack/vue-query'
import { useQuery, useQueryClient } from '@tanstack/vue-query'
import { useStorage } from '@vueuse/core'
import { computed, ref } from 'vue'
import { useRouter } from 'vue-router'
import { computed, onBeforeUnmount, onMounted, useTemplateRef } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import {
type CreationFlowContextValue,
CreationFlowModal,
UploadProgressModal,
} from '#ui/components'
import ButtonStyled from '#ui/components/base/ButtonStyled.vue'
import InstanceCard from '#ui/components/servers/instances/InstanceCard.vue'
import { defineMessages, useVIntl } from '#ui/composables/i18n'
import { useServerPermissions } from '#ui/composables/server-permissions'
import {
injectModrinthClient,
injectModrinthServerContext,
@@ -87,17 +106,17 @@ const messages = defineMessages({
id: 'servers.manage.instances.info.dismiss',
defaultMessage: "Don't show this again",
},
switchSuccessTitle: {
id: 'servers.manage.instances.switch.success.title',
defaultMessage: 'Instance switched',
createSuccessTitle: {
id: 'servers.manage.instances.create.success.title',
defaultMessage: 'Instance created',
},
switchSuccessText: {
id: 'servers.manage.instances.switch.success.text',
defaultMessage: '{instance} is now the active instance.',
createSuccessText: {
id: 'servers.manage.instances.create.success.text',
defaultMessage: '{instance} is ready to configure.',
},
switchError: {
id: 'servers.manage.instances.switch.error',
defaultMessage: 'Failed to switch instance',
createError: {
id: 'servers.manage.instances.create.error',
defaultMessage: 'Failed to create instance',
},
})
@@ -136,6 +155,7 @@ type ContentSummary = {
const WORLD_SLOT_COUNT = 3
const INSTANCE_INFO_ADMONITION_KEY = 'server-instances-info-admonition-dismissed'
const SERVER_LOADERS = ['vanilla', 'fabric', 'neoforge', 'forge', 'quilt', 'paper', 'purpur']
const client = injectModrinthClient()
const { serverId, server, isServerRunning } = injectModrinthServerContext()
@@ -143,9 +163,14 @@ const { openServerInstanceSettings } = injectServerSettingsModal()
const { addNotification } = injectNotificationManager()
const { formatMessage } = useVIntl()
const router = useRouter()
const route = useRoute()
const queryClient = useQueryClient()
const { canSetup, permissionDeniedMessage } = useServerPermissions()
const instanceInfoAdmonitionDismissed = useStorage(INSTANCE_INFO_ADMONITION_KEY, false)
const switchingWorldId = ref<string | null>(null)
const createWorldModalRef =
useTemplateRef<InstanceType<typeof CreationFlowModal>>('createWorldModalRef')
const uploadProgressModal =
useTemplateRef<InstanceType<typeof UploadProgressModal>>('uploadProgressModal')
const worldsQuery = useQuery({
queryKey: computed(() => ['servers', 'worlds', 'summary', 'v1', serverId]),
@@ -155,39 +180,29 @@ const worldsQuery = useQuery({
const worldsPending = computed(() => worldsQuery.isLoading.value && !worldsQuery.data.value)
const worldSlots = computed(() => worldsQuery.data.value ?? [])
const switchWorldMutation = useMutation({
mutationFn: (worldId: string) => client.archon.servers_v1.switchWorld(serverId, worldId),
onMutate: (worldId) => {
switchingWorldId.value = worldId
},
onSuccess: async (_, worldId) => {
updateActiveWorld(worldId)
await Promise.all([
queryClient.invalidateQueries({
queryKey: ['servers', 'worlds', 'summary', 'v1', serverId],
}),
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', serverId] }),
queryClient.invalidateQueries({ queryKey: ['servers', 'v1', 'detail', serverId] }),
])
updateActiveWorld(worldId)
const worldName = getWorldSlotName(worldId)
addNotification({
type: 'success',
title: formatMessage(messages.switchSuccessTitle),
text: formatMessage(messages.switchSuccessText, { instance: worldName }),
})
},
onError: (error) => {
addNotification({
type: 'error',
text: error instanceof Error ? error.message : formatMessage(messages.switchError),
})
},
onSettled: () => {
switchingWorldId.value = null
},
onMounted(() => {
if (route.query.resumeModal !== 'create-instance') return
router.replace({ query: { ...route.query, resumeModal: undefined } })
createWorldModalRef.value?.show()
})
onBeforeUnmount(() => createWorldModalRef.value?.hide())
async function searchModpacks(query: string, limit: number = 10) {
return client.labrinth.projects_v2.search({
query: query || undefined,
new_filters:
'project_types = "modpack" AND (client_side = "optional" OR client_side = "required") AND server_side = "required"',
limit,
})
}
async function getProjectVersions(projectId: string) {
const versions = await client.labrinth.versions_v3.getProjectVersions(projectId)
return versions.map((version) => ({ id: version.id }))
}
async function loadWorldSlots(): Promise<WorldSlot[]> {
try {
const serverFull = await client.archon.servers_v1.get(serverId)
@@ -198,7 +213,7 @@ async function loadWorldSlots(): Promise<WorldSlot[]> {
}),
)
return padWorldSlots(slots)
return padWorldSlots(sortWorldSlotsByCreatedAt(slots))
} catch {
return createDummyWorldSlots()
}
@@ -253,6 +268,16 @@ function padWorldSlots(slots: WorldSlot[]): WorldSlot[] {
return padded
}
function sortWorldSlotsByCreatedAt(slots: WorldSlot[]): WorldSlot[] {
return [...slots].sort((a, b) => getCreatedAtTimestamp(a) - getCreatedAtTimestamp(b))
}
function getCreatedAtTimestamp(slot: WorldSlot): number {
if (slot.type !== 'world') return Number.POSITIVE_INFINITY
const timestamp = new Date(slot.createdAt ?? '').getTime()
return Number.isFinite(timestamp) ? timestamp : Number.POSITIVE_INFINITY
}
function getLinkedModpack(modpack: Archon.Content.v1.ModpackFields | null): LinkedModpack | null {
if (!modpack) return null
@@ -372,55 +397,142 @@ function handleEditWorld(worldId: string) {
)
}
function handleSwitchWorld(worldId: string) {
const world = worldSlots.value.find((slot) => slot.type === 'world' && slot.id === worldId)
if (world?.type !== 'world' || world.active || switchWorldMutation.isPending.value) return
switchWorldMutation.mutate(worldId)
}
function handleWorldSettings(worldId: string) {
openServerInstanceSettings({ tabId: 'general', worldId })
}
function handleCreateWorld() {
openServerInstanceSettings({ tabId: 'installation' })
createWorldModalRef.value?.show()
}
function dismissInstanceInfoAdmonition() {
instanceInfoAdmonitionDismissed.value = true
}
function updateActiveWorld(worldId: string) {
queryClient.setQueryData<WorldSlot[]>(
['servers', 'worlds', 'summary', 'v1', serverId],
(current) =>
current?.map((slot) =>
slot.type === 'world'
? {
...slot,
active: slot.id === worldId,
lastActiveAt: slot.id === worldId ? new Date().toISOString() : slot.lastActiveAt,
}
: slot,
),
)
queryClient.setQueryData<Archon.Servers.v1.ServerFull>(
['servers', 'v1', 'detail', serverId],
(current) =>
current
? {
...current,
worlds: current.worlds.map((world) => ({
...world,
is_active: world.id === worldId,
})),
}
: current,
function handleBrowseModpacks() {
if (!canSetup.value) return
router.push({
path: '/discover/modpacks',
query: { sid: serverId, from: 'create-instance' },
})
}
async function onCreateWorld(ctx: CreationFlowContextValue) {
if (!canSetup.value) {
ctx.loading.value = false
return
}
const name = ctx.worldName.value.trim()
const properties = ctx.buildProperties()
let createdWorldId: string | null = null
try {
if (ctx.setupType.value === 'modpack' && ctx.modpackFile.value) {
const createdWorld = await client.archon.servers_v1.createWorld(serverId, {
name,
properties,
content: createBareWorldContent(ctx),
})
createdWorldId = createdWorld.id
createWorldModalRef.value?.hide()
const handle = client.kyros.content_v1.uploadModpackFile(
createdWorld.id,
ctx.modpackFile.value,
properties,
{ softOverride: false },
)
if (uploadProgressModal.value) {
await uploadProgressModal.value.track(handle)
} else {
await handle.promise
}
} else {
const createdWorld = await client.archon.servers_v1.createWorld(serverId, {
name,
properties,
content: createWorldContent(ctx),
})
createdWorldId = createdWorld.id
}
if (!createdWorldId) {
throw new Error(formatMessage(messages.createError))
}
server.value.status = 'installing'
await handleCreateWorldSuccess(createdWorldId, name)
createWorldModalRef.value?.hide()
} catch (error) {
addNotification({
type: 'error',
text: error instanceof Error ? error.message : formatMessage(messages.createError),
})
if (createdWorldId) {
await invalidateWorldQueries()
}
} finally {
ctx.loading.value = false
}
}
function createWorldContent(ctx: CreationFlowContextValue): Archon.Servers.v1.WorldContent {
if (ctx.setupType.value === 'modpack' && ctx.modpackSelection.value) {
return {
content_variant: 'modpack',
spec: {
platform: 'modrinth',
project_id: ctx.modpackSelection.value.projectId,
version_id: ctx.modpackSelection.value.versionId,
},
}
}
return createBareWorldContent(ctx)
}
function createBareWorldContent(ctx: CreationFlowContextValue): Archon.Servers.v1.WorldContent {
const loader =
ctx.setupType.value === 'vanilla' ? 'vanilla' : toApiLoader(ctx.selectedLoader.value)
return {
content_variant: 'bare',
loader,
version: loader === 'vanilla' ? '' : (ctx.selectedLoaderVersion.value ?? ''),
game_version: ctx.selectedGameVersion.value ?? server.value?.mc_version ?? null,
}
}
async function handleCreateWorldSuccess(worldId: string, name: string) {
await invalidateWorldQueries()
addNotification({
type: 'success',
title: formatMessage(messages.createSuccessTitle),
text: formatMessage(messages.createSuccessText, { instance: name }),
})
await router.push(
`/hosting/manage/${encodeURIComponent(serverId)}/instances/${encodeURIComponent(worldId)}`,
)
}
function getWorldSlotName(worldId: string) {
const world = worldSlots.value.find((slot) => slot.type === 'world' && slot.id === worldId)
return world?.name ?? formatMessage(messages.instanceSlotName, { index: 1 })
async function invalidateWorldQueries() {
await Promise.all([
queryClient.invalidateQueries({
queryKey: ['servers', 'worlds', 'summary', 'v1', serverId],
}),
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', serverId] }),
queryClient.invalidateQueries({ queryKey: ['servers', 'v1', 'detail', serverId] }),
])
await queryClient.fetchQuery({
queryKey: ['servers', 'v1', 'detail', serverId],
queryFn: () => client.archon.servers_v1.get(serverId),
})
}
function toApiLoader(loader: string | null | undefined): Archon.Content.v1.Modloader {
const normalized = loader?.toLowerCase().replace(/[\s_-]/g, '') ?? 'vanilla'
if (normalized === 'neoforge') return 'neo_forge'
if (normalized === 'vanilla') return 'vanilla'
return normalized as Archon.Content.v1.Modloader
}
</script>
@@ -62,7 +62,7 @@
<CreationFlowModal
ref="modalRef"
type="server-onboarding"
type="world"
:available-loaders="['vanilla', 'fabric', 'neoforge', 'forge', 'quilt', 'paper', 'purpur']"
:show-snapshot-toggle="true"
:search-modpacks="searchModpacks"
@@ -111,7 +111,7 @@ const messages = defineMessages({
},
setupStepsHeading: {
id: 'servers.setup.onboarding.steps.heading',
defaultMessage: 'Setup your server (~2mins)',
defaultMessage: 'Create instance (~2 mins)',
},
uploadingProgress: {
id: 'servers.setup.onboarding.uploading.progress',
@@ -119,7 +119,7 @@ const messages = defineMessages({
},
setupServerButton: {
id: 'servers.setup.onboarding.setup-server.button',
defaultMessage: 'Setup server',
defaultMessage: 'Create instance',
},
modpackUploadFailedTitle: {
id: 'servers.setup.onboarding.modpack-upload-failed.title',
@@ -178,7 +178,7 @@ async function getProjectVersions(projectId: string) {
const versions = await client.labrinth.versions_v3.getProjectVersions(projectId)
return versions.map((v) => ({ id: v.id }))
}
const { serverId, worldId, server } = injectModrinthServerContext()
const { serverId, server } = injectModrinthServerContext()
const route = useRoute()
const router = useRouter()
const queryClient = useQueryClient()
@@ -218,7 +218,7 @@ function onBrowseModpacks() {
if (props.browseModpacks) {
props.browseModpacks({
serverId,
worldId: worldId.value,
worldId: null,
from: 'onboarding',
})
return
@@ -226,7 +226,7 @@ function onBrowseModpacks() {
router.push({
path: '/discover/modpacks',
query: { sid: serverId, from: 'onboarding', wid: worldId.value },
query: { sid: serverId, from: 'onboarding' },
})
}
@@ -266,23 +266,23 @@ onMounted(async () => {
}
})
async function finalizeSetup() {
async function finalizeSetup(createdWorldId: string) {
modalRef.value?.hide()
server.value.flows = { intro: false }
client.archon.servers_v1.endIntro(serverId).then(() => {
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', serverId] })
})
await client.archon.servers_v1.endIntro(serverId)
await Promise.all([
queryClient.invalidateQueries({ queryKey: ['servers', 'detail', serverId] }),
queryClient.invalidateQueries({ queryKey: ['servers', 'v1', 'detail', serverId] }),
queryClient.invalidateQueries({ queryKey: ['servers', 'worlds', 'summary', 'v1', serverId] }),
])
await router.push(
worldId.value
? `/hosting/manage/${encodeURIComponent(serverId)}/instances/${encodeURIComponent(worldId.value)}`
: `/hosting/manage/${encodeURIComponent(serverId)}/instances`,
`/hosting/manage/${encodeURIComponent(serverId)}/instances/${encodeURIComponent(createdWorldId)}`,
)
}
/** Map UI loader names to API Modloader values */
function toApiLoader(loader: string): Archon.Content.v1.Modloader {
function toApiLoader(loader: string | null | undefined): Archon.Content.v1.Modloader {
if (loader === 'neoforge') return 'neo_forge'
return loader as Archon.Content.v1.Modloader
return (loader ?? 'vanilla') as Archon.Content.v1.Modloader
}
const onCreate = async (config: CreationFlowContextValue) => {
@@ -291,20 +291,25 @@ const onCreate = async (config: CreationFlowContextValue) => {
return
}
// Handle mrpack file upload
if (config.setupType.value === 'modpack' && config.modpackFile.value) {
modalRef.value?.hide()
uploading.value = true
uploadedBytes.value = 0
totalBytes.value = config.modpackFile.value.size
const properties = config.buildProperties()
try {
try {
if (config.setupType.value === 'modpack' && config.modpackFile.value) {
const createdWorld = await client.archon.servers_v1.createWorld(serverId, {
name: config.worldName.value.trim(),
properties,
content: createBareWorldContent(config),
})
modalRef.value?.hide()
uploading.value = true
uploadedBytes.value = 0
totalBytes.value = config.modpackFile.value.size
const handle = client.kyros.content_v1.uploadModpackFile(
worldId.value!,
createdWorld.id,
config.modpackFile.value,
config.buildProperties(),
properties,
{
softOverride: true,
softOverride: false,
onProgress: ({ loaded, total }) => {
uploadedBytes.value = loaded
totalBytes.value = total
@@ -313,57 +318,57 @@ const onCreate = async (config: CreationFlowContextValue) => {
)
await handle.promise
server.value.status = 'installing'
await finalizeSetup()
} catch {
addNotification({
title: formatMessage(messages.modpackUploadFailedTitle),
text: formatMessage(messages.modpackUploadFailedText),
type: 'error',
})
config.loading.value = false
uploading.value = false
await finalizeSetup(createdWorld.id)
return
}
return
const createdWorld = await client.archon.servers_v1.createWorld(serverId, {
name: config.worldName.value.trim(),
properties,
content: createWorldContent(config),
})
server.value.status = 'installing'
await finalizeSetup(createdWorld.id)
} catch {
addNotification({
title:
config.setupType.value === 'modpack' && config.modpackFile.value
? formatMessage(messages.modpackUploadFailedTitle)
: formatMessage(messages.installationFailedTitle),
text:
config.setupType.value === 'modpack' && config.modpackFile.value
? formatMessage(messages.modpackUploadFailedText)
: formatMessage(messages.installationFailedText),
type: 'error',
})
config.loading.value = false
uploading.value = false
}
}
let request: Archon.Content.v1.InstallWorldContent
const properties = config.buildProperties()
function createWorldContent(config: CreationFlowContextValue): Archon.Servers.v1.WorldContent {
if (config.setupType.value === 'modpack' && config.modpackSelection.value) {
request = {
return {
content_variant: 'modpack',
spec: {
platform: 'modrinth',
project_id: config.modpackSelection.value.projectId,
version_id: config.modpackSelection.value.versionId,
},
soft_override: false,
properties,
}
} else {
const loader = config.selectedLoader.value
request = {
content_variant: 'bare',
loader: loader ? toApiLoader(loader) : 'vanilla',
version: config.selectedLoaderVersion.value ?? '',
game_version: config.selectedGameVersion.value ?? undefined,
soft_override: false,
properties,
}
}
try {
await client.archon.content_v1.installContent(serverId, worldId.value!, request)
server.value.status = 'installing'
await finalizeSetup()
} catch {
addNotification({
title: formatMessage(messages.installationFailedTitle),
text: formatMessage(messages.installationFailedText),
type: 'error',
})
config.loading.value = false
return createBareWorldContent(config)
}
function createBareWorldContent(config: CreationFlowContextValue): Archon.Servers.v1.WorldContent {
const loader =
config.setupType.value === 'vanilla' ? 'vanilla' : toApiLoader(config.selectedLoader.value)
return {
content_variant: 'bare',
loader,
version: loader === 'vanilla' ? '' : (config.selectedLoaderVersion.value ?? ''),
game_version: config.selectedGameVersion.value ?? server.value?.mc_version ?? null,
}
}
-6
View File
@@ -395,9 +395,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "Odstraněno {count}"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Některý obsah na vašem serveru nebylo možné analyzovat a tato změna se ho může týkat."
},
"content.diff-modal.updated-count": {
"defaultMessage": "Aktualizováno {count}"
},
@@ -425,9 +422,6 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Probíhá zálohování. Doporučujeme počkat na jeho dokončení, než tuto akci provedeš."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Vytvoření zálohy může trvat několik minut dle velikosti tvého serveru."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Vytvořit zálohu"
},
-45
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} entfernt"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Einige Inhalte auf deinem Server konnten nicht analysiert werden und könnten von diese Änderung beeinflusst werden."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} aktualisiert"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Eine Sicherung ist im gange. Es wird empfohlen bis zum ende dieser zu warten, bevor du diese Aktion ausführst."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Das erstellen einer Sicherung kann mehrere Minuten dauern, abhängig von der Grösse deines Servers."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Sicherung erstellen"
},
"content.inline-backup.instance-label": {
"defaultMessage": "Instanz"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Halte Umschalt während dem klicken um die Bestätigung zu überspringen."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Wir empfehlen, vor dem Fortfahren ein Backup zu erstellen, damit du {type} wiederherstellen kannst, falls etwas fehlschlägt."
},
"content.inline-backup.world-label": {
"defaultMessage": "Welt"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Die Inhalte deines Modpacks können jetzt hier gefunden werden!"
},
@@ -1445,12 +1430,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Reparatur abgeschlossen"
},
"hosting.loader.reset-server": {
"defaultMessage": "Server zurücksetzen"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Entfernt sämtliche daten von deinem Server, inklusive deiner Welten, Mods und Konfigurationsdateien. Sicherung bleiben und können wiederhergestellt werden."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Auf Onboarding zurücksetzen"
},
@@ -1466,9 +1445,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Server auf Onboarding zurückgesetzt"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Supportoptionen"
},
"hosting.specs.burst": {
"defaultMessage": "Spitzenauslastungen von bis zu {cpus} CPUs"
},
@@ -1526,9 +1502,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Bestätigen"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Das ändern zu {gameVersion} wird die folgenden Inhalte deines Servers modifizieren."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Inhaltsänderungen ansehen"
},
@@ -1559,9 +1532,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Inkompatibler Inhalt installiert"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Durch das ändern des Loaders werden alle installierten Inhalte deaktiviert. Wir empfehlen lieber das neu aufsetzen des Servers."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Das ändern von Loadern ist zerstörerisch"
},
@@ -1577,9 +1547,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader}version"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Du musst deinen Server zurücksetzen um den Loader zu wechseln."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Die Neuinstallation des Modpacks setzt den Inhalt von {type} auf den Originalzustand zurück und entfernt alle von dir hinzugefügten Mods oder Inhalte."
},
@@ -1808,12 +1775,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Auf {version} aktualisieren"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Das aktualisieren kann deine Instanz beschädigen. Schau dir zuerst die Änderungsprotokolle an und mache eine Sicherung."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Das aktualisieren kann deine Welt beschädigen. Schau dir zuerst die Änderungsprotokolle an und mache eine Sicherung."
},
"label.actions": {
"defaultMessage": "Aktionen"
},
@@ -4565,12 +4526,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Wähle, was du spielen möchtest"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Konfiguriere deine Welt genau wie im Einzelspielermodus. Wähle deinen Spielmodus und den Startwert der Welt aus."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Konfiguriere deine Welt"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Teile deinen Server mit Freunden, indem du die Adresse kopierst und ihnen mitteilst, welche Mods sie zum Beitreten benötigen."
},
-45
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} entfernt"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Einige Inhalte auf deinem Server konnten nicht analysiert werden und sind möglicherweise von dieser Änderung betroffen."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} aktualisiert"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Eine Sicherung wird gerade erstellt. Es wird empfohlen, mit dieser Aktion zu warten, bis der Vorgang abgeschlossen ist."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Das Erstellen einer Sicherung kann je nach Größe deines Servers einige Minuten dauern."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Sicherung erstellen"
},
"content.inline-backup.instance-label": {
"defaultMessage": "Instanz"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Halte die Umschalttaste gedrückt, während du klickst, um die Bestätigung zu überspringen."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Wir empfehlen, bevor du fortfährst eine Sicherung zu erstellen, damit du deine {type} wiederherstellen kannst, falls etwas schiefgeht."
},
"content.inline-backup.world-label": {
"defaultMessage": "Welt"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Die Inhalte deines Modpacks findest du jetzt hier!"
},
@@ -1445,12 +1430,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Reparatur abgeschlossen"
},
"hosting.loader.reset-server": {
"defaultMessage": "Server zurücksetzen"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Löscht alle Daten auf deinem Server, einschließlich deiner Welten, Mods und Konfigurationsdateien. Die Sicherungen bleiben erhalten und können wiederhergestellt werden."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Auf Onboarding zurücksetzen"
},
@@ -1466,9 +1445,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Server auf Onboarding zurückgesetzt"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Supportoptionen"
},
"hosting.specs.burst": {
"defaultMessage": "Spitzenlasten von bis zu {cpus} CPUs"
},
@@ -1526,9 +1502,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Bestätigen"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Die Änderung auf {gameVersion} wird die folgenden Inhalte deines Servers modifizieren."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Inhaltsänderungen ansehen"
},
@@ -1559,9 +1532,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Inkompatibler Inhalt installiert"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Durch das Ändern des Loaders werden alle installierten Inhalte deaktiviert. Wir empfehlen stattdessen, deinen Server zurückzusetzen."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Das Ändern des Loaders ist irreversibel"
},
@@ -1577,9 +1547,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader}version"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Du musst deinen Server zurücksetzen, um den Loader zu wechseln."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Die Neuinstallation des Modpacks setzt den Inhalt des {type} auf den ursprünglichen Zustand zurück und entfernt alle von dir hinzugefügten Mods oder Inhalte."
},
@@ -1808,12 +1775,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Auf {version} aktualisieren"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Das Aktualisieren kann deine Instanz beschädigen. Schau dir zuerst die Änderungen an und erstelle eine Sicherung."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Das Aktualisieren kann deine Welt beschädigen. Schau dir zuerst die Änderungen an und erstelle eine Sicherung."
},
"label.actions": {
"defaultMessage": "Aktionen"
},
@@ -4565,12 +4526,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Wähle, was du spielen möchtest"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Konfiguriere deine Welt genau wie im Einzelspielermodus. Wähle deinen Spielmodus und den Startwert der Welt aus."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Konfiguriere deine Welt"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Teile deinen Server mit Freunden, indem du die Adresse kopierst und ihnen mitteilst, welche Mods sie zum Beitreten benötigen."
},
+74 -41
View File
@@ -612,7 +612,7 @@
"defaultMessage": "Create instance"
},
"creation-flow.button.create-world": {
"defaultMessage": "Create world"
"defaultMessage": "Create instance"
},
"creation-flow.button.finish": {
"defaultMessage": "Finish"
@@ -624,7 +624,7 @@
"defaultMessage": "Import {count, plural, one {# instance} other {# instances}}"
},
"creation-flow.button.setup-server": {
"defaultMessage": "Setup server"
"defaultMessage": "Create instance"
},
"creation-flow.modal.custom-setup.build-number.label": {
"defaultMessage": "Build number"
@@ -744,10 +744,10 @@
"defaultMessage": "Select generator settings"
},
"creation-flow.modal.final-config.world-name.label": {
"defaultMessage": "World name"
"defaultMessage": "Instance name"
},
"creation-flow.modal.final-config.world-name.placeholder": {
"defaultMessage": "Enter world name"
"defaultMessage": "Enter instance name"
},
"creation-flow.modal.final-config.world-seed.description": {
"defaultMessage": "Leave blank for a random seed."
@@ -840,10 +840,10 @@
"defaultMessage": "Import instance"
},
"creation-flow.modal.setup-type.option.modpack-base.description": {
"defaultMessage": "Browse modpacks on Modrinth or import one from a file."
"defaultMessage": "Use a popular modpack as your starting point."
},
"creation-flow.modal.setup-type.option.modpack-base.title": {
"defaultMessage": "Install modpack"
"defaultMessage": "Modpack base"
},
"creation-flow.modal.setup-type.option.vanilla-minecraft.description": {
"defaultMessage": "Classic Minecraft with no mods or plugins."
@@ -858,7 +858,7 @@
"defaultMessage": "Choose instance type"
},
"creation-flow.modal.setup-type.title.world": {
"defaultMessage": "Select world type"
"defaultMessage": "Select instance type"
},
"creation-flow.title.choose-modpack": {
"defaultMessage": "Choose modpack"
@@ -867,7 +867,7 @@
"defaultMessage": "Create instance"
},
"creation-flow.title.create-world": {
"defaultMessage": "Create world"
"defaultMessage": "Create instance"
},
"creation-flow.title.import-instance": {
"defaultMessage": "Import instance"
@@ -876,7 +876,7 @@
"defaultMessage": "Reset instance"
},
"creation-flow.title.set-up-server": {
"defaultMessage": "Set up server"
"defaultMessage": "Create instance"
},
"external-files.permissions-card.add-files-modal.confirm": {
"defaultMessage": "{count, plural, one {Add file} other {Add files}}"
@@ -1712,6 +1712,9 @@
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Reset to onboarding"
},
"hosting.loader.reset-to-onboarding-description": {
"defaultMessage": "Send this instance back into onboarding so setup can be completed again."
},
"hosting.loader.reset-to-onboarding-modal-description": {
"defaultMessage": "This will send the instance back into onboarding so setup can be completed again. Are you sure you want to continue?"
},
@@ -1724,9 +1727,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Instance reset to onboarding"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Support options"
},
"hosting.specs.burst": {
"defaultMessage": "Bursts up to {cpus} CPUs"
},
@@ -3590,6 +3590,57 @@
"search.server_content_type.vanilla": {
"defaultMessage": "Vanilla"
},
"server.instance-settings.general.danger-zone.label": {
"defaultMessage": "Danger zone"
},
"server.instance-settings.general.instance-name.description": {
"defaultMessage": "This name is only visible on Modrinth."
},
"server.instance-settings.general.instance-name.error": {
"defaultMessage": "Failed to update instance name"
},
"server.instance-settings.general.instance-name.fallback": {
"defaultMessage": "Instance"
},
"server.instance-settings.general.instance-name.label": {
"defaultMessage": "Instance name"
},
"server.instance-settings.general.instance-name.saved.description": {
"defaultMessage": "The instance name has been updated."
},
"server.instance-settings.general.instance-name.saved.title": {
"defaultMessage": "Instance renamed"
},
"server.instance-settings.general.reset-everything.button": {
"defaultMessage": "Reset everything"
},
"server.instance-settings.general.reset-everything.description": {
"defaultMessage": "Reset your instance completely. This removes world data, content, and any configuration. A backup of the previous instance will remain available."
},
"server.instance-settings.general.reset-world-files.button": {
"defaultMessage": "Reset world data"
},
"server.instance-settings.general.reset-world-files.description": {
"defaultMessage": "Delete the current world data and generate a new one. Your content and files will stay the same."
},
"server.instance-settings.general.reset-world-files.error": {
"defaultMessage": "Failed to reset world data"
},
"server.instance-settings.general.reset-world-files.modal.description": {
"defaultMessage": "This deletes the world directory for this instance. Installed content and settings will stay the same."
},
"server.instance-settings.general.reset-world-files.modal.title": {
"defaultMessage": "Reset world data"
},
"server.instance-settings.general.reset-world-files.started.description": {
"defaultMessage": "The world directory is being reset."
},
"server.instance-settings.general.reset-world-files.started.title": {
"defaultMessage": "World data reset started"
},
"server.instance-settings.general.support-zone.label": {
"defaultMessage": "Support zone"
},
"servers.access-page.activity-log-filter.action-group.backups": {
"defaultMessage": "Backups"
},
@@ -3890,33 +3941,6 @@
"servers.access-table.user-avatar-alt": {
"defaultMessage": "{username}'s avatar"
},
"server.instance-settings.general.danger-zone.label": {
"defaultMessage": "Danger zone"
},
"server.instance-settings.general.instance-name.description": {
"defaultMessage": "This name is only visible on Modrinth."
},
"server.instance-settings.general.instance-name.fallback": {
"defaultMessage": "Instance"
},
"server.instance-settings.general.instance-name.label": {
"defaultMessage": "Instance name"
},
"server.instance-settings.general.not-implemented": {
"defaultMessage": "Not yet implemented"
},
"server.instance-settings.general.reset-everything.button": {
"defaultMessage": "Reset everything"
},
"server.instance-settings.general.reset-everything.description": {
"defaultMessage": "Reset your instance completely. This removes world data, content, and any configuration. A backup of the previous instance will remain available."
},
"server.instance-settings.general.reset-world-files.button": {
"defaultMessage": "Reset world data"
},
"server.instance-settings.general.reset-world-files.description": {
"defaultMessage": "Delete the current world data and generate a new one. Your content and files will stay the same."
},
"servers.admonitions.background-task-running": {
"defaultMessage": "Background task running"
},
@@ -4730,6 +4754,15 @@
"servers.manage.instances.card.settings": {
"defaultMessage": "Instance settings"
},
"servers.manage.instances.create.error": {
"defaultMessage": "Failed to create instance"
},
"servers.manage.instances.create.success.text": {
"defaultMessage": "{instance} is ready to configure."
},
"servers.manage.instances.create.success.title": {
"defaultMessage": "Instance created"
},
"servers.manage.instances.info.body": {
"defaultMessage": "An instance is a separate setup of your server with its own content, files, worlds, and settings. You can switch which instance your server runs at any time."
},
@@ -5073,7 +5106,7 @@
"defaultMessage": "Modpack upload failed"
},
"servers.setup.onboarding.setup-server.button": {
"defaultMessage": "Setup server"
"defaultMessage": "Create instance"
},
"servers.setup.onboarding.step.choose.description": {
"defaultMessage": "Pick your favorite modpack from Modrinth, or choose a loader and add the mods you want."
@@ -5094,7 +5127,7 @@
"defaultMessage": "Invite your friends"
},
"servers.setup.onboarding.steps.heading": {
"defaultMessage": "Setup your server (~2mins)"
"defaultMessage": "Create instance (~2 mins)"
},
"servers.setup.onboarding.uploading.progress": {
"defaultMessage": "Uploading ({percent, number}%)"
-45
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} eliminados"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Cierto contenido de tu servidor no se pudo analizar y podría ser afectado por este cambio."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} actualizados"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Un respaldo está en progreso, es recomendado esperar a que finalice antes de realizar está acción."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Crear un respaldo podría tardar varios minutos, dependiendo del tamaño de tu servidor."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Crear respaldo"
},
"content.inline-backup.instance-label": {
"defaultMessage": "instancia"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Mantén pulsada la tecla Shift mientras haces clic para omitir la confirmación."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Recomendamos crear un backup antes de proceder, para que puedas restaurar tu {type} si algo male sal."
},
"content.inline-backup.world-label": {
"defaultMessage": "mundo"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "¡Ya puedes encontrar el contenido de tu modpack aquí!"
},
@@ -1445,12 +1430,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Reparación completada"
},
"hosting.loader.reset-server": {
"defaultMessage": "Restablecer servidor"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Elimina todos los datos de tu servidor, incluidos tus mundos, mods y archivos de configuración. Los respaldos se mantendrán y se pueden restaurar."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Restablecer a la configuración inicial"
},
@@ -1466,9 +1445,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Servidor restablecido a la configuración inicial"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Opciones de soporte"
},
"hosting.specs.burst": {
"defaultMessage": "Aumenta hasta {cpus} CPUs"
},
@@ -1526,9 +1502,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Confirmar"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Si cambias a {gameVersion}, se modificará el siguiente contenido en tu servidor."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Revisar los cambios del contenido"
},
@@ -1559,9 +1532,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Contenido incompatible instalado"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Al cambiar el loader, todo el contenido instalado se desactivará. Recomendamos restablecer tu servidor en su lugar."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Cambiar de loader es destructivo"
},
@@ -1577,9 +1547,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader} versión"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Tendrás que reiniciar el servidor para cambiar de loader."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Al reinstalar el modpack, el contenido de {type} se restablecerá a su estado original, eliminando cualquier mod o contenido que hayas añadido."
},
@@ -1808,12 +1775,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Actualizar a {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Actualizar puede dañar tu instancia. Revisa los registros de cambios de la versión y haz una copia de seguridad primero."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Actualizar puede dañar tu mundo. Revisa los registros de cambios de la versión y haz una copia de seguridad primero."
},
"label.actions": {
"defaultMessage": "Acciones"
},
@@ -4565,12 +4526,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Elige a qué jugar"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Configura tu mundo igual que en el modo para un solo jugador. Elige el modo de juego y la semilla del mundo."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Configura tu mundo"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Comparte tu servidor con tus amigos copiando la dirección y diciéndoles qué mods necesitarán para unirse."
},
-39
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} eliminado"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "No se ha podido analizar parte del contenido de su servidor, por lo que podría verse afectado por este cambio."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} actualizado/s"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Se está realizando una copia de seguridad, se recomienda esperar a que finalice antes de realizar esta acción."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "La creación de una copia de seguridad puede tardar varios minutos, dependiendo del tamaño de tu servidor."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Hacer copia de seguridad"
},
"content.inline-backup.instance-label": {
"defaultMessage": "instancia"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Mantén pulsada la tecla Mayús mientras haces clic para omitir la confirmación."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Recomendamos crear un backup antes de proceder, para que puedas restaurar tu {type} si algo male sal."
},
"content.inline-backup.world-label": {
"defaultMessage": " mundo"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "¡Ya puedes encontrar el contenido de tu modpack aquí!"
},
@@ -1445,12 +1430,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Reparación completada"
},
"hosting.loader.reset-server": {
"defaultMessage": "Resetear servidor"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Elimina todos los datos de su servidor, incluidos sus mundos, mods y archivos de configuración. Las copias de seguridad permanecerán y podrán restaurarse."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Volver a la configuración inicial"
},
@@ -1466,9 +1445,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Servidor restablecido a la configuración inicial"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Opciones de asistencia"
},
"hosting.specs.burst": {
"defaultMessage": "Aumenta hasta {cpus} CPUs"
},
@@ -1526,9 +1502,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Confirmar"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Si cambias a {gameVersion}, se modificará el siguiente contenido en tu servidor."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Revisar los cambios en el contenido"
},
@@ -1808,12 +1781,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Actualizar a {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "La actualización puede provocar fallos en tu instancia. Revisa primero los registros de cambios de la versión y haz una copia de seguridad."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "La actualización puede romper tu mundo. Revisa primero el historial de cambios de la versión y haz una copia de seguridad."
},
"label.actions": {
"defaultMessage": "Acciones"
},
@@ -4562,12 +4529,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Elige que jugar"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Configure tu mundo. Elige tu gamemode y semilla de mundo."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Configure tu mundo"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Comparte tu servidor con amigos copiando el link y dejándoles saber que mods necesitan para poder unirse."
},
@@ -245,9 +245,6 @@
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Idiin ang Shift habang pumipindot upang laktawan ang kumpirmasyon."
},
"content.inline-backup.world-label": {
"defaultMessage": "mundo"
},
"content.page-layout.additional-content": {
"defaultMessage": "Karagdagang kontento"
},
@@ -602,9 +599,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Di-magkatugmang kontentong ininstall"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Sa pagpapalit ng loader, ang lahat ng na-install na kontento ay mapapatay. Sa halip, inimumungkahi namin na i-reset ang iyong server."
},
"installation-settings.removed-incompatible": {
"defaultMessage": "Tinanggal (di-magkatugma)"
},
@@ -2742,4 +2736,3 @@
"defaultMessage": "Koponan ng Modrinth"
}
}
-45
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} retirés"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Certains contenus de votre serveur nont pas pu être analysés et peuvent être affectés par ce changement."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} mis à jour"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Une sauvegarde est en cours, il est recommandé d'attendre qu'elle se termine avant d'effectuer cette action."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "La création dune sauvegarde peut prendre plusieurs minutes en fonction de la taille de votre serveur."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Sauvegarder"
},
"content.inline-backup.instance-label": {
"defaultMessage": "instance"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Appuyer sur Maj en cliquant pour passer la confirmation."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Nous vous recommandons de créer une sauvegarde avant de continuer afin de pouvoir restaurer votre {type} en cas de problème."
},
"content.inline-backup.world-label": {
"defaultMessage": "monde"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Le contenu de votre modpack peut maintenant être retrouvé ici !"
},
@@ -1439,12 +1424,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Réparation complète"
},
"hosting.loader.reset-server": {
"defaultMessage": "Réinitialiser le serveur"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Supprime définitivement toutes les données de votre serveur, y compris vos mondes, vos mods, et vos fichiers paramètres. Les sauvegardes resteront et pourront être restaurées."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Réinitialiser à l'intégration"
},
@@ -1460,9 +1439,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Serveur réinitialisé à l'intégration"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Options de prise en charge"
},
"hosting.specs.burst": {
"defaultMessage": "Jusqu'à {cpus} processeurs"
},
@@ -1520,9 +1496,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Confirmer"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Passer à {gameVersion} modifiera le contenu suivant sur votre serveur."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Revoir les changements du contenu"
},
@@ -1553,9 +1526,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Contenu incompatible installé"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "En changeant le loader, tout le contenu installé sera désactivé. Nous vous recommandons plutôt de réinitialiser votre serveur."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Changer de loader est destructif"
},
@@ -1571,9 +1541,6 @@
"installation-settings.loader-version": {
"defaultMessage": "Version de {loader}"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Vous devrez réinitialiser votre serveur pour changer de loader."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "La réinstallation du modpack réinitialise le contenu de {type} à son état dorigine, supprimant tous les mods et contenus que vous avez ajoutés."
},
@@ -1802,12 +1769,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Mettre à jour vers la {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Mettre à jour peut casser votre instance. Revoir la version du journal de modification et faire une sauvegarde avant."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Mettre à jour peut casser votre monde. Revoir la version du journal de modification et faire une sauvegarde avant."
},
"label.actions": {
"defaultMessage": "Actions"
},
@@ -4559,12 +4520,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Choisissez à quoi jouer"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Mettez votre monde en place comme d'habitude. Choisissez votre mode de jeu et la graine mondiale."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Configurez le monde"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Partagez votre serveur avec vos amis en copiant l'adresse et en leur faisant savoir de quels mods ils auront besoin pour rejoindre."
},
-39
View File
@@ -386,9 +386,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} eltávolítva"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "A szerverén található egyes tartalmakat nem sikerült elemezni, ezért előfordulhat, hogy ez a változás hatással lesz rájuk."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} frissítve"
},
@@ -416,21 +413,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "A biztonsági mentés folyamatban van, érdemes várni a mentés befejezésére a művelet végrehajtása előtt."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "A biztonsági mentés néhány percet igénybe vehet, függ a szerver nagyságától."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Biztonsági mentés létrehozása"
},
"content.inline-backup.instance-label": {
"defaultMessage": "profil"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "A megerősítés kihagyásához tartsd lenyomva a Shift billentyűt a kattintás közben."
},
"content.inline-backup.world-label": {
"defaultMessage": "világ"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Mostantól itt találhatod meg!"
},
@@ -1292,12 +1280,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Javítás befejezve"
},
"hosting.loader.reset-server": {
"defaultMessage": "Szerver javítása"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "A szerverről minden adatot eltávolít, beleértve a világokat, a modokat és a konfigurációs fájlokat is. A biztonsági mentések megmaradnak, és visszaállíthatók."
},
"hosting.specs.gb-ram": {
"defaultMessage": "{ram} GB RAM"
},
@@ -1349,9 +1331,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Megerősítés"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "A(z) {gameVersion} verzióra történő átállás a szervereden a következő tartalmakat módosítja."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Tartalomváltozások áttekintése"
},
@@ -1379,9 +1358,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Nem kompatibilis tartalom van telepítve"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "A betöltő módosításakor az összes telepített tartalom letiltásra kerül. Javasoljuk ehelyett a szerver alaphelyzetbe állítását."
},
"installation-settings.linked-instance.title": {
"defaultMessage": "Összekapcsolt {projectType}"
},
@@ -1394,9 +1370,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader} verzió"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "A betöltő megváltoztatásához vissza kell állítanod a szervert."
},
"installation-settings.reinstall-modpack.title": {
"defaultMessage": "Modcsomag újratelepítése"
},
@@ -1601,12 +1574,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Frissítés a(z) {version} verzióra"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "A frissítés meghibásodást okozhat a profilban. Először nézd át a változásnaplót, és készíts biztonsági mentést."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "A frissítés meghibásodást okozhat a világban. Először nézd át a változásnaplót, és készíts biztonsági mentést."
},
"label.actions": {
"defaultMessage": "Műveletek"
},
@@ -3860,12 +3827,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Válaszd ki, mit szeretnél játszani"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Állítsd be a világodat, akárcsak az egyjátékos módban. Válaszd ki a játékmódot és a világ kezdőértékét."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Állítsd be a világodat"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Oszd meg a szerveredet a barátaiddal úgy, hogy kimásolod a címet, és megmondod nekik, melyik modokra lesz szükségük a csatlakozáshoz."
},
-15
View File
@@ -407,9 +407,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} dihapus"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Beberapa konten pada server Anda tidak dapat dianalisis dan mungkin dipengaruhi oleh perubahan ini."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} diperbarui"
},
@@ -437,24 +434,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Proses pencadangan sedang berlangsung; disarankan untuk menunggu hingga proses tersebut selesai sebelum melakukan tindakan ini."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Pembuatan cadangan mungkin memerlukan waktu beberapa menit, tergantung pada ukuran server Anda."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Buat cadangan"
},
"content.inline-backup.instance-label": {
"defaultMessage": "instans"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Tahan tombol Shift saat mengeklik untuk melewati pesan konfirmasi."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Kami menyarankan Anda membuat cadangan terlebih dahulu sebelum melanjutkan, sehingga Anda dapat memulihkan {type} Anda bila terjadi masalah."
},
"content.inline-backup.world-label": {
"defaultMessage": "dunia"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Konten paket mod Anda kini dapat ditemukan di sini!"
},
-39
View File
@@ -389,9 +389,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} 件削除されました"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "サーバー上のコンテンツの一部は分析できず、この変更の影響を受ける可能性があります。"
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} 件更新されました"
},
@@ -419,24 +416,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "バックアップを作成中です。バックアップが完了してからこの操作を実行することをおすすめします。"
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "サーバーのサイズによっては、バックアップの作成に数分かかる場合があります。"
},
"content.inline-backup.create-backup": {
"defaultMessage": "バックアップを作成"
},
"content.inline-backup.instance-label": {
"defaultMessage": "インスタンス"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Shiftを押しながらクリックすることで確認をスキップできます。"
},
"content.inline-backup.warning-body": {
"defaultMessage": "操作を進める前にバックアップを作成することをおすすめします。もし{type}に問題が発生しても、バックアップから復元できるようになります。"
},
"content.inline-backup.world-label": {
"defaultMessage": "ワールド"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "あなたのModパックのコンテンツは、こちらで確認できます!"
},
@@ -1382,12 +1367,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "修理完了"
},
"hosting.loader.reset-server": {
"defaultMessage": "サーバーをリセット"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "サーバー上のすべてのデータ(ワールド、MOD、設定ファイルなど)を削除します。バックアップは保持され、復元可能です。"
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "オンボーディング画面にリセット"
},
@@ -1403,9 +1382,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "サーバーがオンボーディングにリセットされました"
},
"hosting.loader.support-options-title": {
"defaultMessage": "サポートオプション"
},
"hosting.specs.burst": {
"defaultMessage": "{cpus}個のCPUに増加"
},
@@ -1463,9 +1439,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "確認"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "{gameVersion}に変更するとサーバ上の以下のコンテンツが変更されます。"
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "コンテンツの変更を確認"
},
@@ -1496,9 +1469,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "互換性のないコンテンツがインストールされています"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "ローダーを変更すると、インストール済みのコンテンツはすべて無効になります。代わりにサーバーをリセットすることをお勧めします。"
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "ローダーの交換は破壊的である"
},
@@ -1508,9 +1478,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader}のバージョン"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "ローダーを切り替えるにはサーバをリセットする必要があります。"
},
"installation-settings.reinstall-modpack.title": {
"defaultMessage": "Modパックを再インストール"
},
@@ -1700,12 +1667,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "{version}に更新"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "更新はインスタンスを破損する可能性があります。事前にバージョンの変更履歴を確認して、バックアップしてください。"
},
"instances.updater-modal.warning-web": {
"defaultMessage": "更新はワールドを破損する可能性があります。事前にバージョンの変更履歴を確認して、バックアップしてください。"
},
"label.actions": {
"defaultMessage": "アクション"
},
-45
View File
@@ -392,9 +392,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count}개 제거됨"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "서버의 일부 콘텐츠를 분석할 수 없었으며, 이번 변경 사항의 영향을 받을 수 있습니다."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count}개 업데이트됨"
},
@@ -422,24 +419,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "백업이 진행 중입니다. 백업이 완료될 때까지 기다리십시오."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "서버의 크기에 따라서 백업을 생성하는데 몇 분 정도 소요 될 수 있습니다."
},
"content.inline-backup.create-backup": {
"defaultMessage": "백업 생성"
},
"content.inline-backup.instance-label": {
"defaultMessage": "인스턴스"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Shift 키를 누른 상태로 클릭해서 확인을 건너뛸 수 있습니다."
},
"content.inline-backup.warning-body": {
"defaultMessage": "문제가 발생할 경우 {type}을(를) 복원할 수 있도록 진행하기 전에 백업을 생성하는 것이 좋습니다."
},
"content.inline-backup.world-label": {
"defaultMessage": "세계"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "여기서 모드팩의 콘텐츠를 확인할 수 있습니다!"
},
@@ -1403,12 +1388,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "복구 완료"
},
"hosting.loader.reset-server": {
"defaultMessage": "서버 초기화"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "서버에 저장된 세계, 모드, 설정 파일 등의 모든 데이터가 삭제됩니다. 백업 파일은 그대로 유지되며, 필요 시 복원할 수 있습니다."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "온보딩 상태로 재설정"
},
@@ -1424,9 +1403,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "온보딩 상태로 서버 재설정"
},
"hosting.loader.support-options-title": {
"defaultMessage": "지원 옵션"
},
"hosting.specs.burst": {
"defaultMessage": "최대 {cpus} CPU까지 버스트 가능"
},
@@ -1484,9 +1460,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "확인"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "{gameVersion}으로 변경하면 서버의 다음 콘텐츠가 변경됩니다."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "콘텐츠 변경 확인"
},
@@ -1517,9 +1490,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "호환되지 않는 콘텐츠 설치됨"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "로더를 변경하면 설치된 모든 콘텐츠가 비활성화됩니다. 대신 서버를 초기화하는 것을 권장합니다."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "로더 변경 시 데이터 손실 위험"
},
@@ -1535,9 +1505,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader} 버전"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "로더를 변경하려면 서버를 초기화해야 합니다."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "모드팩을 재설치하면 {type}의 콘텐츠가 초기화되어 추가했던 모든 모드나 콘텐츠가 제거됩니다."
},
@@ -1766,12 +1733,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "{version}으로 업데이트"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "업데이트로 인해 인스턴스에 문제가 발생할 수 있습니다. 버전 변경 내역을 확인하고 먼저 백업을 진행하세요."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "업데이트로 인해 세계가 손상될 수 있습니다. 버전 변경 내역을 확인하고 먼저 백업을 진행하세요."
},
"label.actions": {
"defaultMessage": "작업"
},
@@ -4379,12 +4340,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "플레이할 콘텐츠 선택"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "싱글플레이와 똑같이 세계를 설정합니다. 게임 모드와 세계 생성 시드를 선택합니다."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "세계 구성하기"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "서버 주소를 복사해서 친구들과 공유하고, 접속에 필요한 모드를 알려주세요."
},
-45
View File
@@ -380,9 +380,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} dialih keluar"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Sesetengah kandungan pada pelayan anda tidak dapat dianalisis dan mungkin terjejas oleh perubahan ini."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} dikemas kini"
},
@@ -410,24 +407,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Sandaran sedang dijalankan, disyorkan untuk menunggu sehingga penyandaran selesai sebelum melakukan tindakan ini."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Penciptaan sandaran mungkin mengambil masa beberapa minit bergantung pada saiz pelayan anda."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Cipta sandaran"
},
"content.inline-backup.instance-label": {
"defaultMessage": "pemasangan"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Tahan Shift sambil mengklik untuk melangkau pengesahan."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Kami mengesyorkan agar anda membuat sandaran sebelum meneruskan supaya anda boleh memulihkan {type} anda sekiranya terdapat sebarang kerosakan."
},
"content.inline-backup.world-label": {
"defaultMessage": "dunia"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Kandungan pek mod anda kini boleh didapati di sini!"
},
@@ -1361,12 +1346,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Pembaikan selesai"
},
"hosting.loader.reset-server": {
"defaultMessage": "Tetap semula pelayan"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Mengalih keluar semua data pada pelayan anda, termasuk dunia, mod dan fail konfigurasi anda. Sandaran akan kekal dan boleh dipulihkan."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Tetap semula ke proses penetapan awal"
},
@@ -1382,9 +1361,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Pelayan ditetapkan semula ke proses penetapan awal"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Pilihan sokongan"
},
"hosting.specs.burst": {
"defaultMessage": "Boleh memecut sehingga {cpus} CPU"
},
@@ -1442,9 +1418,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Pastikan"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Menukar kepada {gameVersion} akan mengubah suai kandungan berikut pada pelayan anda."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Semak perubahan kandungan"
},
@@ -1475,9 +1448,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Kandungan yang tidak serasi dipasang"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Apabila menukar pemuat, semua kandungan yang telah dipasang akan dinyahdayakan. Kami mengesyorkan supaya anda menetapkan semula pelayan anda."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Menukar pemuat boleh menyebabkan kerosakan"
},
@@ -1487,9 +1457,6 @@
"installation-settings.loader-version": {
"defaultMessage": "Versi {loader}"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Anda perlu menetap semula pelayan anda untuk menukar pemuat."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Pemasangan semula pek mod akan menetapkan semula kandungan {type} kepada keadaan asalnya yang akan mengalih keluar sebarang mod atau kandungan yang telah anda tambahkan."
},
@@ -1709,12 +1676,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Kemas kini ke {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Pengemaskinian boleh merosakkan pemasangan anda. Semak log perubahan versi dan buat sandaran terlebih dahulu."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Pengemaskinian boleh merosakkan dunia anda. Semak log perubahan versi dan buat sandaran terlebih dahulu."
},
"label.actions": {
"defaultMessage": "Tindakan"
},
@@ -4088,12 +4049,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Pilih apa yang hendak dimainkan"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Sediakan dunia anda seperti dunia ekapemain. Pilih mod permainan dan benih dunia."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Konfigurasikan dunia anda"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Kongsikan pelayan anda dengan rakan-rakan anda dengan menyalin alamat dan memberitahu mereka mod yang mereka perlukan untuk sertai."
},
-30
View File
@@ -356,9 +356,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} verwijderd"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Sommige content op je server kon niet worden geanalyseerd en kan beïnvloed worden door deze wijziging."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} bijgewerkt"
},
@@ -374,9 +371,6 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Er is een back-up bezig, het wordt aangeraden te wachten totdat deze klaar is voordat je deze actie doet."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Een back-up maken kan enkele minuten duren, afhankelijk van de grootte van je server."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Back-up maken"
},
@@ -1019,12 +1013,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Herstellen voltooid"
},
"hosting.loader.reset-server": {
"defaultMessage": "Server opnieuw opstarten"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Hiermee worden alle gegevens op je server verwijderd, inclusief je werelden, mods en configuratiebestanden. Back-ups blijven behouden en kunnen worden hersteld."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Terug naar de introductie"
},
@@ -1040,9 +1028,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Server opnieuw ingesteld voor onboarding"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Ondersteuningsmogelijkheden"
},
"hosting.specs.burst": {
"defaultMessage": "Burst tot {cpus} CPU's"
},
@@ -1100,9 +1085,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Bevestigen"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Als je dit wijzigt in {gameVersion}, worden de volgende gegevens op je server aangepast."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Wijzigingen in de inhoud controleren"
},
@@ -1133,18 +1115,12 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Er is incompatibele inhoud geïnstalleerd"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Als je de loader wijzigt, wordt alle geïnstalleerde inhoud uitgeschakeld. We raden je aan om in plaats daarvan je server te resetten."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Het vervangen van loaders is schadelijk"
},
"installation-settings.loader-version": {
"defaultMessage": "{loader}-versie"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Je moet je server opnieuw opstarten om van loader te wisselen."
},
"installation-settings.reinstall-modpack.title": {
"defaultMessage": "Modpack opnieuw installeren"
},
@@ -1310,12 +1286,6 @@
"instances.updater-modal.show-incompatible": {
"defaultMessage": "Toon compatibele"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Een update kan uw instantie onbruikbaar maken. Bekijk eerst het wijzigingslogboeken van de versie en maak een back-up."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Een update kan je wereld op zijn kop zetten. Bekijk eerst de wijzigingslogboeken van de versie en maak een back-up."
},
"label.actions": {
"defaultMessage": "Acties"
},
-13
View File
@@ -245,9 +245,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} fjerna"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Noe innhold til serveren din kunne ikke bli gjennomgått og kan bli påvirka av denne endringa."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} oppdatert"
},
@@ -263,9 +260,6 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Ei sikkerhetskopiering holder på, det er anbefalt at du venter til den er ferdig før du går videre med handlinga."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Å lage ei sikkerhetskopiering kan ta flere minutt, angående størrelsen på serveren din."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Opprett sikkerhetskopiering"
},
@@ -440,9 +434,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Bekreft"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Endring til {gameVersion} kommer til å endre følgende innhold i serveren din."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Gå gjennom innholdsendringer"
},
@@ -458,9 +449,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader}-versjon"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Du kommer til å måtte starte serveren din på nytt att for å bytte loader."
},
"installation-settings.reinstall-modpack.title": {
"defaultMessage": "Re-installer modpakke"
},
@@ -2136,4 +2124,3 @@
"defaultMessage": "Du har ulagrede endringer."
}
}
-42
View File
@@ -464,24 +464,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Kopia zapasowa jest podczas tworzenia, zalecane jest zaczekanie, aż się zakończy, przed wykonaniem tej akcji."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Tworzenie kopii zapasowej, może to potrwać kilkanaście minut, w zależności od rozmiaru twojego serwera."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Utwórz kopię zapasową"
},
"content.inline-backup.instance-label": {
"defaultMessage": "Twoją instancję"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Przytrzymaj Shift podczas przyciskania, aby pominąć potwierdzenie."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Zalecamy utworzenie kopii zapasowej, by można było przywrócić {type} w wypadku problemów."
},
"content.inline-backup.world-label": {
"defaultMessage": "Twój świat"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Informacje o zawartości Twojej paczki modów teraz możesz znaleźć tutaj!"
},
@@ -1436,12 +1424,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Naprawa ukończona"
},
"hosting.loader.reset-server": {
"defaultMessage": "Zresetuj serwer"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Usuwa wszystkie dane na twoim serwerze, wliczając w to światy, modyfikacje i pliki konfiguracyjne. Kopie zapasowe zostaną nieruszone i będzie możliwość ich przywrócenia."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Resetuj do trybu onboardingu"
},
@@ -1457,9 +1439,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Serwer zresetowany do trybu onboardingu"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Opcje pomocy"
},
"hosting.specs.burst": {
"defaultMessage": "Możliwość burstu do {cpus} procesorów"
},
@@ -1517,9 +1496,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Zatwierdź"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Zmiana na wersje {gameVersion} zmodyfikuję poniższe zasoby na twoim serwerze."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Przejrzyj zmiany w treści"
},
@@ -1550,9 +1526,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Zainstalowano niekompatybilną zawartość"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Przy zmianie loadera wszystkie zainstalowane treści zostaną wyłączone. Zamiast tego zalecamy resetowanie serwera."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Zmiana loadera jest destruktywna"
},
@@ -1568,9 +1541,6 @@
"installation-settings.loader-version": {
"defaultMessage": "Wersja {loader}"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Musisz zrestartować swój serwer, aby zmienić wersje silnika."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Ponownie pobranie paczki modów przywróci {type} do swojego pierwotnego stanu, usuwając mody lub inną zawartość dodaną ręcznie."
},
@@ -1799,12 +1769,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Zaktualizuj do {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Aktualizowanie może uszkodzić twoją instalację. Zrób kopię zapasową i przeglądnij dzienniki zmian wersji."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Aktualizowanie może uszkodzić twój świat. Zrób kopię zapasową i przeglądnij dzienniki zmian wersji."
},
"label.actions": {
"defaultMessage": "Akcje"
},
@@ -4556,12 +4520,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Wybierz w co grać"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Ustaw swój świat tak, jak w trybie jednoosobowym. Wybierz tryb gry i ziarno świata."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Skonfiguruj swój świat"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Udostępnij swój serwer znajomym kopiując adres i uzgadniając z nimi jakie mody muszą zainstalować, by się połączyć."
},
-45
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} removido"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Alguns conteúdos do seu servidor não puderam ser analisados e podem ser afetados por esta alteração."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} atualizado"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Uma cópia de segurança está em andamento, é recomendado aguardar a conclusão antes de realizar esta ação."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "A criação de uma cópia de segurança pode levar vários minutos, dependendo do tamanho do seu servidor."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Criar cópia de segurança"
},
"content.inline-backup.instance-label": {
"defaultMessage": "instância"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Segure Shift ao clicar para pular a confirmação."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Recomendamos criar uma cópia de segurança antes de prosseguir, assim você poderá restaurar seu {type} caso algo dê errado."
},
"content.inline-backup.world-label": {
"defaultMessage": "mundo"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "O conteúdo do seu pacote de mods agora pode ser encontrado aqui!"
},
@@ -1445,12 +1430,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Reparo concluído"
},
"hosting.loader.reset-server": {
"defaultMessage": "Reiniciar servidor"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Remove todos os dados do seu servidor, incluindo seus mundos, mods e arquivos de configuração. As cópias de segurança permanecerão e poderão ser restauradas."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Redefinir para a integração"
},
@@ -1466,9 +1445,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Servidor redefinido para a integração"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Opções de suporte"
},
"hosting.specs.burst": {
"defaultMessage": "Picos de até {cpus} CPUs"
},
@@ -1526,9 +1502,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Confirmar"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Alterar para {gameVersion} modificará o seguinte conteúdo no seu servidor."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Revisar alterações de conteúdo"
},
@@ -1559,9 +1532,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Conteúdo incompatível instalado"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Ao alterar o carregador, todo o conteúdo instalado será desativado. Recomendamos redefinir seu servidor em vez disso."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Alterar carregadores é destrutivo"
},
@@ -1577,9 +1547,6 @@
"installation-settings.loader-version": {
"defaultMessage": "Versão do {loader}"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Você precisará redefinir seu servidor para trocar o carregador."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Reinstalar o pacote de mods redefine o conteúdo do {type} para seu estado original, removendo quaisquer mods ou conteúdo que você tenha adicionado."
},
@@ -1808,12 +1775,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Atualizar para {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Atualizar pode quebrar sua instância. Verifique os registros de alterações da versão e faça uma cópia de segurança primeiro."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Atualizar pode quebrar seu mundo. Verifique os registros de alterações da versão e faça uma cópia de segurança primeiro."
},
"label.actions": {
"defaultMessage": "Ações"
},
@@ -4562,12 +4523,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Escolha o que jogar"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Configure seu mundo da mesma forma que no modo para um jogador. Escolha seu modo de jogo e a semente do mundo."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Configure seu mundo"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Compartilhe seu servidor com seus amigos copiando o endereço e informando-lhes quais mods eles precisarão para entrar."
},
-7
View File
@@ -326,9 +326,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} removidos"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Parte do conteúdo no seu servidor não pôde ser analisada e pode ser afetada por essa alteração."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} atualizados"
},
@@ -344,9 +341,6 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Um backup está a decorrer, recomenda-se esperar que ele termine antes de realizar esta ação."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "A criação do backup pode levar vários minutos, dependendo do tamanho do teu servidor."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Criar cópia de segurança"
},
@@ -2541,4 +2535,3 @@
"defaultMessage": "Tens alterações por guardar."
}
}
-15
View File
@@ -377,9 +377,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} îndepărtat"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Niște conținut in serverul tău nu poate fi analizat și poate fi afectat de această schimbare."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} actualizat"
},
@@ -407,15 +404,9 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "O copie de rezervă se creează, este recomandat să aștepți ca sa se termine înainte de perfomarea acestei acțiuni."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Crearea copiei de rezervă poate dura câteva minute depinzând de dimensiunea serverului."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Creează o copie de rezervă"
},
"content.inline-backup.instance-label": {
"defaultMessage": "instanță"
},
"content.page-layout.share.label": {
"defaultMessage": "Distribuie"
},
@@ -1112,12 +1103,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Actualizare la {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Actualizarea iți poate strica instanța. Mai întâi verifică schimbările versiunii si creează un backup."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Actualizarea iți poate strica lumea. Mai întâi verifică schimbările versiunii si creează un backup."
},
"label.actions": {
"defaultMessage": "Acțiuni"
},
-42
View File
@@ -410,9 +410,6 @@
"content.diff-modal.diff-type.updated": {
"defaultMessage": "Обновлён"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Некоторые файлы на вашем сервере распознать не удалось. Это может повлиять на их работу."
},
"content.filter.disabled": {
"defaultMessage": "Отключённые"
},
@@ -437,21 +434,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Идет резервное копирование. Рекомендуется дождаться его завершения, прежде чем продолжать."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Создание резервной копии может занять несколько минут, в зависимости от размера вашего сервера."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Создать резервную копию"
},
"content.inline-backup.instance-label": {
"defaultMessage": "сборка"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Удерживайте Shift при нажатии, чтобы пропустить подтверждение."
},
"content.inline-backup.world-label": {
"defaultMessage": "мир"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Теперь он находится здесь!"
},
@@ -1376,12 +1364,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Исправление завершено"
},
"hosting.loader.reset-server": {
"defaultMessage": "Переустановка сервера"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Это действие удалит все данные на сервере, включая ваши миры, моды и конфигурационные файлы. Резервные копии останутся нетронутыми, вы сможете их восстановить."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Сбросить до первого запуска"
},
@@ -1397,9 +1379,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Сервер сброшен до первого запуска"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Настройки поддержки"
},
"hosting.specs.burst": {
"defaultMessage": "Рост до {cpus} CPU"
},
@@ -1454,9 +1433,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Подтвердить"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Смена версии на {gameVersion} затронет следующий контент на вашем сервере."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Просмотреть изменения контента"
},
@@ -1487,9 +1463,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Установлены несовместимые проекты"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "При смене загрузчика модов, все установленные проекты будут отключены. Вместо этого рекомендуется сбросить сервер."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Смена загрузчика небезопасна"
},
@@ -1505,9 +1478,6 @@
"installation-settings.loader-version": {
"defaultMessage": "Версия {loader}"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Необходимо сбросить сервер для изменения загрузчика."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Переустановка сборки сбросит контент, который использует {type}, до исходного состояния, удалив все добавленные вами моды и файлы."
},
@@ -1736,12 +1706,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Обновить до {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Обновление может повредить вашу сборку. Сперва ознакомьтесь со списком изменений версии и создайте резервную копию."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Обновление может повредить ваш мир. Сперва ознакомьтесь со списком изменений версии и создайте резервную копию."
},
"label.actions": {
"defaultMessage": "Действия"
},
@@ -4490,12 +4454,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Выберите во что поиграть"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Настройте ваш мир прямо как в одиночной игре. Выберите режим игры и ключ для генерации мира."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Настройте ваш мир"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Поделитесь сервером со своими друзьями, копируя адрес сервер и дайте им знать какие моды нужны."
},
-18
View File
@@ -356,9 +356,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} borttagna"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Något innehåll på din server kunde inte analyseras och kommer kanske påverkas av denna ändring."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} uppdaterade"
},
@@ -386,9 +383,6 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "En säkerhetskopia skapas just nu, det är rekommenderat att vänta tills det är klart innan du gör detta."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Att skapa en säkerhetskopia kan ta flera minuter beroende på storleken av din server."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Skapa säkerhetskopia"
},
@@ -1199,9 +1193,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Bekräfta"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Om du byter till {gameVersion} kommer detta innehållet på din server ändras."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Kontrollera innehållsändringar"
},
@@ -1223,9 +1214,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader} version"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Du kommer att behöva ställa om din server för att ändra loader."
},
"installation-settings.reinstall-modpack.title": {
"defaultMessage": "Ominstallera modpaket"
},
@@ -1427,12 +1415,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Uppdatera till {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Att uppdatera kan förstöra din instans. Kontrollera versionernas ändringsloggar och säkerhetskopiera först."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Att uppdatera kan förstöra din värld. Kontrollera versionernas ändringsloggar och säkerhetskopiera först."
},
"label.actions": {
"defaultMessage": "Åtgärder"
},
-45
View File
@@ -398,9 +398,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "{count} kaldırıldı"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Sunucundaki bazı içerikler analiz edilemedi ve bu değişiklikten etkilenebilir."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} güncellendi"
},
@@ -428,24 +425,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Bunu yapmadan önce yedek alma işleminin bitmesini beklemeniz önerilir."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Sunucunuzun boyutuna göre yedek oluşturmak bir kaç dakika alabilir."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Yedek oluştur"
},
"content.inline-backup.instance-label": {
"defaultMessage": "oturum"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Doğrulamayı atlamak için tıklarken Shift basılı tutun."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Herhangi bir sorun durumunda {type} inizi geri yükleyebilmeniz için, devam etmeden önce mutlaka bir yedekleme oluşturmanızı öneririz."
},
"content.inline-backup.world-label": {
"defaultMessage": "dünya"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Mod paketinizin içeriği artık burada bulunabilir!"
},
@@ -1409,12 +1394,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Tamir tamamlandı"
},
"hosting.loader.reset-server": {
"defaultMessage": "Sunucuyu sıfırla"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Sunucunuzdaki tüm verileri, dünyalarınızı, modları ve yapılandırma dosyalarınızı siler. Yedekler korunur ve geri yüklenebilir."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Kurulum aşamasına sıfırla"
},
@@ -1430,9 +1409,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Sunucu, yeni başlayanlar için ayarlanmıştır."
},
"hosting.loader.support-options-title": {
"defaultMessage": "Destek seçenekleri"
},
"hosting.specs.burst": {
"defaultMessage": "{cpus} CPUya kadar çıkar"
},
@@ -1490,9 +1466,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Onayla"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "{gameVersion} sürümüne geçmek sunucundaki şu içeriği değiştirecek."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "İçerik değişikliklerini güncelleyin"
},
@@ -1523,9 +1496,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Uyumsuz içerik yüklü"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "Yükleyiciyi değiştirdiğinizde tüm yüklü içerik kapatılacak. Onun yerine sunucunuzu sıfırlamanızı öneririz."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Yükleyici değiştirmek tehlikelidir"
},
@@ -1541,9 +1511,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader} sürümü"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Yükleyici değiştirmek için sunucunuzu sıfırlamalısınız."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Mod pakını yeniden yüklemek, {type} içeriğini orijinal haline döndürür ve eklediğiniz tüm modları veya içeriği kaldırır."
},
@@ -1772,12 +1739,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "{version}'e güncelle"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Güncellemek kurulumunuzu bozabilir. Sürüm değişikliklerini gözden geçirin ve yedek alın."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Güncellemek dünyanızı bozabilir. Sürüm değişikliklerini gözden geçirin ve yedek alın."
},
"label.actions": {
"defaultMessage": "Eylemler"
},
@@ -4517,12 +4478,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Ne oynayacağınızı seçin"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Dünyanızı tıpkı tek oyunculu modda olduğu gibi kurun. Oyun modunuzu ve dünya seed'inizi seçin."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Dünyanızı yapılandırın"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Adresi kopyalayarak ve katılmak için hangi modlara ihtiyaç duyacaklarını bildirerek sunucunuzu arkadaşlarınızla paylaşın."
},
-45
View File
@@ -392,9 +392,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "Видалено {count}"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "Деякий уміст на вашому сервері не вдалося проаналізувати, тож ця зміна може вплинути на нього."
},
"content.diff-modal.updated-count": {
"defaultMessage": "{count} оновлено"
},
@@ -422,24 +419,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "Триває процес створення резервної копії. Рекомендовано дочекатися завершення, а лише тоді виконувати цю дію."
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "Створення резервної копії може зайняти кілька хвилин, залежно від розміру вашого сервера."
},
"content.inline-backup.create-backup": {
"defaultMessage": "Створити резервну копію"
},
"content.inline-backup.instance-label": {
"defaultMessage": "профіль"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "Утримуйте клавішу Shift під час натискання, щоб пропустити підтвердження."
},
"content.inline-backup.warning-body": {
"defaultMessage": "Ми рекомендуємо створити резервну копію перш ніж продовжувати, щоб ви могли відновити свій {type}, якщо щось піде не так."
},
"content.inline-backup.world-label": {
"defaultMessage": "світ"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "Уміст вашої збірки тепер можна знайти тут!"
},
@@ -1373,12 +1358,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "Лагодження завершено"
},
"hosting.loader.reset-server": {
"defaultMessage": "Скинути сервер"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "Видаляє всі дані на вашому сервері, включаючи світи, моди та файли налаштувань. Резервні копії збережуться, і їх можна буде відновити."
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "Скинути до початкового стану"
},
@@ -1394,9 +1373,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "Сервер скинуто до початкового стану"
},
"hosting.loader.support-options-title": {
"defaultMessage": "Налаштування підтримки"
},
"hosting.specs.burst": {
"defaultMessage": "Короткочасно до {cpus} ЦП"
},
@@ -1454,9 +1430,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "Підтвердити"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "Зміна версії на {gameVersion} призведе таких змін умісту на вашому сервері."
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "Перегляд змін умісту"
},
@@ -1487,9 +1460,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "Установлено несумісний уміст"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "При зміні завантажувача весь встановлений уміст буде вимкнено. Натомість рекомендуємо скинути налаштування сервера."
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "Змінення завантажувача деструктивне"
},
@@ -1505,9 +1475,6 @@
"installation-settings.loader-version": {
"defaultMessage": "Версія {loader}"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "Щоб змінювати завантажувач потрібно скинути сервер."
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "Перевстановлення збірки скине вміст {type} до початкового стану, видаливши всі моди та вміст, які ви додавали."
},
@@ -1736,12 +1703,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "Оновити до {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "Оновлення може зламати ваш профіль. Спочатку ознайомтеся із журналом змін у версії й створіть резервну копію."
},
"instances.updater-modal.warning-web": {
"defaultMessage": "Оновлення може зламати ваш світ. Спочатку ознайомтеся із журналом змін у версії й створіть резервну копію."
},
"label.actions": {
"defaultMessage": "Дії"
},
@@ -4046,12 +4007,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "Виберіть в що грати"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "Налаштуйте свій світ, як у грі наодинці. Виберіть свій ігровий режим і зерно світу."
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "Налаштуйте свій світ"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "Поділіться своїм сервером з друзями, скопіювавши адресу та повідомивши їм, які моди потрібні, щоб приєднатися."
},
-45
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "移除了 {count} 项"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "你服务器上的部分内容未能完成分析,可能受此变更影响。"
},
"content.diff-modal.updated-count": {
"defaultMessage": "更新了 {count} 项"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "正在进行备份,建议等待备份完成后再执行此操作。"
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "创建备份可能需要几分钟,具体取决于你服务器的大小。"
},
"content.inline-backup.create-backup": {
"defaultMessage": "创建备份"
},
"content.inline-backup.instance-label": {
"defaultMessage": "实例"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "在点击时按住 Shift 键可跳过确认步骤。"
},
"content.inline-backup.warning-body": {
"defaultMessage": "我们建议在进行下一步操作之前创建备份,以便在出现问题时可以恢复你的{type}。"
},
"content.inline-backup.world-label": {
"defaultMessage": "世界"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "你现在可以在这里找到你的整合包内容!"
},
@@ -1445,12 +1430,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "修复完成"
},
"hosting.loader.reset-server": {
"defaultMessage": "重置服务器"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "删除服务器上的所有数据,包括你的世界、模组和配置文件。备份将保留并可以恢复。"
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "重置为初始设置"
},
@@ -1466,9 +1445,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "服务器已重置为初始设置"
},
"hosting.loader.support-options-title": {
"defaultMessage": "支持选项"
},
"hosting.specs.burst": {
"defaultMessage": "Burst 时最高 {cpus} CPU"
},
@@ -1526,9 +1502,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "确认"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "切换到 {gameVersion} 将修改你服务器上的以下内容。"
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "审查内容更改"
},
@@ -1559,9 +1532,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "安装了不兼容的内容"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "切换加载器时 所有已经安装的内容都会被强制禁用 我们建议你直接重置服务器"
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "更改加载器具有破坏性"
},
@@ -1577,9 +1547,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader} 版本"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "你需要重置服务器以切换加载器。"
},
"installation-settings.reinstall-modpack.description": {
"defaultMessage": "重新安装整合包会将{type}内容重置到其初始状态,此操作将删除所有您自行添加的模组或内容。"
},
@@ -1808,12 +1775,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "更新至 {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "更新可能会导致你的实例出现损坏。请先查看版本更新日志并进行备份。"
},
"instances.updater-modal.warning-web": {
"defaultMessage": "更新可能会导致你的世界出现损坏。请先查看版本更新日志并进行备份。"
},
"label.actions": {
"defaultMessage": "操作"
},
@@ -4565,12 +4526,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "选择要游玩的内容"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "像单人游戏一样设置你的世界。选择你的游戏模式和世界种子。"
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "配置你的世界"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "复制地址并与朋友分享你的服务器,同时告知他们加入需要哪些模组。"
},
-45
View File
@@ -434,9 +434,6 @@
"content.diff-modal.removed-count": {
"defaultMessage": "已移除 {count} 個"
},
"content.diff-modal.unknown-content-body": {
"defaultMessage": "你伺服器上的部分內容無法進行分析,且可能會受到這項變更的影響。"
},
"content.diff-modal.updated-count": {
"defaultMessage": "已更新 {count} 個"
},
@@ -464,24 +461,12 @@
"content.inline-backup.backup-in-progress": {
"defaultMessage": "備份正在進行中,建議等候完成後再執行此動作。"
},
"content.inline-backup.backup-takes-a-while": {
"defaultMessage": "建立備份可能需耗時數分鐘,視伺服器大小而定。"
},
"content.inline-backup.create-backup": {
"defaultMessage": "建立備份"
},
"content.inline-backup.instance-label": {
"defaultMessage": "實例"
},
"content.inline-backup.shift-click-hint": {
"defaultMessage": "按住 Shift 鍵並點選以跳過確認。"
},
"content.inline-backup.warning-body": {
"defaultMessage": "我們建議您在繼續操作之前建立備份,以便在出現任何問題時可以還原您的{type}。"
},
"content.inline-backup.world-label": {
"defaultMessage": "世界"
},
"content.modpack-card.content-hint-description": {
"defaultMessage": "你模組包的內容現在可以在這裡找到了!"
},
@@ -1445,12 +1430,6 @@
"hosting.loader.repair-started-title": {
"defaultMessage": "修復完成"
},
"hosting.loader.reset-server": {
"defaultMessage": "重設伺服器"
},
"hosting.loader.reset-server-description": {
"defaultMessage": "將刪除你伺服器上的所有資料,包括你的世界、模組以及設定檔。備份將保留,並可供還原。"
},
"hosting.loader.reset-to-onboarding-button": {
"defaultMessage": "重設為初始設定"
},
@@ -1466,9 +1445,6 @@
"hosting.loader.reset-to-onboarding-success-title": {
"defaultMessage": "伺服器已重設為初始設定狀態"
},
"hosting.loader.support-options-title": {
"defaultMessage": "支援選項"
},
"hosting.specs.burst": {
"defaultMessage": "最高可爆發至 {cpus} 個 CPU"
},
@@ -1526,9 +1502,6 @@
"installation-settings.confirm-version-change": {
"defaultMessage": "確定"
},
"installation-settings.confirm-version-change-description": {
"defaultMessage": "變更為 {gameVersion} 將會修改你伺服器上的下列內容。"
},
"installation-settings.confirm-version-change-header": {
"defaultMessage": "檢視內容變更"
},
@@ -1559,9 +1532,6 @@
"installation-settings.incompatible-content.header": {
"defaultMessage": "安裝了不相容的內容"
},
"installation-settings.incompatible-content.loader-change-body": {
"defaultMessage": "變更載入器時,所有已安裝的內容都將被停用。我們建議改為重設你的伺服器。"
},
"installation-settings.incompatible-content.loader-change-title": {
"defaultMessage": "變更載入器具有破壞性"
},
@@ -1577,9 +1547,6 @@
"installation-settings.loader-version": {
"defaultMessage": "{loader} 版本"
},
"installation-settings.platform-lock-tooltip": {
"defaultMessage": "你需要重設伺服器才能切換載入器。"
},
"installation-settings.reinstall-modpack.title": {
"defaultMessage": "重新安裝模組包"
},
@@ -1802,12 +1769,6 @@
"instances.updater-modal.update-to": {
"defaultMessage": "更新到 {version}"
},
"instances.updater-modal.warning-app": {
"defaultMessage": "更新可能會導致實例損壞。請先查看版本更新日誌並備份。"
},
"instances.updater-modal.warning-web": {
"defaultMessage": "更新可能會導致世界損壞。請先查看版本更新日誌並備份。"
},
"label.actions": {
"defaultMessage": "動作"
},
@@ -4538,12 +4499,6 @@
"servers.setup.onboarding.step.choose.title": {
"defaultMessage": "選擇你想玩的內容"
},
"servers.setup.onboarding.step.configure-world.description": {
"defaultMessage": "你可以像在單人遊戲中一樣設定世界。選擇遊戲模式與世界種子碼。"
},
"servers.setup.onboarding.step.configure-world.title": {
"defaultMessage": "設定你的世界"
},
"servers.setup.onboarding.step.invite-friends.description": {
"defaultMessage": "複製位址並告訴好友加入時需要哪些模組,即可將你的伺服器分享給他們。"
},