Compare commits

..
Author SHA1 Message Date
aecsocket 7b25d7e9c6 pr comments 2026-02-03 13:27:42 +00:00
aecsocket 6816553c15 Add more Prometheus metrics for memory and Tokio tasks 2026-02-03 13:27:42 +00:00
Truman GaoandGitHub 880e759336 fix: ensure legacy texture pack is checking .zip file extension (#5284) 2026-02-03 04:38:56 +00:00
Prospector 84b386141c Fix formatLoader 2026-02-02 16:57:15 -08:00
Prospector e9a4cc60ca update ads.txt 2026-02-02 16:55:44 -08:00
aecsocketandGitHub d5869c514e Use deadpool fork with tracing (#5276)
* Use deadpool fork with tracing

* Implement minimum Redis connections

* fix typos maybe

* address pr comments
2026-02-02 23:24:55 +00:00
Prospector de0a03b2e9 changelog 2026-02-02 13:17:22 -08:00
3f6c79b00d Application & pat ui improvements (#5271)
* Add categories, make localizable

* Run fix

* Run prepr

* Improve pat modal ui

* Fix pat token actions

* Make scope category localization shared

* Fix casing

* Fix casing

---------

Co-authored-by: Creeperkatze <178587183+Creeperkatze@users.noreply.github.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2026-02-02 18:20:28 +00:00
ProspectorandGitHub 56c8bb1950 Remove legacy formatCategory (#5280)
* Remove legacy formatCategory

* prepr
2026-02-02 18:20:23 +00:00
François-Xavier TalbotandGitHub f81f951814 Don't persist read search client across reqs (#5277) 2026-02-02 14:09:00 +00:00
François-Xavier TalbotandGitHub 345ada27c0 Increase/make configurable search timeouts (#5261)
* Increase default operation timeout, make it configurable via SEARCH_OPERATION_TIMEOUT

* Don't update index settings when unneeded

* Add to env local
2026-02-02 13:27:29 +00:00
François-Xavier TalbotandGitHub e3395a7366 Development app builds (#5255)
* Workflow changes

* Propagate app_identifier via State

* Remove old updater stuff

* Remove patch file

* Remove unused binding

* Fix application loading

* Don't sign windows binaries by default

* Remove the damn emojis

* Figure out where windows artifacts are

* Fix windows artifacts
2026-02-02 13:10:23 +00:00
Modrinth BotandGitHub 3552c8280b New translations from Crowdin (main) (#5274) 2026-02-02 09:49:27 +00:00
ProspectorandGitHub 11f00be606 Clean up formatters from prev PR (#5254) 2026-02-02 09:38:36 +00:00
aecsocketandGitHub a207daef0d Update charges rows on user deletion (#5269) 2026-02-01 19:14:38 +00:00
aecsocketandGitHub ddd395ed4f Fix FX conversion for Tremendous methods (#5268) 2026-02-01 19:05:32 +00:00
Prospector 04a7ae55e7 prepr 2026-01-30 15:18:38 -08:00
Prospector 5a33d462f6 changelog 2026-01-30 13:05:32 -08:00
ProspectorandGitHub cefa7b90ed Add noindex to pages that should be private (#5257)
* Add noindex to pages that should be private

* fix unused
2026-01-30 13:04:19 -08:00
NotchArrowandGitHub 0875a8a0bc Fixed Payout Source Code Link (#5251) 2026-01-30 16:51:20 +00:00
Calum H.andGitHub 5624e86c2b fix: stale cache handling (#5253)
* fix: allow stale cache

* fix: cache amnt

* fix: other one asw
2026-01-30 16:41:03 +00:00
Prospector c622a9281f changelog 2026-01-30 07:51:57 -08:00
Prospector 937d385241 Revert "remove imgur from proxy whitelist (#5239)"
This reverts commit deaa57fa15.
2026-01-30 07:50:38 -08:00
Calum H.andGitHub 3ec9bcf7e7 fix: caching problems frontend for version upload (#5252) 2026-01-30 14:50:57 +00:00
Prospector 3dd5314062 Add loading state to envs 2026-01-28 17:52:32 -08:00
Prospector d77823c5f4 Fix reference to props on members page 2026-01-28 17:19:51 -08:00
Prospector 41b48bd353 changelog 2026-01-28 16:42:42 -08:00
6225ece6be Add Tangled to common source links (#5236)
* Add Tangled to common source links

* prepr

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2026-01-28 16:41:31 -08:00
ProspectorandGitHub 3f8805b953 fix some issues with latest PRs (#5242) 2026-01-28 16:41:17 -08:00
ProspectorandGitHub 6d68c0983f fix quilt svg (#5241) 2026-01-28 16:35:28 -08:00
Prospector 3ac0eb896c changelog 2026-01-28 13:54:54 -08:00
Truman GaoandGitHub 9c309e6da2 fix: various fixes for versions (#5238)
* fix: environment not showing when has mod loaders

* fix: weird snapshot format by only grouping consecutive tags with 3 or more

* fix: 26.1 snapshots not grouped properly in mc version picker

* remove debug console.log
2026-01-28 13:46:07 -08:00
ProspectorandGitHub deaa57fa15 remove imgur from proxy whitelist (#5239) 2026-01-28 13:45:37 -08:00
ProspectorandGitHub 8053fec29f Fix iris logo color (#5240) 2026-01-28 13:45:24 -08:00
78aca7e5c0 feat: shared components for worlds + p2p instances (#5135)
* feat: base content card component

* fix: tooltips + colors

* feat: fix orgs

* feat: add ContentModpackCard

* fix: extract types

* feat: selection v-model

* add show icon in selected for combobox with stories

* feat: add project combobox

* clean up project combobox

* feat: start install to play modal

* fix: events

* feat: figma alignments

* feat: migrate toggle to tailwind

* fix: row borders

* feat: disabled state

* feat: virtual list impl for card table based on window scroll

* fix: lint

* feat: virtualization + smaller contentcard items

* feat: fix gap + border issues on last elm

* fix: use TeleportOverflowMenu

* fix: hasUpdate type

* fix: fallback to svg if src is invalid on avatar component

* fix: storybook

* feat: start on updater modal

* feat: finish content updater modal

* feat: i18n pass

* remove install to play modal from ui package

* pnpm prepr

* feat: reusable table component

* feat: add column width prop for table and fix stories

* feat: add table overflow menu story example

* feat: add surface-1.5 and use in table

* chore: export table in index

* fix: allow more loose typing on columns

* feat: update table component to derive key from column instead of data

* feat: surface 1.5 for oled + refactor story for contentcardtable + yeet sorting funcs

* fix: lint

* feat: add no padding story for new modal

---------

Signed-off-by: Calum H. <contact@cal.engineer>
Co-authored-by: tdgao <mr.trumgao@gmail.com>
2026-01-28 20:09:24 +00:00
ProspectorandGitHub 728f8db7b9 Add game version warning for shaders (#5227) 2026-01-28 19:43:58 +00:00
Calum H.andGitHub 4c14339b4b fix: locale loading for ui + moderation nags (#5235)
* fix: locale loading

* fix: locale problems

* fix: lint
2026-01-28 19:41:03 +00:00
ProspectorandGitHub 16ac2aae6b Make tags translatable, move icons to frontend, a few other things (#5229)
* Make tags translatable, move icons to frontend, a few other things

* Migrate more things

* fix import

* more import fixes

* export tag-messages

* lint
2026-01-28 19:01:56 +00:00
6d68d50699 Deduplicate common strings in translation (#5085)
* deduplicate common strings, part 1

* deduplicate common strings, part 2

* typo and general import mess fixes

* detail common string

* fix lint

* fix lint TWO

* adress review concerns + lint

* app lint too

* actually leave privateLabel untouched

* lint fix THREE

* fix: broken msg

* fix: lint

---------

Co-authored-by: Calum H. <contact@cal.engineer>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2026-01-28 18:10:50 +00:00
Calum H.andGitHub 400c571fe6 refactor: project saving logic (#5225)
* fix: project data saving not visually shown immediately

* feat: useSavable improvements

* feat: migrate where possible to useSavable

* fix: gitignore

* feat: use es-toolkit
2026-01-28 16:46:14 +00:00
aecsocketandGitHub e57c15b3ce Add SQLx operation tracing (#5223)
* wip: vendor sqlx-tracing

* (compiles) standardize pg types used

* more standardization

* general log message improvements

* wip: improve sqlx-tracing architecture

* unify sqlx::Executor type

* wip: try fix sqlx tracing

* wip: sqlx-tracing compiles

* so close

* it compiles

* fix ci
2026-01-28 13:38:57 +00:00
Prospector 7cb7e881fa Revert "changelog"
This reverts commit 638bb55649.
2026-01-27 16:31:20 -08:00
Prospector 2cf82349a5 Revert "feat: badge for tax 2025 bug (#5230)"
This reverts commit 6d1b0eef15.
2026-01-27 16:31:15 -08:00
Prospector 638bb55649 changelog 2026-01-27 14:09:10 -08:00
Calum H.andGitHub 6d1b0eef15 feat: badge for tax 2025 bug (#5230) 2026-01-27 19:03:54 +00:00
03658b6a62 feat: show update available notif for modrinth app in linux (#5181)
* feat: show update available notif for modrinth app in linux

* remove changelog button

* update copy

* pnpm prepr

* add restart app changelog

* pnpm prepr

* use env var to check for updates are disabled

* update copy

* pnpm prepr

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2026-01-27 14:20:11 +00:00
François-Xavier TalbotandGitHub f998a8dca5 Allow node transfer field to recv more than 1 node (#5220) 2026-01-26 22:49:21 +00:00
Modrinth BotandGitHub 0d6bee3a5b New translations from Crowdin (main) (#5217) 2026-01-26 07:47:29 +00:00
Prospector 7ce334aeb2 changelog 2026-01-25 13:22:14 -08:00
ProspectorandGitHub fe3a1b2058 Fix versions not loading in settings page (#5214)
* Fix versions not loading in settings page

* prepr
2026-01-25 13:21:25 -08:00
662b73211a Fix CSP issue when changing capes (#5177)
* Update tauri.conf.json

Signed-off-by: Felix <60808107+ItsFelix5@users.noreply.github.com>

* feat: add https for futureproofing asw

---------

Signed-off-by: Felix <60808107+ItsFelix5@users.noreply.github.com>
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2026-01-25 20:59:06 +00:00
c453a03a02 fix: dont await lock releasing (#5161)
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2026-01-25 20:57:43 +00:00
aecsocketandGitHub 05f8113bd0 Fix CI on main (#5213) 2026-01-25 12:40:22 -08:00
Prospector 63dfc3f636 changelog 2026-01-25 12:31:44 -08:00
Calum H.andGitHub c96a303d8a fix: optimistically updating on moderation mutations (#5200)
* fix: moderation optimistically update

* fix: gallery settings
2026-01-25 12:27:45 -08:00
François-Xavier TalbotandGitHub 2d7e87a4cb Local cache lock (#5193) 2026-01-24 00:35:46 +01:00
Prospector fa421b4b83 changelog 2026-01-23 12:59:29 -08:00
François-Xavier TalbotandGitHub 79217e78b4 Theseus circuit breaker (#5196)
* Impl request fence

* Reduce max FETCH_ATTEMPTS

* Tweak fail threshold & window

* Check block status every retry iteration

* Fix fmt

* Fix fmt 2
2026-01-23 20:28:50 +00:00
Prospector bdd808c279 changelog 2026-01-23 12:17:44 -08:00
986a7e6216 feat: ssr fixes + switch project page to tanstack (#5192)
* feat: ssr fixes

* feat: lazy load non-core data

* feat: ssr timing debugging

* feat: go back to all parallel

* feat: migrate to DI + set up mutators

* feat: remove double get versions request, only call v3

* refactor: [version].vue page to use composition API and typescript

* feat: gallery.vue start

* fix: remove left behind console log

* fix: type issues + gallery

* fix: versionsummary modal + version page direct join

* fix: projectRaw guard

* fix: currentMember val fix

* fix: actualProjectType

* fix: vers summary link same page

* fix: lint

---------

Co-authored-by: tdgao <mr.trumgao@gmail.com>
2026-01-23 12:12:50 -08:00
lumiscosityandGitHub b54fcaa0b1 feat: Make hosting marketing page translatable (#5145)
* feat: make hosting marketing page translatable, part 1

* format what we've got so far

* lint and fix locale setting

* the rest of the owl, almost

still one more message in MedalPlanPromotion that's a bit annoying because of all the inline styles

* finishing touches

some things just shouldn't be questioned, i guess. that's two for two on issues that occur even though i seem to have done everything right. i give up

* whoops, that's literal

* get back in the span, you

* fix typo + lint

* and now it works

* one more fix
2026-01-23 19:54:24 +00:00
Michael H. 1cf782c298 Revert "Implement redis clustering (#5189)"
This reverts commit fb1050e409.
2026-01-23 16:08:07 +01:00
fb1050e409 Implement redis clustering (#5189)
Co-authored-by: Jai Agrawal <geometrically@Jais-MacBook-Pro.local>
2026-01-23 13:51:17 +01:00
François-Xavier TalbotandGitHub 5c29a8c7dd Batched search indexing (#5191)
* Use RO pool for search indexing

* Batched search indexing that actually works

* Query cache
2026-01-23 12:32:02 +00:00
544 changed files with 33508 additions and 13632 deletions
+39 -18
View File
@@ -19,7 +19,7 @@ on:
sign-windows-binaries:
description: Sign Windows binaries
type: boolean
default: true
default: false
required: false
jobs:
@@ -40,33 +40,48 @@ jobs:
runs-on: ${{ matrix.platform }}
steps:
- name: 📥 Check out code
- name: Check out code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🧰 Setup Rust toolchain
- name: Setup Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ''
target: ${{ startsWith(matrix.platform, 'macos') && 'x86_64-apple-darwin' || '' }}
- name: 🧰 Install pnpm
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: 🧰 Setup Node.js
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: pnpm
- name: 🧰 Install Linux build dependencies
- name: Generate tauri-dev.conf.json
shell: bash
run: |
GIT_HASH=$(git rev-parse --short HEAD)
cat > apps/app/tauri-dev.conf.json <<EOF
{
"productName": "Modrinth App (dev-${GIT_HASH})",
"mainBinaryName": "Modrinth App (dev-${GIT_HASH})",
"identifier": "ModrinthApp-dev-${GIT_HASH}",
"bundle": {
"fileAssociations": []
}
}
EOF
- name: Install Linux build dependencies
if: startsWith(matrix.platform, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install -yq libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev
- name: 🧰 Setup Dasel
- name: Setup Dasel
uses: jaxxstorm/action-install-gh-release@v2.1.0
with:
repo: TomWright/dasel
@@ -75,7 +90,7 @@ jobs:
rename-to: ${{ startsWith(matrix.platform, 'windows') && 'dasel.exe' || 'dasel' }}
chmod: 0755
- name: ⚙️ Set application version and environment
- name: Set application version and environment
shell: bash
run: |
APP_VERSION="$(git describe --tags --always | sed -E 's/-([0-9]+)-(g[0-9a-fA-F]+)$/-canary+\1.\2/')"
@@ -86,13 +101,13 @@ jobs:
cp packages/app-lib/.env.prod packages/app-lib/.env
- name: 💨 Setup Turbo cache
- name: Setup Turbo cache
uses: rharkor/caching-for-turbo@v1.8
- name: 🧰 Install dependencies
- name: Install dependencies
run: pnpm install
- name: ✍️ Set up Windows code signing
- name: Set up Windows code signing
if: startsWith(matrix.platform, 'windows')
shell: bash
run: |
@@ -102,8 +117,8 @@ jobs:
dasel delete -f apps/app/tauri-release.conf.json 'bundle.windows.signCommand'
fi
- name: 🔨 Build macOS app
run: pnpm --filter=@modrinth/app run tauri build --target universal-apple-darwin --config tauri-release.conf.json
- name: Build macOS app
run: ${{ github.ref == 'refs/heads/main' && 'pnpm --filter=@modrinth/app run tauri build --target universal-apple-darwin --config tauri-release.conf.json' || 'pnpm --filter=@modrinth/app run tauri build --target universal-apple-darwin --config tauri-dev.conf.json' }}
if: startsWith(matrix.platform, 'macos')
env:
ENABLE_CODE_SIGNING: ${{ secrets.APPLE_CERTIFICATE }}
@@ -116,19 +131,19 @@ jobs:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
- name: 🔨 Build Linux app
run: pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json
- name: Build Linux app
run: ${{ github.ref == 'refs/heads/main' && 'pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json' || 'pnpm --filter=@modrinth/app run tauri build --config tauri-dev.conf.json' }}
if: startsWith(matrix.platform, 'ubuntu')
env:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
- name: 🔨 Build Windows app
- name: Build Windows app
run: |
[System.Convert]::FromBase64String("$env:DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64") | Set-Content -Path signer-client-cert.p12 -AsByteStream
$env:DIGICERT_ONE_SIGNER_CREDENTIALS = "$env:DIGICERT_ONE_SIGNER_API_KEY|$PWD\signer-client-cert.p12|$env:DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD"
$env:JAVA_HOME = "$env:JAVA_HOME_17_X64"
pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json --verbose --bundles 'nsis,updater'
${{ github.ref == 'refs/heads/main' && 'pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json --verbose --bundles "nsis,updater"' || 'pnpm --filter=@modrinth/app run tauri build --config tauri-dev.conf.json --verbose --bundles "nsis,updater"' }}
Remove-Item -Path signer-client-cert.p12 -ErrorAction SilentlyContinue
if: startsWith(matrix.platform, 'windows')
env:
@@ -138,7 +153,7 @@ jobs:
DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64: ${{ secrets.DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64 }}
DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD: ${{ secrets.DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD }}
- name: 📤 Upload app bundles
- name: Upload app bundles
uses: actions/upload-artifact@v4
with:
name: App bundle (${{ matrix.artifact-target-name }})
@@ -146,7 +161,13 @@ jobs:
target/release/bundle/appimage/Modrinth App_*.AppImage*
target/release/bundle/deb/Modrinth App_*.deb*
target/release/bundle/rpm/Modrinth App-*.rpm*
target/release/bundle/appimage/Modrinth App (dev-*)_*.AppImage*
target/release/bundle/deb/Modrinth App (dev-*)_*.deb*
target/release/bundle/rpm/Modrinth App (dev-*)-*.rpm*
target/universal-apple-darwin/release/bundle/macos/Modrinth App.app.tar.gz*
target/universal-apple-darwin/release/bundle/macos/Modrinth App (dev-*)*.app.tar.gz
target/universal-apple-darwin/release/bundle/dmg/Modrinth App (dev-*)*.dmg
target/universal-apple-darwin/release/bundle/dmg/Modrinth App_*.dmg*
target/release/bundle/nsis/Modrinth App_*-setup.exe*
target/release/bundle/nsis/Modrinth App (dev-*)_*-setup.exe*
target/release/bundle/nsis/Modrinth App_*-setup.nsis.zip*
+1
View File
@@ -65,6 +65,7 @@ app-playground-data/*
.astro
.claude
.letta
# labrinth demo fixtures
apps/labrinth/fixtures/demo
Generated
+598 -12
View File
@@ -521,6 +521,22 @@ dependencies = [
"zbus",
]
[[package]]
name = "astral-tokio-tar"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec179a06c1769b1e42e1e2cbe74c7dcdb3d6383c838454d063eaac5bbb7ebbe5"
dependencies = [
"filetime",
"futures-core",
"libc",
"portable-atomic",
"rustc-hash",
"tokio",
"tokio-stream",
"xattr",
]
[[package]]
name = "async-broadcast"
version = "0.7.2"
@@ -671,6 +687,28 @@ dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "async-stream"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
dependencies = [
"async-stream-impl",
"futures-core",
"pin-project-lite",
]
[[package]]
name = "async-stream-impl"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
]
[[package]]
name = "async-stripe"
version = "0.41.0"
@@ -892,6 +930,49 @@ dependencies = [
"thiserror 2.0.17",
]
[[package]]
name = "axum"
version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8"
dependencies = [
"axum-core",
"bytes",
"futures-util",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"itoa",
"matchit",
"memchr",
"mime",
"percent-encoding",
"pin-project-lite",
"serde_core",
"sync_wrapper",
"tower",
"tower-layer",
"tower-service",
]
[[package]]
name = "axum-core"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
dependencies = [
"bytes",
"futures-core",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"mime",
"pin-project-lite",
"sync_wrapper",
"tower-layer",
"tower-service",
]
[[package]]
name = "backtrace"
version = "0.3.76"
@@ -1066,6 +1147,83 @@ dependencies = [
"piper",
]
[[package]]
name = "bollard"
version = "0.19.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87a52479c9237eb04047ddb94788c41ca0d26eaff8b697ecfbb4c32f7fdc3b1b"
dependencies = [
"async-stream",
"base64 0.22.1",
"bitflags 2.9.4",
"bollard-buildkit-proto",
"bollard-stubs",
"bytes",
"chrono",
"futures-core",
"futures-util",
"hex",
"home",
"http 1.3.1",
"http-body-util",
"hyper 1.7.0",
"hyper-named-pipe",
"hyper-rustls 0.27.7",
"hyper-util",
"hyperlocal",
"log",
"num",
"pin-project-lite",
"rand 0.9.2",
"rustls 0.23.32",
"rustls-native-certs 0.8.1",
"rustls-pemfile 2.2.0",
"rustls-pki-types",
"serde",
"serde_derive",
"serde_json",
"serde_repr",
"serde_urlencoded",
"thiserror 2.0.17",
"tokio",
"tokio-stream",
"tokio-util",
"tonic 0.14.2",
"tower-service",
"url",
"winapi",
]
[[package]]
name = "bollard-buildkit-proto"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85a885520bf6249ab931a764ffdb87b0ceef48e6e7d807cfdb21b751e086e1ad"
dependencies = [
"prost 0.14.3",
"prost-types",
"tonic 0.14.2",
"tonic-prost",
"ureq",
]
[[package]]
name = "bollard-stubs"
version = "1.49.1-rc.28.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5731fe885755e92beff1950774068e0cae67ea6ec7587381536fca84f1779623"
dependencies = [
"base64 0.22.1",
"bollard-buildkit-proto",
"bytes",
"chrono",
"prost 0.14.3",
"serde",
"serde_json",
"serde_repr",
"serde_with",
]
[[package]]
name = "borsh"
version = "1.5.7"
@@ -2089,30 +2247,28 @@ checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
[[package]]
name = "deadpool"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b"
source = "git+https://github.com/modrinth/deadpool?rev=db5fb00b036ecc8fe5f18853c559b745ffe47bde#db5fb00b036ecc8fe5f18853c559b745ffe47bde"
dependencies = [
"deadpool-runtime",
"lazy_static",
"num_cpus",
"tokio",
"tracing",
]
[[package]]
name = "deadpool-redis"
version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0965b977f1244bc3783bb27cd79cfcff335a8341da18f79232d00504b18eb1a"
version = "0.22.1"
source = "git+https://github.com/modrinth/deadpool?rev=db5fb00b036ecc8fe5f18853c559b745ffe47bde#db5fb00b036ecc8fe5f18853c559b745ffe47bde"
dependencies = [
"deadpool",
"redis",
"tracing",
]
[[package]]
name = "deadpool-runtime"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b"
version = "0.1.5"
source = "git+https://github.com/modrinth/deadpool?rev=db5fb00b036ecc8fe5f18853c559b745ffe47bde#db5fb00b036ecc8fe5f18853c559b745ffe47bde"
dependencies = [
"tokio",
]
@@ -2378,6 +2534,17 @@ dependencies = [
"const-random",
]
[[package]]
name = "docker_credential"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d89dfcba45b4afad7450a99b39e751590463e45c04728cf555d36bb66940de8"
dependencies = [
"base64 0.21.7",
"serde",
"serde_json",
]
[[package]]
name = "document-features"
version = "0.2.11"
@@ -2679,6 +2846,17 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "etcetera"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26c7b13d0780cb82722fd59f6f57f925e143427e4a75313a6c77243bf5326ae6"
dependencies = [
"cfg-if",
"home",
"windows-sys 0.59.0",
]
[[package]]
name = "event-listener"
version = "2.5.3"
@@ -3801,6 +3979,21 @@ dependencies = [
"want",
]
[[package]]
name = "hyper-named-pipe"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278"
dependencies = [
"hex",
"hyper 1.7.0",
"hyper-util",
"pin-project-lite",
"tokio",
"tower-service",
"winapi",
]
[[package]]
name = "hyper-rustls"
version = "0.24.2"
@@ -3835,6 +4028,19 @@ dependencies = [
"webpki-roots 1.0.3",
]
[[package]]
name = "hyper-timeout"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0"
dependencies = [
"hyper 1.7.0",
"hyper-util",
"pin-project-lite",
"tokio",
"tower-service",
]
[[package]]
name = "hyper-tls"
version = "0.6.0"
@@ -3877,6 +4083,21 @@ dependencies = [
"windows-registry",
]
[[package]]
name = "hyperlocal"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7"
dependencies = [
"hex",
"http-body-util",
"hyper 1.7.0",
"hyper-util",
"pin-project-lite",
"tokio",
"tower-service",
]
[[package]]
name = "iana-time-zone"
version = "0.1.64"
@@ -4566,6 +4787,7 @@ dependencies = [
"sha2",
"spdx",
"sqlx",
"sqlx-tracing",
"strum",
"thiserror 2.0.17",
"tikv-jemalloc-ctl",
@@ -4888,6 +5110,12 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
[[package]]
name = "matchit"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
[[package]]
name = "maxminddb"
version = "0.26.0"
@@ -5873,6 +6101,124 @@ dependencies = [
"vcpkg",
]
[[package]]
name = "opentelemetry"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aaf416e4cb72756655126f7dd7bb0af49c674f4c1b9903e80c009e0c37e552e6"
dependencies = [
"futures-core",
"futures-sink",
"js-sys",
"pin-project-lite",
"thiserror 2.0.17",
"tracing",
]
[[package]]
name = "opentelemetry-appender-tracing"
version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e68f63eca5fad47e570e00e893094fc17be959c80c79a7d6ec1abdd5ae6ffc16"
dependencies = [
"opentelemetry",
"tracing",
"tracing-core",
"tracing-log",
"tracing-opentelemetry",
"tracing-subscriber",
]
[[package]]
name = "opentelemetry-http"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f6639e842a97dbea8886e3439710ae463120091e2e064518ba8e716e6ac36d"
dependencies = [
"async-trait",
"bytes",
"http 1.3.1",
"opentelemetry",
"reqwest",
]
[[package]]
name = "opentelemetry-otlp"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbee664a43e07615731afc539ca60c6d9f1a9425e25ca09c57bc36c87c55852b"
dependencies = [
"http 1.3.1",
"opentelemetry",
"opentelemetry-http",
"opentelemetry-proto",
"opentelemetry_sdk",
"prost 0.13.5",
"reqwest",
"thiserror 2.0.17",
"tokio",
"tonic 0.13.1",
"tracing",
]
[[package]]
name = "opentelemetry-proto"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e046fd7660710fe5a05e8748e70d9058dc15c94ba914e7c4faa7c728f0e8ddc"
dependencies = [
"opentelemetry",
"opentelemetry_sdk",
"prost 0.13.5",
"tonic 0.13.1",
]
[[package]]
name = "opentelemetry-semantic-conventions"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83d059a296a47436748557a353c5e6c5705b9470ef6c95cfc52c21a8814ddac2"
[[package]]
name = "opentelemetry-testing"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "562407eb254fea88076c8a410a733a8ee2075fd9c7fbde3da2a03d29e2cef104"
dependencies = [
"anyhow",
"opentelemetry",
"opentelemetry-appender-tracing",
"opentelemetry-otlp",
"opentelemetry-semantic-conventions",
"opentelemetry_sdk",
"serde",
"serde_json",
"serial_test",
"tempfile",
"testcontainers",
"tokio",
"tracing-opentelemetry",
"tracing-subscriber",
]
[[package]]
name = "opentelemetry_sdk"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11f644aa9e5e31d11896e024305d7e3c98a88884d9f8919dbf37a9991bc47a4b"
dependencies = [
"futures-channel",
"futures-executor",
"futures-util",
"opentelemetry",
"percent-encoding",
"rand 0.9.2",
"serde_json",
"thiserror 2.0.17",
"tokio",
"tokio-stream",
]
[[package]]
name = "option-ext"
version = "0.2.0"
@@ -5997,6 +6343,31 @@ dependencies = [
"windows-link 0.2.1",
]
[[package]]
name = "parse-display"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "914a1c2265c98e2446911282c6ac86d8524f495792c38c5bd884f80499c7538a"
dependencies = [
"parse-display-derive",
"regex",
"regex-syntax",
]
[[package]]
name = "parse-display-derive"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ae7800a4c974efd12df917266338e79a7a74415173caf7e70aa0a0707345281"
dependencies = [
"proc-macro2",
"quote",
"regex",
"regex-syntax",
"structmeta",
"syn 2.0.106",
]
[[package]]
name = "parse-size"
version = "1.1.0"
@@ -6384,7 +6755,7 @@ dependencies = [
"inferno",
"num",
"paste",
"prost",
"prost 0.13.5",
]
[[package]]
@@ -6590,7 +6961,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
dependencies = [
"bytes",
"prost-derive",
"prost-derive 0.13.5",
]
[[package]]
name = "prost"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568"
dependencies = [
"bytes",
"prost-derive 0.14.3",
]
[[package]]
@@ -6606,6 +6987,28 @@ dependencies = [
"syn 2.0.106",
]
[[package]]
name = "prost-derive"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b"
dependencies = [
"anyhow",
"itertools 0.14.0",
"proc-macro2",
"quote",
"syn 2.0.106",
]
[[package]]
name = "prost-types"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7"
dependencies = [
"prost 0.14.3",
]
[[package]]
name = "protobuf"
version = "3.7.2"
@@ -7633,6 +8036,15 @@ dependencies = [
"winapi-util",
]
[[package]]
name = "scc"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc"
dependencies = [
"sdd",
]
[[package]]
name = "schannel"
version = "0.1.28"
@@ -7724,6 +8136,12 @@ dependencies = [
"untrusted",
]
[[package]]
name = "sdd"
version = "3.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca"
[[package]]
name = "seahash"
version = "4.1.0"
@@ -8170,6 +8588,32 @@ dependencies = [
"syn 2.0.106",
]
[[package]]
name = "serial_test"
version = "3.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d0b343e184fc3b7bb44dff0705fffcf4b3756ba6aff420dddd8b24ca145e555"
dependencies = [
"futures-executor",
"futures-util",
"log",
"once_cell",
"parking_lot",
"scc",
"serial_test_derive",
]
[[package]]
name = "serial_test_derive"
version = "3.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f50427f258fb77356e4cd4aa0e87e2bd2c66dbcee41dc405282cae2bfc26c83"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
]
[[package]]
name = "serialize-to-javascript"
version = "0.1.2"
@@ -8576,7 +9020,7 @@ dependencies = [
"chrono",
"crc",
"dotenvy",
"etcetera",
"etcetera 0.8.0",
"futures-channel",
"futures-core",
"futures-util",
@@ -8629,6 +9073,20 @@ dependencies = [
"uuid 1.18.1",
]
[[package]]
name = "sqlx-tracing"
version = "0.2.0"
dependencies = [
"derive_more 2.0.1",
"futures",
"opentelemetry",
"opentelemetry-testing",
"sqlx",
"testcontainers",
"tokio",
"tracing",
]
[[package]]
name = "stable_deref_trait"
version = "1.2.1"
@@ -9405,6 +9863,35 @@ dependencies = [
"winapi",
]
[[package]]
name = "testcontainers"
version = "0.25.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f3ac71069f20ecfa60c396316c283fbf35e6833a53dff551a31b5458da05edc"
dependencies = [
"astral-tokio-tar",
"async-trait",
"bollard",
"bytes",
"docker_credential",
"either",
"etcetera 0.10.0",
"futures",
"log",
"memchr",
"parse-display",
"pin-project-lite",
"serde",
"serde_json",
"serde_with",
"thiserror 2.0.17",
"tokio",
"tokio-stream",
"tokio-util",
"ulid",
"url",
]
[[package]]
name = "theseus"
version = "1.0.0-local"
@@ -9442,6 +9929,7 @@ dependencies = [
"notify",
"notify-debouncer-mini",
"p256",
"parking_lot",
"paste",
"path-util",
"phf 0.13.1",
@@ -9870,6 +10358,72 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
[[package]]
name = "tonic"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9"
dependencies = [
"async-trait",
"base64 0.22.1",
"bytes",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"hyper 1.7.0",
"hyper-timeout",
"hyper-util",
"percent-encoding",
"pin-project",
"prost 0.13.5",
"tokio",
"tokio-stream",
"tower",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "tonic"
version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203"
dependencies = [
"async-trait",
"axum",
"base64 0.22.1",
"bytes",
"h2 0.4.12",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"hyper 1.7.0",
"hyper-timeout",
"hyper-util",
"percent-encoding",
"pin-project",
"socket2 0.6.1",
"sync_wrapper",
"tokio",
"tokio-stream",
"tower",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "tonic-prost"
version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67"
dependencies = [
"bytes",
"prost 0.14.3",
"tonic 0.14.2",
]
[[package]]
name = "totp-rs"
version = "5.7.0"
@@ -9892,11 +10446,15 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
dependencies = [
"futures-core",
"futures-util",
"indexmap 2.11.4",
"pin-project-lite",
"slab",
"sync_wrapper",
"tokio",
"tokio-util",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
@@ -10012,6 +10570,24 @@ dependencies = [
"tracing-core",
]
[[package]]
name = "tracing-opentelemetry"
version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddcf5959f39507d0d04d6413119c04f33b623f4f951ebcbdddddfad2d0623a9c"
dependencies = [
"js-sys",
"once_cell",
"opentelemetry",
"opentelemetry_sdk",
"smallvec",
"tracing",
"tracing-core",
"tracing-log",
"tracing-subscriber",
"web-time",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.20"
@@ -10107,6 +10683,16 @@ dependencies = [
"winapi",
]
[[package]]
name = "ulid"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe"
dependencies = [
"rand 0.9.2",
"web-time",
]
[[package]]
name = "uname"
version = "0.1.1"
+4 -1
View File
@@ -60,7 +60,7 @@ const_format = "0.2.34"
daedalus = { path = "packages/daedalus" }
dashmap = "6.1.0"
data-url = "0.3.2"
deadpool-redis = "0.22.0"
deadpool-redis = { version = "0.22.1", git = "https://github.com/modrinth/deadpool", rev = "db5fb00b036ecc8fe5f18853c559b745ffe47bde" }
derive_more = "2.0.1"
directories = "6.0.0"
dirs = "6.0.0"
@@ -116,6 +116,7 @@ native-dialog = "0.9.2"
notify = { version = "8.2.0", default-features = false }
notify-debouncer-mini = { version = "0.7.0", default-features = false }
p256 = "0.13.2"
parking_lot = "0.12.5"
paste = "1.0.15"
path-util = { path = "packages/path-util" }
phf = { version = "0.13.1", features = ["macros"] }
@@ -163,6 +164,7 @@ sha2 = "0.10.9"
shlex = "1.3.0"
spdx = "0.12.0"
sqlx = { version = "0.8.6", default-features = false }
sqlx-tracing = { path = "packages/sqlx-tracing" }
strum = "0.27.2"
sysinfo = { version = "0.37.2", default-features = false }
tar = "0.4.44"
@@ -268,4 +270,5 @@ codegen-units = 1 # Compile crates one after another so the compiler can optimi
# Specific profile for labrinth production builds
[profile.release-labrinth]
inherits = "release"
strip = false # Keep debug symbols for Sentry
panic = "unwind" # Don't exit the whole app on panic in production
+4
View File
@@ -17,3 +17,7 @@ extend-exclude = [
tou = "tou"
# Google Ad Manager
gam = "gam"
# short for "constants"
consts = "consts"
# short for "Copy"
Cpy = "Cpy"
+8 -2
View File
@@ -71,6 +71,7 @@ import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue'
import RunningAppBar from '@/components/ui/RunningAppBar.vue'
import SplashScreen from '@/components/ui/SplashScreen.vue'
import UpdateAvailableToast from '@/components/ui/UpdateAvailableToast.vue'
import UpdateToast from '@/components/ui/UpdateToast.vue'
import URLConfirmModal from '@/components/ui/URLConfirmModal.vue'
import { useCheckDisableMouseover } from '@/composables/macCssFix.js'
@@ -143,6 +144,7 @@ const showOnboarding = ref(false)
const nativeDecorations = ref(false)
const os = ref('')
const isDevEnvironment = ref(false)
const stateInitialized = ref(false)
@@ -247,6 +249,7 @@ async function setupApp() {
os.value = await getOS()
const dev = await isDev()
isDevEnvironment.value = dev
const version = await getVersion()
showOnboarding.value = !onboarded
@@ -505,21 +508,23 @@ const restarting = ref(false)
const updateToastDismissed = ref(false)
const availableUpdate = ref(null)
const updateSize = ref(null)
const updatesEnabled = ref(true)
async function checkUpdates() {
if (!(await areUpdatesEnabled())) {
console.log('Skipping update check as updates are disabled in this build or environment')
updatesEnabled.value = false
return
}
async function performCheck() {
const update = await invoke('plugin:updater|check')
const isExistingUpdate = update.version === availableUpdate.value?.version
if (!update) {
console.log('No update available')
return
}
const isExistingUpdate = update.version === availableUpdate.value?.version
if (isExistingUpdate) {
console.log('Update is already known')
return
@@ -769,6 +774,7 @@ provideAppUpdateDownloadProgress(appUpdateDownload)
@restart="installUpdate"
@download="downloadAvailableUpdate"
/>
<UpdateAvailableToast v-else-if="!updatesEnabled && os === 'Linux' && !isDevEnvironment" />
</Transition>
</Suspense>
<Transition name="fade">
@@ -1,7 +1,6 @@
<script setup lang="ts">
import { GameIcon, LeftArrowIcon } from '@modrinth/assets'
import { Avatar, ButtonStyled } from '@modrinth/ui'
import { formatCategory } from '@modrinth/utils'
import { Avatar, ButtonStyled, FormattedTag } from '@modrinth/ui'
import { convertFileSrc } from '@tauri-apps/api/core'
type Instance = {
@@ -37,7 +36,8 @@ defineProps<{
</span>
<span class="text-secondary flex items-center gap-2 font-semibold">
<GameIcon class="h-5 w-5 text-secondary" />
{{ formatCategory(instance.loader) }} {{ instance.game_version }}
<FormattedTag :tag="instance.loader" enforce-type="loader" />
{{ instance.game_version }}
</span>
</span>
</span>
@@ -1,7 +1,7 @@
<script setup>
import { DownloadIcon, HeartIcon, TagIcon } from '@modrinth/assets'
import { Avatar, TagItem } from '@modrinth/ui'
import { formatCategory, formatNumber } from '@modrinth/utils'
import { Avatar, FormattedTag, TagItem } from '@modrinth/ui'
import { formatNumber } from '@modrinth/utils'
import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
import { computed } from 'vue'
@@ -107,7 +107,7 @@ const toTransparent = computed(() => {
<div class="flex items-center gap-1 pr-2">
<TagIcon />
<TagItem>
{{ formatCategory(featuredCategory) }}
<FormattedTag :tag="featuredCategory" />
</TagItem>
</div>
</div>
@@ -67,7 +67,7 @@
:key="tag"
class="text-sm font-semibold text-secondary flex gap-1 px-[0.375rem] py-0.5 bg-button-bg rounded-full"
>
{{ formatCategory(tag.name) }}
<FormattedTag :tag="tag.name" />
</div>
</div>
</div>
@@ -118,8 +118,8 @@
<script setup>
import { CheckIcon, DownloadIcon, HeartIcon, PlusIcon, TagsIcon } from '@modrinth/assets'
import { Avatar, ButtonStyled, injectNotificationManager } from '@modrinth/ui'
import { formatCategory, formatNumber } from '@modrinth/utils'
import { Avatar, ButtonStyled, FormattedTag, injectNotificationManager } from '@modrinth/ui'
import { formatNumber } from '@modrinth/utils'
import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
import { computed, ref } from 'vue'
@@ -0,0 +1,84 @@
<script setup lang="ts">
import { XIcon } from '@modrinth/assets'
import { ButtonStyled, commonMessages, defineMessages, useVIntl } from '@modrinth/ui'
import { getVersion } from '@tauri-apps/api/app'
import { onMounted, onUnmounted, ref } from 'vue'
const { formatMessage } = useVIntl()
const dismissed = ref(false)
const availableUpdate = ref<{ version: string } | null>(null)
let checkInterval: ReturnType<typeof setInterval> | null = null
async function checkForUpdate() {
try {
const [response, currentVersion] = await Promise.all([
fetch('https://launcher-files.modrinth.com/updates.json'),
getVersion(),
])
const updates = await response.json()
const latestVersion = updates?.version
if (latestVersion && latestVersion !== currentVersion) {
if (latestVersion !== availableUpdate.value?.version) {
availableUpdate.value = { version: latestVersion }
dismissed.value = false
}
}
} catch (e) {
console.error('Failed to check for updates:', e)
}
}
function dismiss() {
dismissed.value = true
}
onMounted(() => {
checkForUpdate()
checkInterval = setInterval(checkForUpdate, 5 * 60 * 1000)
})
onUnmounted(() => {
if (checkInterval) {
clearInterval(checkInterval)
}
})
const messages = defineMessages({
title: {
id: 'app.update-toast.title',
defaultMessage: 'Update available',
},
body: {
id: 'app.update-toast.body.linux',
defaultMessage:
'Modrinth App v{version} is available. Use your package manager to update for the latest features and fixes!',
},
download: {
id: 'app.update-toast.download-page',
defaultMessage: 'Download',
},
})
</script>
<template>
<div
v-if="availableUpdate && !dismissed"
class="grid grid-cols-[min-content] fixed card-shadow rounded-2xl top-[--top-bar-height] mt-6 right-6 p-4 z-10 bg-bg-raised border-divider border-solid border-[2px]"
>
<div class="flex min-w-[25rem] gap-4">
<h2 class="whitespace-nowrap text-base text-contrast font-semibold m-0 grow">
{{ formatMessage(messages.title) }}
</h2>
<ButtonStyled size="small" circular>
<button v-tooltip="formatMessage(commonMessages.closeButton)" @click="dismiss">
<XIcon />
</button>
</ButtonStyled>
</div>
<p class="text-sm mt-2 mb-0">
{{ formatMessage(messages.body, { version: availableUpdate.version }) }}
</p>
</div>
</template>
@@ -28,7 +28,7 @@
:custom-label="
(version) =>
`${version?.name} (${version?.loaders
.map((name) => formatCategory(name))
.map((name) => formatLoader(formatMessage, name))
.join(', ')} - ${version?.game_versions.join(', ')})`
"
:max-height="150"
@@ -36,7 +36,9 @@
<span v-else>
<span>
{{ selectedVersion?.name }} ({{
selectedVersion?.loaders.map((name) => formatCategory(name)).join(', ')
selectedVersion?.loaders
.map((name) => formatLoader(formatMessage, name))
.join(', ')
}}
- {{ selectedVersion?.game_versions.join(', ') }})
</span>
@@ -57,8 +59,7 @@
<script setup>
import { DownloadIcon, XIcon } from '@modrinth/assets'
import { Button, injectNotificationManager } from '@modrinth/ui'
import { formatCategory } from '@modrinth/utils'
import { Button, formatLoader, injectNotificationManager, useVIntl } from '@modrinth/ui'
import { ref } from 'vue'
import Multiselect from 'vue-multiselect'
@@ -67,6 +68,7 @@ import { trackEvent } from '@/helpers/analytics'
import { add_project_from_version as installMod } from '@/helpers/profile'
const { handleError } = injectNotificationManager()
const { formatMessage } = useVIntl()
const instance = ref(null)
const project = ref(null)
@@ -1,6 +1,7 @@
<script setup lang="ts">
import {
DownloadIcon,
getLoaderIcon,
HammerIcon,
IssuesIcon,
SpinnerIcon,
@@ -17,16 +18,11 @@ import {
Chips,
Combobox,
defineMessages,
formatLoader,
injectNotificationManager,
useVIntl,
} from '@modrinth/ui'
import {
formatCategory,
type GameVersionTag,
type PlatformTag,
type Project,
type Version,
} from '@modrinth/utils'
import type { GameVersionTag, PlatformTag, Project, Version } from '@modrinth/utils'
import dayjs from 'dayjs'
import { computed, type ComputedRef, type Ref, ref, shallowRef, watch } from 'vue'
@@ -129,9 +125,7 @@ if (props.instance.linked_data && props.instance.linked_data.project_id && !prop
fetching.value = false
}
const currentLoaderIcon = computed(
() => loaders?.value.find((x) => x.name === props.instance.loader)?.icon,
)
const currentLoaderIcon = computed(() => getLoaderIcon(props.instance.loader))
const gameVersionsForLoader = computed(() => {
return all_game_versions?.value.filter((item) => {
@@ -550,7 +544,7 @@ const messages = defineMessages({
v-else
class="w-10 h-10 flex items-center justify-center rounded-full bg-button-bg border-solid border-[1px] border-button-border p-2 [&_svg]:h-full [&_svg]:w-full"
>
<div v-if="!!currentLoaderIcon" class="contents" v-html="currentLoaderIcon" />
<component :is="currentLoaderIcon" v-if="currentLoaderIcon" />
<WrenchIcon v-else />
</div>
<div class="flex flex-col gap-2 justify-center">
@@ -569,7 +563,7 @@ const messages = defineMessages({
? modpackVersion
? modpackVersion?.version_number
: 'Unknown version'
: formatCategory(instance.loader)
: formatLoader(formatMessage, instance.loader)
}}
<template v-if="instance.loader !== 'vanilla' && !modpackProject">
{{ instance.loader_version || formatMessage(messages.unknownVersion) }}
@@ -677,7 +671,11 @@ const messages = defineMessages({
</div>
<template v-if="loader !== 'vanilla'">
<h2 class="m-0 mt-4 text-lg font-extrabold text-contrast block">
{{ formatMessage(messages.loaderVersion, { loader: formatCategory(loader) }) }}
{{
formatMessage(messages.loaderVersion, {
loader: formatLoader(formatMessage, loader),
})
}}
</h2>
<Combobox
v-if="selectableLoaderVersions"
@@ -709,7 +707,7 @@ const messages = defineMessages({
? messages.alreadyInstalledVanilla
: messages.alreadyInstalledModded,
{
platform: formatCategory(loader),
platform: formatLoader(formatMessage, loader),
version: instance.loader_version,
game_version: gameVersion,
},
@@ -7,7 +7,14 @@ import {
MonitorIcon,
WrenchIcon,
} from '@modrinth/assets'
import { Avatar, defineMessage, TabbedModal, type TabbedModalTab, useVIntl } from '@modrinth/ui'
import {
Avatar,
commonMessages,
defineMessage,
TabbedModal,
type TabbedModalTab,
useVIntl,
} from '@modrinth/ui'
import { convertFileSrc } from '@tauri-apps/api/core'
import { ref } from 'vue'
@@ -74,11 +81,6 @@ function show() {
}
defineExpose({ show })
const titleMessage = defineMessage({
id: 'instance.settings.title',
defaultMessage: 'Settings',
})
</script>
<template>
<ModalWrapper ref="modal">
@@ -90,7 +92,9 @@ const titleMessage = defineMessage({
:tint-by="props.instance.path"
/>
{{ instance.name }} <ChevronRightIcon />
<span class="font-extrabold text-contrast">{{ formatMessage(titleMessage) }}</span>
<span class="font-extrabold text-contrast">{{
formatMessage(commonMessages.settingsLabel)
}}</span>
</span>
</template>
@@ -33,7 +33,7 @@
"message": "إدارة الموارد"
},
"app.update-toast.body": {
"message": "تطبيق Modrinth الإصدار {version} جاهز للتثبيت! أعد التحميل لتحديث التطبيق الآن، أو سيتم التحديث تلقائيًا عند إغلاق تطبيق Modrinth."
"message": "تطبيق Modrinth الإصدار {version} جاهز للتثبيت!\nأعد التحميل لتحديث التطبيق الآن، أو سيتم التحديث تلقائيًا عند إغلاق تطبيق Modrinth."
},
"app.update-toast.body.download-complete": {
"message": "تطبيق Modrinth الإصدار {version} جاهز للتثبيت!\nأعد التحميل لتحديث التطبيق الآن، أو سيتم التحديث تلقائيًا عند إغلاق تطبيق Modrinth."
@@ -87,7 +87,7 @@
"message": "جار إضافة صديق"
},
"friends.add-friend.username.description": {
"message": "قد يختلف عن اسم المستخدم الخاص بهم في Minecraft!"
"message": "قد يختلف عن اسم المستخدم الخاص بهم في ماينكرافت!"
},
"friends.add-friend.username.placeholder": {
"message": "أدخل اسم مستخدم Modrinth..."
@@ -141,7 +141,7 @@
"message": "إضافة واللعب"
},
"instance.add-server.add-server": {
"message": "إضافة الخادم"
"message": "إضافة خادم"
},
"instance.add-server.resource-pack.disabled": {
"message": "معطَّل"
@@ -186,7 +186,7 @@
"message": "الاسم"
},
"instance.server-modal.placeholder-name": {
"message": "خادم ماين كرافت"
"message": "خادم ماينكرافت"
},
"instance.server-modal.resource-pack": {
"message": "حزمة الموارد"
@@ -279,7 +279,7 @@
"message": "مُغلِّف"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "أمر غلاف لتشغيل ماين كرافت."
"message": "أمر غلاف لتشغيل ماينكرافت."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "أدخل أمر الغلاف..."
@@ -288,7 +288,7 @@
"message": "تثبيت"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} لماين كرافت {game_version} مثبت بالفعل"
"message": "{platform} {version} لماينكرافت {game_version} مثبت بالفعل"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "فانيلا {game_version} مُثبّتة بالفعل"
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "أدخل العرض..."
},
"instance.settings.title": {
"message": "الإعدادات"
},
"instance.worlds.a_minecraft_server": {
"message": "خادم ماين كرافت"
},
@@ -33,10 +33,13 @@
"message": "Správa zdrojů"
},
"app.update-toast.body": {
"message": "Aplikace Modrinth v{version} je připravena k instalaci! Naninstalujte aktualizaci nyní nebo automaticky po zavření aplikace Modrinth."
"message": "Aplikace Modrinth v{version} je připravena k instalaci! Nainstalujte aktualizaci nyní nebo automaticky po zavření aplikace Modrinth."
},
"app.update-toast.body.download-complete": {
"message": "Stahování aplikace Modrinth v{version} bylo dokončeno. Naninstalujte aktualizaci nyní nebo automaticky po zavření aplikace Modrinth."
"message": "Stahování aplikace Modrinth v{version} bylo dokončeno. Nainstalujte aktualizaci nyní nebo automaticky po zavření aplikace Modrinth."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} je k dispozici. Aktualizujte pomocí svého správce balíčků, abyste získali nejnovější funkce a opravy!"
},
"app.update-toast.body.metered": {
"message": "Aplikace Modrinth v{version} je nyní k dispozici! Protože jste v měřené síti, nebyla stažena automaticky."
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Stahování ({size})"
},
"app.update-toast.download-page": {
"message": "Stáhnout"
},
"app.update-toast.downloading": {
"message": "Stahování..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Zadejte šířku..."
},
"instance.settings.title": {
"message": "Nastavení"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft Server"
},
@@ -261,7 +261,7 @@
"message": "Kørte efter spillet lukkes."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Indskriv post-exit kommando..."
"message": "Indtast post-exit kommando..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Pre-launch"
@@ -270,7 +270,7 @@
"message": "Kørt før en instance bliver kørt."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Indskriv pre-launch kommando..."
"message": "Indtast pre-launch kommando..."
},
"instance.settings.tabs.hooks.title": {
"message": "Spille lunch hooks"
@@ -282,7 +282,7 @@
"message": "Wrapper kommando for at køre Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Indskriv wrapper kommando..."
"message": "Indtast wrapper kommando..."
},
"instance.settings.tabs.installation": {
"message": "Installation"
@@ -459,7 +459,7 @@
"message": "Højden af spillevinduet når kørt."
},
"instance.settings.tabs.window.height.enter": {
"message": "Indskriv højde..."
"message": "Indtast højde..."
},
"instance.settings.tabs.window.width": {
"message": "Bredde"
@@ -468,10 +468,7 @@
"message": "Bredden på spille vinduet når kørt."
},
"instance.settings.tabs.window.width.enter": {
"message": "Indskriv bredde..."
},
"instance.settings.title": {
"message": "Indstillinger"
"message": "Indtast bredde..."
},
"instance.worlds.a_minecraft_server": {
"message": "En Minecraft server"
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} wurde heruntergeladen. Lade die App neu, oder schliesse sie, um zu aktualisieren."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} ist verfügbar. Benutze deinen Paketmanager zum aktualisieren um die neusten Features und Bugfixes zu erhalten!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} ist jetzt verfügbar! Da du in einem begrenzten Netzwerk bist, haben wir es nicht automatisch heruntergeladen."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Herunterladen ({size})"
},
"app.update-toast.download-page": {
"message": "Herunterladen"
},
"app.update-toast.downloading": {
"message": "Lade herunter..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Breite eingeben..."
},
"instance.settings.title": {
"message": "Einstellungen"
},
"instance.worlds.a_minecraft_server": {
"message": "Ä Minecraft-Server"
},
@@ -33,10 +33,13 @@
"message": "Ressourcenmanagement"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} ist bereit zur Installation! Jetzt neu laden, um zu aktualisieren, oder automatisch beim Schließen der Modrinth App."
"message": "Modrinth App v{version} ist bereit zur Installation! Neu laden, um jetzt zu aktualisieren, oder automatisch, wenn du die Modrinth App schließt."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} ist bereit zur Installation! Jetzt neu laden, um zu aktualisieren, oder automatisch beim Schließen der Modrinth App."
"message": "Modrinth App v{version} wurde heruntergeladen. Neu laden, um jetzt zu aktualisieren, oder automatisch, wenn du die Modrinth App schließt."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} ist verfügbar. Verwende deinen Paketmanager, um die neuesten Funktionen und Fehlerbehebungen zu installieren!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} ist jetzt verfügbar! Da du ein getaktetes Netzwerk nutzt, haben wir den Download nicht automatisch gestartet."
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Herunterladen ({size})"
},
"app.update-toast.download-page": {
"message": "Herunterladen"
},
"app.update-toast.downloading": {
"message": "Wird Heruntergeladen..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Breite eingeben..."
},
"instance.settings.title": {
"message": "Einstellungen"
},
"instance.worlds.a_minecraft_server": {
"message": "Ein Minecraft-Server"
},
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} has finished downloading. Reload to update now, or automatically when you close Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} is available. Use your package manager to update for the latest features and fixes!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} is available now! Since you're on a metered network, we didn't automatically download it."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Download ({size})"
},
"app.update-toast.download-page": {
"message": "Download"
},
"app.update-toast.downloading": {
"message": "Downloading..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Enter width..."
},
"instance.settings.title": {
"message": "Settings"
},
"instance.worlds.a_minecraft_server": {
"message": "A Minecraft Server"
},
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "La descarga de la Modrinth App v{version} ha finalizado. Actualiza ahora o automáticamente al cerrar la aplicación Modrinth."
},
"app.update-toast.body.linux": {
"message": "La aplicación Modrinth v{version} ya está disponible. ¡Utiliza tu gestor de paquetes para actualizarla y disfrutar de las últimas funciones y correcciones!"
},
"app.update-toast.body.metered": {
"message": "¡Modrinth App v{version} ya está disponible! Como estás en una red con límite de datos, no se descargó automáticamente."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Descargar ({size})"
},
"app.update-toast.download-page": {
"message": "Descargar"
},
"app.update-toast.downloading": {
"message": "Descargando..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Ingresa el ancho..."
},
"instance.settings.title": {
"message": "Configuración"
},
"instance.worlds.a_minecraft_server": {
"message": "Un servidor de Minecraft"
},
@@ -2,6 +2,9 @@
"app.auth-servers.unreachable.body": {
"message": "Los servidores de autenticación de Minecraft podrían estar inactivos. Comprueba tu conexión a internet e inténtalo más tarde."
},
"app.auth-servers.unreachable.header": {
"message": "No se puede conectar con los servidores de autenticación"
},
"app.settings.developer-mode-enabled": {
"message": "Modo desarrollador activado."
},
@@ -35,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "La descarga de la versión v{version} de Modrinth ha finalizado. Actualice ahora o automáticamente al cerrar la aplicación."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} está disponible. ¡Usa tu gestor de paquetes para actualizar a la última versión con nuevas funciones y correcciones!"
},
"app.update-toast.body.metered": {
"message": "¡La versión v{version} de Modrinth App ya está disponible! Como estás conectado a una red con límite de datos, no la hemos descargado automáticamente."
},
@@ -44,6 +50,9 @@
"app.update-toast.download": {
"message": "Descarga ({size})"
},
"app.update-toast.download-page": {
"message": "Descargar"
},
"app.update-toast.downloading": {
"message": "Descargando..."
},
@@ -467,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Introduzca el ancho..."
},
"instance.settings.title": {
"message": "Ajustes"
},
"instance.worlds.a_minecraft_server": {
"message": "Un Servidor de Minecraft"
},
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Syötä leveys..."
},
"instance.settings.title": {
"message": "Asetukset"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft palvelin"
},
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Tapos nang ma-download ang Modrinth App v{version}. Mag-reload upang ma-update ngayon, o awtomatiko sa pagsara ng Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Magagamit na ngayon ang Modrinth App v{version}. Gamitin ang iyong package manager upang i-update sa pinabagong tampok at pag-aayos!"
},
"app.update-toast.body.metered": {
"message": "Magagamit na ngayon ang Modrinth App v{version}! Hindi namin dinanload kaagad dahil naka-metro ang inyong network."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "I-download ({size})"
},
"app.update-toast.download-page": {
"message": "I-download"
},
"app.update-toast.downloading": {
"message": "Nagda-download..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Ilagay ang lapad..."
},
"instance.settings.title": {
"message": "Mga Setting"
},
"instance.worlds.a_minecraft_server": {
"message": "Isang Minecraft Server"
},
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Le téléchargement de Modrinth App v{version} est terminé ! Relancez l'application pour mettre à jour maintenant, ou automatiquement à la fermeture de Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Modrith App v{version} est disponible. Utilisez votre gestionnaire de paquets pour obtenir les changements de la mise à jour !"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} est disponible dès maintenant ! Lorsque vous êtes sur un réseau limité ou en données mobiles, nous ne téléchargerons pas les mises à jour automatiquement."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Télécharger ({size})"
},
"app.update-toast.download-page": {
"message": "Télécharger"
},
"app.update-toast.downloading": {
"message": "Téléchargement..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Entrer la largeur..."
},
"instance.settings.title": {
"message": "Paramètres"
},
"instance.worlds.a_minecraft_server": {
"message": "Un Serveur Minecraft"
},
@@ -23,6 +23,9 @@
"app.settings.tabs.java-installations": {
"message": "התקנות ג'אווה"
},
"app.settings.tabs.language": {
"message": "שפה"
},
"app.settings.tabs.privacy": {
"message": "פרטיות"
},
@@ -80,6 +83,9 @@
"friends.add-friend.title": {
"message": "מוסיף חבר"
},
"friends.add-friend.username.description": {
"message": "זה יכול להיות שונה מהמשתמש מיינקראפט שלהם!"
},
"friends.add-friend.username.placeholder": {
"message": "הכנס שם משתמש של Modrinth..."
},
@@ -461,9 +467,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "הכנס רוחב..."
},
"instance.settings.title": {
"message": "הגדרות"
},
"instance.worlds.a_minecraft_server": {
"message": "שרת מיינקראפט"
},
+22 -19
View File
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "A Modrinth App v{version} letöltése befejeződött. Frissítéshez indítsa újra az alkalmazást, vagy zárja be a Modrinth App alkalmazást, és a frissítés automatikusan megtörténik."
},
"app.update-toast.body.linux": {
"message": "A Modrinth alkalmazás v{version} elérhető. Használd a csomagkezelődet a legújabb funkciók és hibajavítások telepítéséhez!"
},
"app.update-toast.body.metered": {
"message": "A Modrinth App v{version} már elérhető! Mivel díjköteles hálózaton vagy, így nem töltöttük le automatikusan."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Letöltés ({size})"
},
"app.update-toast.download-page": {
"message": "Letöltés"
},
"app.update-toast.downloading": {
"message": "Letöltés..."
},
@@ -237,10 +243,10 @@
"message": "Új csoport létrehozása"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "A könyvtárgyűjtemények segítenek külön kategóriákba rendszerezni a profiljaidat."
"message": "A könyvtárgyűjtemények segítenek külön kategóriákba rendszerezni a profiljait."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Add meg a gyűjtemény nevét"
"message": "Adja meg a gyűjtemény nevét"
},
"instance.settings.tabs.general.name": {
"message": "Név"
@@ -273,7 +279,7 @@
"message": "Írjon be indítás előtti parancsokat..."
},
"instance.settings.tabs.hooks.title": {
"message": "Játék indítási parancsok"
"message": "Játék indítási horgok"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Indítóparancs"
@@ -288,7 +294,7 @@
"message": "Telepítés"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} már telepítve van ehhez: Minecraft {game_version}"
"message": "{platform} {version} a Minecraft {game_version} verziójához már telepítve van"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "A vanilla {game_version} már telepítve van"
@@ -333,40 +339,40 @@
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Nem lehetséges a csatolt modcsomag részleteit lekérdezni. Kérlek nézd meg az internetkapcsolatod."
"message": "Nem lehetséges a csatolt modpack részleteit lekérdezni. Kérlek nézd meg az internetkapcsolatod."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} nem elérhető a Minecraft {version} verziójához. Próbálj meg egy másik modbetöltőt."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "A profilod linkelve van egy Modrinth modcsomaghoz, de a modcsomag nem található online."
"message": "A profilod linkelve van egy Modrinth modcsomaghoz, de a modcsomag nem található Modrinth-on."
},
"instance.settings.tabs.installation.platform": {
"message": "Platform"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Modcsomag újratelepítése"
"message": "Modpack újratelepítése"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Modcsomag újratelepítése"
"message": "Modpack újratelepítése"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Az újratelepítés visszaállítja az összes telepített vagy módosított tartalmat a modcsomag által biztosított állapotra, eltávolítva az eredeti telepítéshez hozzáadott modokat vagy tartalmakat. Ez megoldhatja a váratlan hibákat, de fontos tudni hogyha használsz világokat amelyekben utólagosan hozzáadott tartalom van, azok a világok korruptálódhatnak."
"message": "Az újratelepítés visszaállítja az összes telepített vagy módosított tartalmat a modcsomag által biztosított állapotra, eltávolítva az eredeti telepítéshez hozzáadott modokat vagy tartalmakat. Ez megoldhatja a váratlan hibákat, de fontos tudni hogyha használsz világokat amelyekben utólagosan hozzáadott tartalom van, azok a világok elromolhatnak."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Biztosan szeretnéd újratelepíteni ezt a profilt?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Visszaállítja a profilod tartalmát az eredeti állapotába, eltávolítva az eredeti modcsomaghoz hozzáadott összes modot és tartalmat."
"message": "Visszaállítja a profilod tartalmát az eredeti állapotába, eltávolítva az eredeti modpackhez hozzáadott összes modot és tartalmat."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Modcsomag újratelepítése"
"message": "Modpack újratelepítése"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Javítás"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Javítás"
"message": "Javítás folyamatban"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "A javítás újratelepíti a Minecraft alapját és ellenőrzi, hogy nincs-e sérülés. Ez megoldhatja a problémákat, ha a játék nem az indítóval kapcsolatos hibák miatt nem indul el, de nem oldja meg a telepített modokkal kapcsolatos problémákat vagy összeomlásokat."
@@ -396,13 +402,13 @@
"message": "javítás"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Nem lehet {action} telepítés közben"
"message": "Nem lehet {action}-t végrehajtani telepítés közben"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Offline állapotban nem lehet {action} végrehajtani"
"message": "Offline állapotban nem lehet {action}-t végrehajtani"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Nem lehet {action} javítás közben"
"message": "Nem lehet {action}-t végrehajtani javítás közben"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(ismeretlen verzió)"
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Szélesség megadása..."
},
"instance.settings.title": {
"message": "Beállítások"
},
"instance.worlds.a_minecraft_server": {
"message": "Egy Minecraft szerver"
},
@@ -513,7 +516,7 @@
"message": "Szerver"
},
"instance.worlds.type.singleplayer": {
"message": "Egyjátékos"
"message": "Egyjátékosmód"
},
"instance.worlds.view_instance": {
"message": "Profil megtekintése"
+23 -20
View File
@@ -38,15 +38,21 @@
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} telah selesai mengunduh. Muat ulang untuk memperbarui sekarang, atau secara otomatis saat Anda menutup Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} tersedia. Gunakan pengelola paket Anda untuk memperbarui dan mendapatkan fitur-fitur dan perbaikan terbaru!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} sudah tersedia! Karena Anda saat ini sedang berada dalam jaringan terukur, kami tidak mengunduhnya secara otomatis."
},
"app.update-toast.changelog": {
"message": "Log perubahan"
"message": "Catatan perubahan"
},
"app.update-toast.download": {
"message": "Unduh ({size})"
},
"app.update-toast.download-page": {
"message": "Unduh"
},
"app.update-toast.downloading": {
"message": "Mengunduh..."
},
@@ -60,7 +66,7 @@
"message": "Selesai mengunduh"
},
"app.update.complete-toast.text": {
"message": "Klik di sini untuk melihat log perubahan."
"message": "Klik di sini untuk melihat catatan perubahan."
},
"app.update.complete-toast.title": {
"message": "Versi {version} berhasil dipasang!"
@@ -216,7 +222,7 @@
"message": "Gandakan wujud"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Membuat salinan dari wujud ini, termasuk dunia, konfig, modifikasi, dsb."
"message": "Membuat salinan dari wujud ini, termasuk dunia, konfigurasi, mod, dsb."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Sunting ikon"
@@ -303,7 +309,7 @@
"message": "Memasang"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Memperoleh versi paket modifikasi"
"message": "Memperoleh versi paket mod"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Memasang versi baru"
@@ -315,7 +321,7 @@
"message": "Informasi awakutu:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Memperoleh perincian paket modifikasi"
"message": "Memperoleh perincian paket mod"
},
"instance.settings.tabs.installation.game-version": {
"message": "Versi permainan"
@@ -333,34 +339,34 @@
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Tidak dapat memperoleh perincian paket modifikasi terkait. Mohon periksa sambungan internet Anda."
"message": "Tidak dapat memperoleh perincian paket mod terkait. Mohon periksa sambungan internet Anda."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} tidak tersedia untuk Minecraft {version}. Mohon coba peluncur modifikasi yang lain."
"message": "{loader} tidak tersedia untuk Minecraft {version}. Mohon coba peluncur mod yang lain."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Wujud ini berkaitan dengan paket modifikasi, tetapi paket modifikasi tersebut tidak dapat ditemukan pada Modrinth."
"message": "Wujud ini berkaitan dengan paket mod, tetapi paket mod tersebut tidak dapat ditemukan pada Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Platform"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Pasang ulang paket modifikasi"
"message": "Pasang ulang paket mod"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Memasang ulang paket modifikasi"
"message": "Memasang ulang paket mod"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Memasang ulang akan mengatur ulang semua konten yang terpasang atau termodifikasi pada apa yang telah disediakan oleh paket modifikasi, menghapus modifikasi atau konten apa pun yang telah Anda tambahkan di atas pemasangan awal. Hal ini dapat memperbaiki perilaku tidak terduga bila ada perubahan pada wujud, tetapi bila dunia Anda sekarang bergantung pada konten terpasang tambahan, hal ini dapat merusak dunia yang ada."
"message": "Memasang ulang akan mengatur ulang semua konten yang terpasang atau termodifikasi pada apa yang telah disediakan oleh paket mod, menghapus mod atau konten apa pun yang telah Anda tambahkan di atas pemasangan awal. Hal ini dapat memperbaiki perilaku tidak terduga bila ada perubahan pada wujud, tetapi bila dunia Anda sekarang bergantung pada konten terpasang tambahan, hal ini dapat merusak dunia yang ada."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Apakah Anda yakin ingin memasang ulang wujud ini?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Mengatur ulang konten wujud menjadi keadaan awal, menghapus modifikasi atau konten apa pun yang telah Anda tambahkan di atas pemasangan awal."
"message": "Mengatur ulang konten wujud menjadi keadaan awal, menghapus mod atau konten apa pun yang telah Anda tambahkan di atas pemasangan awal."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Pasang ulang paket modifikasi"
"message": "Pasang ulang paket mod"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Perbaiki"
@@ -369,7 +375,7 @@
"message": "Memperbaiki"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Memperbaiki akan memasangkan ulang pustaka dependen dan memeriksa kerusakan. Ini dapat memecahkan masalah bila permainan Anda tidak memulai sebab kesalahan pada peluncur, tetapi tidak akan memecahkan masalah atau kemogokan yang disebabkan oleh modifikasi terpasang."
"message": "Memperbaiki akan memasangkan ulang pustaka dependen dan memeriksa kerusakan. Ini dapat memecahkan masalah bila permainan Anda tidak memulai sebab kesalahan pada peluncur, tetapi tidak akan memecahkan masalah atau kemogokan yang disebabkan oleh mod terpasang."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Perbaiki wujud?"
@@ -411,16 +417,16 @@
"message": "Lepas kaitan wujud"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Bila Anda melanjutkan, Anda tidak akan dapat mengaitkannya lagi tanpa membuat wujud baru. Anda tidak akan mendapatkan pembaruan paket modifikasi dan menjadi wujud normal."
"message": "Bila Anda melanjutkan, Anda tidak akan dapat mengaitkannya lagi tanpa membuat wujud baru. Anda tidak akan mendapatkan pembaruan paket mod dan menjadi wujud normal."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Apakah Anda yakin ingin melepas kaitan wujud ini?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Wujud ini berkaitan dengan paket modifikasi, yang berarti modifikasi tidak dapat diperbarui dan Anda tidak dapat mengubah versi peluncur modifikasi atau Minecraft. Melepas kaitan akan memutuskan wujud ini dari paket modifikasi secara permanen."
"message": "Wujud ini berkaitan dengan paket mod, yang berarti mod tidak dapat diperbarui dan Anda tidak dapat mengubah versi peluncur mod atau Minecraft. Melepas kaitan akan memutuskan wujud ini dari paket mod secara permanen."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Lepas kaitan dari paket modifikasi"
"message": "Lepas kaitan dari paket mod"
},
"instance.settings.tabs.java": {
"message": "Java dan memori"
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Masukkan lebar..."
},
"instance.settings.title": {
"message": "Pengaturan"
},
"instance.worlds.a_minecraft_server": {
"message": "Server Minecraft"
},
+12 -9
View File
@@ -15,10 +15,10 @@
"message": "Aspetto"
},
"app.settings.tabs.default-instance-options": {
"message": "Opzioni istanza predefinite"
"message": "Opzioni d'istanza predefinite"
},
"app.settings.tabs.feature-flags": {
"message": "Flag delle funzionalità"
"message": "Flag di funzionalità"
},
"app.settings.tabs.java-installations": {
"message": "Installazioni Java"
@@ -30,13 +30,16 @@
"message": "Privacy"
},
"app.settings.tabs.resource-management": {
"message": "Gestione risorse"
"message": "Gestione delle risorse"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} è pronta per essere installata! Ricarica per aggiornare ora, o avverrà in automatico alla chiusura di Modrinth App."
"message": "Modrinth App v{version} è pronta per essere installata! Ricarica per aggiornare ora, o avverrà in automatico alla chiusura dell'app."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} è stata scaricata. Ricarica per aggiornare ora, o avverrà in automatico alla chiusura di Modrinth App."
"message": "Modrinth App v{version} è stata scaricata. Ricarica per aggiornare ora, o avverrà in automatico alla chiusura dell'app."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} è disponibile. Usa il tuo gestore di pacchetti per aggiornare e ricevere le novità più recenti!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} è ora disponibile! Poiché sei su una rete a consumo, non l''abbiamo scaricata automaticamente."
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Scarica ({size})"
},
"app.update-toast.download-page": {
"message": "Scarica"
},
"app.update-toast.downloading": {
"message": "Scaricando..."
},
@@ -60,7 +66,7 @@
"message": "Download completato"
},
"app.update.complete-toast.text": {
"message": "Clicca qui per leggere le ultime novità in inglese."
"message": "Consulta qui le ultime novità in inglese."
},
"app.update.complete-toast.title": {
"message": "La versione {version} è stata installata con successo!"
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Inserisci larghezza..."
},
"instance.settings.title": {
"message": "Impostazioni"
},
"instance.worlds.a_minecraft_server": {
"message": "Un server Minecraft"
},
+8 -11
View File
@@ -12,7 +12,7 @@
"message": "v{version}をダウンロード中"
},
"app.settings.tabs.appearance": {
"message": "外観"
"message": "表示設定"
},
"app.settings.tabs.default-instance-options": {
"message": "インスタンスの基本設定"
@@ -21,25 +21,25 @@
"message": "機能設定"
},
"app.settings.tabs.java-installations": {
"message": "Javaのインストール"
"message": "Javaのインストール設定"
},
"app.settings.tabs.language": {
"message": "言語"
},
"app.settings.tabs.privacy": {
"message": "プライバシー"
"message": "プライバシー設定"
},
"app.settings.tabs.resource-management": {
"message": "リソース管理"
},
"app.update-toast.body": {
"message": "Modrinth App v{version}は今すぐインストールできます!再起動して今すぐ更新するか、アプリを閉じた際に自動で更新されます。"
"message": "Modrinth App v{version}インストールの準備ができました。再起動して今すぐ更新するか、アプリを閉じた際に自動で更新されます。"
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version}のダウンロードが完了しました。再起動して今すぐ更新するか、アプリを閉じた際に自動で更新されます。"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version}は今すぐダウンロードできます従量課金制ネットワークを使用しているため自動ダウンロードはされていません。"
"message": "Modrinth App v{version}は今すぐダウンロードできます従量課金制ネットワークを使用しているため自動ダウンロードはされていません。"
},
"app.update-toast.changelog": {
"message": "更新履歴"
@@ -54,7 +54,7 @@
"message": "再起動"
},
"app.update-toast.title": {
"message": "アップデートが可能"
"message": "アップデートが利用可能です"
},
"app.update-toast.title.download-complete": {
"message": "ダウンロード完了"
@@ -63,7 +63,7 @@
"message": "クリックすると更新履歴を表示できます。"
},
"app.update.complete-toast.title": {
"message": "バージョン {version} インストールが正常に完了しました!"
"message": "バージョン {version} が正常にインストールされました!"
},
"app.update.download-update": {
"message": "アップデートをダウンロード"
@@ -93,7 +93,7 @@
"message": "Modrinthユーザーネームを入力..."
},
"friends.add-friend.username.title": {
"message": "あなたのフレンドのModrinthユーザーネームは何ですか?"
"message": "あなたのフレンドのModrinthユーザーは何ですか?"
},
"friends.add-friends-to-share": {
"message": "<link>友達を追加</link>して、彼らが何をしているか見てみよう!"
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "幅を入力…"
},
"instance.settings.title": {
"message": "設定"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraftサーバー"
},
+17 -17
View File
@@ -9,13 +9,13 @@
"message": "개발자 모드가 활성화되었습니다."
},
"app.settings.downloading": {
"message": "버전 다운로드 중: v{version}"
"message": "v{version} 다운로드 중"
},
"app.settings.tabs.appearance": {
"message": "모양"
},
"app.settings.tabs.default-instance-options": {
"message": "인스턴스 기본 옵션"
"message": "기본 인스턴스 옵션"
},
"app.settings.tabs.feature-flags": {
"message": "기능 플래그"
@@ -27,19 +27,22 @@
"message": "언어"
},
"app.settings.tabs.privacy": {
"message": "개인정보 보호"
"message": "개인정보"
},
"app.settings.tabs.resource-management": {
"message": "리소스 관리"
},
"app.update-toast.body": {
"message": "Modrinth App v{version}을 설치할 준비가 완료되었습니다! 새로고침하거나 Modrinth App을 종료하면 자동으로 업데이트니다."
"message": "Modrinth App v{version}을 설치할 준비가 완료되었습니다! 새로고침하거나 Modrinth App을 종료하면 자동으로 업데이트니다."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} 다운로드가 완료되었습니다. 새로고침하거나 Modrinth App을 종료하면 자동으로 업데이트니다."
"message": "Modrinth App v{version} 다운로드가 완료되었습니다. 새로고침하거나 Modrinth App을 종료하면 자동으로 업데이트니다."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} 버전을 사용할 수 있습니다. 최신 기능과 오류 수정을 적용하려면 패키지 관리자를 통해 업데이트하세요!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} 지금 이용 가능합니다! 종량제 네트워크에 있기 때문에, 자동으로 다운로드하지 않았습니다."
"message": "Modrinth App v{version} 지금 사용할 수 있습니다! 데이터 통신 연결을 사용 중이므로, 자동으로 다운로드하지 않았습니다."
},
"app.update-toast.changelog": {
"message": "변경 내역"
@@ -78,7 +81,7 @@
"message": "친구 추가"
},
"friends.action.view-friend-requests": {
"message": "{count} 친구 요청 {count, plural, one {건의} other {건의}}"
"message": "{count} 친구 요청 {count, plural, one {요청} other {요청}}"
},
"friends.add-friend.submit": {
"message": "친구 요청 보내기"
@@ -129,13 +132,13 @@
"message": "\"{query}\"와 일치하는 친구가 없습니다"
},
"friends.search-friends-placeholder": {
"message": "친구 찾는 중..."
"message": "친구 검색 중..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "친구를 추가하고 무엇을 하는지 보려면 <link>Modrinth 계정 로그인</link>하세요!"
"message": "<link>Modrinth 계정으로 로그인</link>하여 친구를 추가하고 무엇을 플레이 중인지 확인하세요!"
},
"instance.add-server.add-and-play": {
"message": "추가 후 플레이"
@@ -237,7 +240,7 @@
"message": "새 그룹 만들기"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "라이브러리 그룹을 사용하면 라이브러리 내에서 인스턴스를 서로 다른 섹션으로 구성할 수 있습니다."
"message": "라이브러리 그룹을 사용하면 인스턴스를 라이브러리 내 여러 섹션으로 나눠서 정리할 수 있습니다."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "그룹 이름 입력"
@@ -252,7 +255,7 @@
"message": "사용자 지정 실행 후크"
},
"instance.settings.tabs.hooks.description": {
"message": "후크 기능을 사용하면 고급 사용자가 게임 실행하기 전후에 특정 시스템 명령을 실행할 수 있습니다."
"message": "후크 기능을 사용하면 고급 사용자가 게임 실행 전후에 특정 시스템 명령을 실행할 수 있습니다."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "종료 후"
@@ -339,7 +342,7 @@
"message": "{loader}(은)는 Minecraft {version}에서 사용할 수 없습니다. 다른 모드 로더를 사용하세요."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "이 인스턴스 모드팩 연결되어 있지만, 모드팩을 Modrinth에서 찾을 수 없습니다."
"message": "이 인스턴스 모드팩 연결되어 있지만, Modrinth에서 모드팩을 찾을 수 없습니다."
},
"instance.settings.tabs.installation.platform": {
"message": "플랫폼"
@@ -470,9 +473,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "너비 입력..."
},
"instance.settings.title": {
"message": "설정"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft 서버"
},
@@ -501,10 +501,10 @@
"message": "서버가 응답하지 않음"
},
"instance.worlds.no_server_quick_play": {
"message": "Minecraft 알파 1.0.5 이후 버전에서만 서버에 바로 진입할 수 있습니다."
"message": "Minecraft 알파 1.0.5 이후 버전에서만 서버에 바로 진입할 수 있습니다"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Minecraft 1.20 이후 버전에서만 싱글플레이 세계로 바로 진입할 수 있습니다."
"message": "Minecraft 1.20 이후 버전에서만 싱글플레이 세계로 바로 진입할 수 있습니다"
},
"instance.worlds.play_instance": {
"message": "인스턴스 플레이"
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} sudah selesai dipasang! Muat semula untuk kemas kini sekarang, atau kemas kini secara automatik apabila anda menutup Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} tersedia. Gunakan pengurus pakej anda untuk mengemas kini dan mendapatkan ciri-ciri dan pembetulan terkini!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} kini tersedia! Memandangkan anda sedang menggunakan rangkaian bermeter, kami tidak memuat turunnya secara automatik."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Muat turun ({size})"
},
"app.update-toast.download-page": {
"message": "Muat turun"
},
"app.update-toast.downloading": {
"message": "Sedang memuat turun..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Masukkan lebar..."
},
"instance.settings.title": {
"message": "Tetapan"
},
"instance.worlds.a_minecraft_server": {
"message": "Pelayan Minecraft"
},
@@ -1,6 +1,6 @@
{
"app.auth-servers.unreachable.body": {
"message": "Minecraft verificatie servers zijn misschien offline. Check je internetverbinding en probeer opnieuw later."
"message": "Minecraft verificatie servers zijn mogelijk offline. Check je internetverbinding en probeer opnieuw later."
},
"app.auth-servers.unreachable.header": {
"message": "Authenticatieservers kunnen niet worden bereikt"
@@ -42,7 +42,7 @@
"message": "Modrinth App v{version} is nu beschikbaar! Omdat je nu op een netwerk met datalimiet zit, is de download niet automatisch gestart."
},
"app.update-toast.changelog": {
"message": "Changelog"
"message": "Wijzigingenlogboek"
},
"app.update-toast.download": {
"message": "Download ({size})"
@@ -60,7 +60,7 @@
"message": "Downloaden voltooid"
},
"app.update.complete-toast.text": {
"message": "Klik hier om de changelog te bekijken."
"message": "Klik hier om het wijzigingenlogboek te bekijken."
},
"app.update.complete-toast.title": {
"message": "Versie {version} is succesvol geïnstalleerd!"
@@ -201,7 +201,7 @@
"message": "Verwijder instantie"
},
"instance.settings.tabs.general.delete.description": {
"message": "Verwijdert permanent een instantie van je apparaat, inclusief je werelden, instellingen en alle geïnstalleerde inhoud. Wees voorzichtig, want zodra je een instantie verwijdert, is het niet meer mogelijk om deze te herstellen."
"message": "Verwijdert permanent een instantie van je apparaat, inclusief je werelden, instellingen en alle geïnstalleerde inhoud. Wees voorzichtig, zodra je een instantie verwijdert, is het niet meer mogelijk om deze te herstellen."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Verwijderen..."
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Voer breedte in..."
},
"instance.settings.title": {
"message": "Instellingen"
},
"instance.worlds.a_minecraft_server": {
"message": "Een Minecraft server"
},
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Angi bredde..."
},
"instance.settings.title": {
"message": "Instillinger"
},
"instance.worlds.a_minecraft_server": {
"message": "En Minecraft server"
},
@@ -33,11 +33,14 @@
"message": "Zarządzanie zasobami"
},
"app.update-toast.body": {
"message": "Wersja Modrinth App v{version} jest gotowa do pobrania! Odśwież, żeby zaktualizować teraz, albo automatycznie, gdy zamkniesz Modrinth App."
"message": "Wersja Modrinth App v{version} jest gotowa do zainstalowania! Odśwież, żeby zaktualizować teraz, albo automatycznie, gdy zamkniesz Modrinth App."
},
"app.update-toast.body.download-complete": {
"message": "Wersja Modrinth App v{version} została pobrana. Odśwież, żeby zaktualizować teraz, albo automatycznie, gdy zamkniesz Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} jest dostępna. Użyj menedżera pakietów, aby zaktualizować i uzyskać najnowsze funkcje i poprawki!"
},
"app.update-toast.body.metered": {
"message": "Wersja v{version} Modrinth App jest dostępna! Skoro korzystasz z sieci taryfowej, nie pobraliśmy jej automatycznie."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Pobierz ({size})"
},
"app.update-toast.download-page": {
"message": "Pobierz"
},
"app.update-toast.downloading": {
"message": "Pobieranie..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Wprowadź szerokość..."
},
"instance.settings.title": {
"message": "Ustawienia"
},
"instance.worlds.a_minecraft_server": {
"message": "Serwer Minecraft"
},
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "O Modrinth App v{version} baixado. Recarregue para atualizar agora ou a atualização será aplicada automaticamente ao fechar o Modrinth App."
},
"app.update-toast.body.linux": {
"message": "O Modrinth App v{version} está disponível. Use seu gerenciador de pacotes para atualizar e obter os recursos e correções mais recentes!"
},
"app.update-toast.body.metered": {
"message": "O Modrinth App v{version} já está disponível! Como você está em uma rede limitada, não o baixamos automaticamente."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Baixar ({size})"
},
"app.update-toast.download-page": {
"message": "Baixar"
},
"app.update-toast.downloading": {
"message": "Baixando..."
},
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Insira a largura..."
},
"instance.settings.title": {
"message": "Configurações"
},
"instance.worlds.a_minecraft_server": {
"message": "Servidor de Minecraft"
},
@@ -384,7 +384,7 @@
"message": "Mostrar todas as versões"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "alterar versão"
"message": "Alterar versão"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "instalar"
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Inserir largura..."
},
"instance.settings.title": {
"message": "Definições"
},
"instance.worlds.a_minecraft_server": {
"message": "Um Servidor de Minecraft"
},
@@ -464,9 +464,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Introdu lățimea..."
},
"instance.settings.title": {
"message": "Setări"
},
"instance.worlds.a_minecraft_server": {
"message": "Un server de Minecraft"
},
@@ -498,10 +495,10 @@
"message": "Poți să intri direct pe servere doar pe Minecraft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Poți să intri direct în lumile singleplayer numai pe Minecraft 1.20+"
"message": "Poți să intri direct în lumile de jucător simplu numai pe Minecraft 1.20+"
},
"instance.worlds.play_instance": {
"message": "Joacă instanța"
"message": "Joacă pe instanța"
},
"instance.worlds.type.server": {
"message": "Server"
+14 -11
View File
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Скачивание версии Modrinth App {version} завершено. Перезапустите приложение, чтобы обновить его, или оно обновится автоматически после закрытия."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} доступен. Обновите приложение, с помощью менеджера пакетов, для получения последних исправлений и улучшений!"
},
"app.update-toast.body.metered": {
"message": "Версия Modrinth App {version} доступна для скачивания! Используется сеть с лимитным тарифным планом, поэтому скачивание не началось автоматически."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Скачать ({size})"
},
"app.update-toast.download-page": {
"message": "Скачать"
},
"app.update-toast.downloading": {
"message": "Скачивание..."
},
@@ -90,7 +96,7 @@
"message": "Оно может быть не таким, как в Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "Введите имя на Modrinth..."
"message": "Введите имя с Modrinth..."
},
"friends.add-friend.username.title": {
"message": "Какое имя у друга на Modrinth?"
@@ -249,19 +255,19 @@
"message": "Команды запуска"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Изменение команд запуска"
"message": "Переопределение команд запуска"
},
"instance.settings.tabs.hooks.description": {
"message": "Позволяет опытным пользователям задать системные команды, выполняемые до и после запуска игры."
"message": "Позволяет опытным пользователям задать системные команды, выполняемые до и после запуска игры."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "После выхода"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Выполняется после выхода из игры."
"message": "Выполняется после выхода из игры."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Команда после закрытия..."
"message": "Введите команду после выхода..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Перед запуском"
@@ -420,7 +426,7 @@
"message": "Установленное содержимое связано со сборкой на Modrinth, что блокирует возможность менять версии игры, модов или загрузчик. Нажатие на кнопку ниже необратимо разрушит эту связь."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Отвязка из мод-пака"
"message": "Отвязка сборки"
},
"instance.settings.tabs.java": {
"message": "Java и память"
@@ -444,7 +450,7 @@
"message": "Окно"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Изменение настроек окна"
"message": "Переопределение настроек окна"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Полноэкранный режим"
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Введите ширину..."
},
"instance.settings.title": {
"message": "Настройки"
},
"instance.worlds.a_minecraft_server": {
"message": "Сервер Minecraft"
},
@@ -498,7 +501,7 @@
"message": "Сервер несовместим"
},
"instance.worlds.no_contact": {
"message": "Не удалось связаться с сервером"
"message": "Не удалось связаться с сервером"
},
"instance.worlds.no_server_quick_play": {
"message": "Подключаться к серверам напрямую можно только в Minecraft Alpha 1.0.5 и выше"
+18 -15
View File
@@ -21,7 +21,7 @@
"message": "Funktionsflaggor"
},
"app.settings.tabs.java-installations": {
"message": "Java installationer"
"message": "Java-installationer"
},
"app.settings.tabs.language": {
"message": "Språk"
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} har laddats ner. Ladda om för att uppdatera nu, eller automatiskt när du stänger Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} är tillgänglig. Använd din pakethanterare för att uppdatera och få tillgång till de senaste funktionerna och buggfixarna!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} är nu tillgänglig! Eftersom du använder ett nätverk med datatrafikbegränsningar har vi inte laddat ner det automatiskt."
},
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Ladda ner ({size})"
},
"app.update-toast.download-page": {
"message": "Ladda ner"
},
"app.update-toast.downloading": {
"message": "Laddar ner..."
},
@@ -303,7 +309,7 @@
"message": "Installerar"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Hämtar modpack versioner"
"message": "Hämtar modpack-versioner"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Installerar ny version"
@@ -315,10 +321,10 @@
"message": "Felsökningsinformation:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Hämtar modpack detaljer"
"message": "Hämtar modpack-detaljer"
},
"instance.settings.tabs.installation.game-version": {
"message": "Spel version"
"message": "Spelversion"
},
"instance.settings.tabs.installation.install": {
"message": "Installera"
@@ -333,10 +339,10 @@
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Kan inte hämta länkade modpack detaljer. Vänligen kolla din internetanslutning."
"message": "Kan inte hämta länkade modpack-detaljer. Vänligen kontrollera din internetanslutning."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} är inte tillgänglig för Minecraft {version}. Prova en annan mod laddare."
"message": "{loader} är inte tillgänglig för Minecraft {version}. Prova en annan modloader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Denna instans är länkad till ett modpack, men modpacket kunde inte hittas på Modrinth."
@@ -351,7 +357,7 @@
"message": "Ominstallerar modpack"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Ominstallation kommer att återställa allt installerat eller modifierat innehåll till det som tillhandahålls av modpacket, och ta bort eventuella mods eller innehåll som du har lagt till ovanpå den ursprungliga installationen. Detta kan åtgärda oväntat beteende om ändringar har gjorts i instansen, men om dina världar nu är beroende av ytterligare installerat innehåll kan det skada befintliga världar."
"message": "Ominstallation kommer att återställa allt installerat eller modifierat innehåll till det som tillhandahålls av modpacket och ta bort eventuella mods eller innehåll som du har lagt till ovanpå den ursprungliga installationen. Detta kan åtgärda oväntat beteende om ändringar har gjorts i instansen, men om dina världar nu är beroende av ytterligare installerat innehåll kan det skada befintliga världar."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Är du säker att du vill ominstallera denna instans?"
@@ -417,7 +423,7 @@
"message": "Är du säker att du vill ta bort koppling till denna instans?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Denna instans är kopplad till ett modpack, vilket menas att mods kan inte bli uppdaterade och du kan inte ändra mod-loader eller Minecraft version. Att ta bort kopplingen kommer permanent att koppla bort denna instans från modpacket."
"message": "Denna instans är kopplad till ett modpack, vilket innebär att mods inte kan uppdateras och mod-loader eller Minecraft version inte kan ändras. Att ta bort kopplingen kommer permanent att koppla bort denna instans från modpacket."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Ta bort koppling från modpack"
@@ -429,13 +435,13 @@
"message": "Miljövariabler"
},
"instance.settings.tabs.java.hooks": {
"message": "Krokar"
"message": "Hooks"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java argument"
"message": "Java-argument"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java installation"
"message": "Java-installation"
},
"instance.settings.tabs.java.java-memory": {
"message": "Tilldelat minne"
@@ -444,7 +450,7 @@
"message": "Fönster"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Egendefinierade fönsterinställningar"
"message": "Anpassade fönsterinställningar"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Helskärm"
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Ange bredd..."
},
"instance.settings.title": {
"message": "Inställningar"
},
"instance.worlds.a_minecraft_server": {
"message": "En Minecraft Server"
},
@@ -1,6 +1,6 @@
{
"app.auth-servers.unreachable.body": {
"message": "Minecraft doğrulama sunucuları çökmüş olabilir. İnternet bağlantını kontrol et ve daha sonra tekrar dene."
"message": "Minecraft doğrulama sunucuları kapalı olabilir. İnternet bağlantını kontrol et ve daha sonra tekrar dene."
},
"app.auth-servers.unreachable.header": {
"message": "Doğrulama sunucularına erişilemedi"
@@ -84,7 +84,7 @@
"message": "Arkadaşlık isteği gönder"
},
"friends.add-friend.title": {
"message": "Bir arkadaş ekleme"
"message": "Arkadaş ekleme"
},
"friends.add-friend.username.description": {
"message": "Minecraft kullanıcı adlarından farklı olabilir!"
@@ -246,13 +246,13 @@
"message": "Ad"
},
"instance.settings.tabs.hooks": {
"message": "Başlatma bağları"
"message": "Başlatma kancaları"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Özel başlantı bağları"
"message": "Özel başlatma kancası"
},
"instance.settings.tabs.hooks.description": {
"message": "Bağlar kullanıcılara oyunu başlatmadan önce veya başlattıktan sonra sistem komutları çalıştırmalarını sağlar."
"message": "Kancalar gelişmiş kullanıcıların oyunu başlattıktan önce ve sonra belirli sistem komutları çalıştırmasını sağlar."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Çıkış-sonrası"
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Genişlik gir..."
},
"instance.settings.title": {
"message": "Ayarlar"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft Sunucusu"
},
+15 -12
View File
@@ -1,6 +1,6 @@
{
"app.auth-servers.unreachable.body": {
"message": "Сервери автентифікації Minecraft можуть зараз не працювати. Перевірте з’єднання з Інтернетом та спробуйте пізніше."
"message": "Сервери автентифікації Minecraft можуть зараз не працювати. Перевірте з’єднання з інтернетом та спробуйте пізніше."
},
"app.auth-servers.unreachable.header": {
"message": "Не вдається зв’язатися зі серверами автентифікації"
@@ -9,7 +9,7 @@
"message": "Увімкнено режим розробника."
},
"app.settings.downloading": {
"message": "Завантаження версії {version}"
"message": "Завантаження v{version}"
},
"app.settings.tabs.appearance": {
"message": "Вигляд"
@@ -33,10 +33,13 @@
"message": "Керування ресурсами"
},
"app.update-toast.body": {
"message": "Версія {version} Modrinth App готова до встановлення! Перезапустіть, щоб оновити зараз, або дозвольте оновитися автоматично, коли закриватимете Modrinth App."
"message": "Modrinth App v{version} готовий до встановлення! Перезапустіть, щоб оновити зараз. Або, оновлення буде здійснено автоматично, коли закриєте Modrinth App."
},
"app.update-toast.body.download-complete": {
"message": "Версія {version} Modrinth App уже завантажилася. Перезапустіть, щоб оновити зараз, або дозвольте оновитися автоматично, коли закриватимете Modrinth App."
"message": "Modrinth App v{version} завантажено. Перезапустіть зараз, щоб оновити застосунок, або оновлення відбудеться автоматично після закриття Modrinth App."
},
"app.update-toast.body.linux": {
"message": "Доступна версія Modrinth App {version}. Скористайтеся вашим менеджером пакетів, щоб отримати найновіші функції та виправлення!"
},
"app.update-toast.body.metered": {
"message": "Версія {version} Modrinth App доступна для завантаження! Оскільки ви на лімітному з’єднанні, ми не завантажили її автоматично."
@@ -47,6 +50,9 @@
"app.update-toast.download": {
"message": "Завантажити ({size})"
},
"app.update-toast.download-page": {
"message": "Завантажити"
},
"app.update-toast.downloading": {
"message": "Завантаження…"
},
@@ -60,7 +66,7 @@
"message": "Завантаження завершено"
},
"app.update.complete-toast.text": {
"message": "Натисніть тут, щоб побачити журнал змін."
"message": "Натисніть тут, щоб переглянути журнал змін."
},
"app.update.complete-toast.title": {
"message": "Версію {version} успішно встановлено!"
@@ -72,7 +78,7 @@
"message": "Завантаження оновлення ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Перезавантажте, аби встановити оновлення"
"message": "Перезапустіть, аби встановити оновлення"
},
"friends.action.add-friend": {
"message": "Додати друга"
@@ -276,7 +282,7 @@
"message": "Гуки запуску гри"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Під час гри"
"message": "Враппер"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Обгортальна команда для запуску Minecraft."
@@ -285,10 +291,10 @@
"message": "Уведіть обгортальну команду…"
},
"instance.settings.tabs.installation": {
"message": "Установлення"
"message": "Інсталяція"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} для Minecraft {game_version} вже встановлена"
"message": "{platform} {version} для Minecraft {game_version} вже встановлено"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Ванільна {game_version} вже встановлена"
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Уведіть ширину…"
},
"instance.settings.title": {
"message": "Налаштування"
},
"instance.worlds.a_minecraft_server": {
"message": "Сервер Minecraft"
},
@@ -470,9 +470,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "Nhập chiều dài..."
},
"instance.settings.title": {
"message": "Thiết đặt"
},
"instance.worlds.a_minecraft_server": {
"message": "Một máy chủ Minecraft"
},
+21 -18
View File
@@ -38,6 +38,9 @@
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} 已经完成下载。现在重新启动以更新,或在关闭 Modrinth App 时自动更新。"
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} 现已发布。请使用你的软件包管理器进行更新,获取最新功能与修复!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} 现已发布!由于你正在使用按流量计费的网络,该更新未自动下载。"
},
@@ -47,11 +50,14 @@
"app.update-toast.download": {
"message": "下载({size}"
},
"app.update-toast.download-page": {
"message": "下载"
},
"app.update-toast.downloading": {
"message": "下载中…"
},
"app.update-toast.reload": {
"message": "重启应用"
"message": "重新启动"
},
"app.update-toast.title": {
"message": "有可用更新"
@@ -231,13 +237,13 @@
"message": "选择图标"
},
"instance.settings.tabs.general.library-groups": {
"message": "实例分组"
"message": "分组"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "创建新的分组"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "实例分组可将你的实例整理到实例库的不同版块中。"
"message": "库分组功能可以让你将实例整理到库中的不同部分。"
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "输入分组名称"
@@ -255,13 +261,13 @@
"message": "Hooks允许高级用户在启动游戏前后运行特定的系统命令。"
},
"instance.settings.tabs.hooks.post-exit": {
"message": "退出后"
"message": "退出后执行"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "在游戏关闭后运行。"
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "输入退出后运行的命令…"
"message": "输入退出后运行的命令…"
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "启动前"
@@ -270,7 +276,7 @@
"message": "在实例启动前运行。"
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "输入启动命令..."
"message": "输入启动命令……"
},
"instance.settings.tabs.hooks.title": {
"message": "游戏启动钩子"
@@ -357,7 +363,7 @@
"message": "你确定要重新安装该实例吗?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "重置实例至原始状态,移除你在原始整合包上添加的所有模组及内容。"
"message": "将实例的内容重置为原始状态,移除你在原始整合包基础上添加的任何修改或内容。"
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "重新安装整合包"
@@ -369,7 +375,7 @@
"message": "修复中"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "修复实例将重新安装 Minecraft 依赖并检查文件完整性。该操作有可能解决因启动器错误导致的启动失败问题,但不解决由模组引发的问题或崩溃。"
"message": "修复重新安装 Minecraft 依赖并检查是否有损坏。如果你的游戏因启动器相关错误无法启动,这可能会解决问题,但不解决与已安装模组相关的问题或崩溃。"
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "确定修复该实例吗?"
@@ -408,19 +414,19 @@
"message": "(未知版本)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "解除关联实例"
"message": "解除实例关联"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "若继续操作,该实例将无法重新关联至原整合包,除非创建全新的实例。此后,不再接收整合包的任何更新,该实例变为普通实例。"
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "你确定要解除关联实例吗?"
"message": "你确定要取消关联实例吗?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "该实例已关联至整合包,因此无法单独更新模组,也无法更改模组加载器和 Minecraft 版本。解除关联后,该实例将无法重新关联至整合包。"
},
"instance.settings.tabs.installation.unlink.title": {
"message": "解除整合包关联"
"message": "取消整合包关联"
},
"instance.settings.tabs.java": {
"message": "Java 及内存"
@@ -459,7 +465,7 @@
"message": "游戏启动时的窗口高度。"
},
"instance.settings.tabs.window.height.enter": {
"message": "输入高度…"
"message": "输入高度…"
},
"instance.settings.tabs.window.width": {
"message": "宽度"
@@ -468,10 +474,7 @@
"message": "游戏启动时的窗口宽度。"
},
"instance.settings.tabs.window.width.enter": {
"message": "输入宽度…"
},
"instance.settings.title": {
"message": "设置"
"message": "输入宽度…"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft 服务器"
@@ -483,7 +486,7 @@
"message": "复制地址"
},
"instance.worlds.dont_show_on_home": {
"message": "在主界面不显示"
"message": "在主界面隐藏"
},
"instance.worlds.filter.available": {
"message": "可用"
@@ -519,7 +522,7 @@
"message": "查看实例"
},
"instance.worlds.world_in_use": {
"message": "世界用中"
"message": "世界正在使用中"
},
"search.filter.locked.instance": {
"message": "由该实例提供"
+13 -10
View File
@@ -38,15 +38,21 @@
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} 已完成下載。重新載入立即更新,或是在你關閉 Modrinth App 時自動更新。"
},
"app.update-toast.body.linux": {
"message": "Modrinth App v{version} 現已推出。請使用您的套件管理員進行更新,以取得最新的功能與修正!"
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} 現已推出!由於你正使用計量付費的網路,我們沒有自動下載它。"
},
"app.update-toast.changelog": {
"message": "變更紀錄"
"message": "更新日誌"
},
"app.update-toast.download": {
"message": "下載 ({size})"
},
"app.update-toast.download-page": {
"message": "下載"
},
"app.update-toast.downloading": {
"message": "下載中..."
},
@@ -60,7 +66,7 @@
"message": "下載完成"
},
"app.update.complete-toast.text": {
"message": "按這裡查看變更紀錄。"
"message": "按這裡查看更新日誌。"
},
"app.update.complete-toast.title": {
"message": "版本 {version} 已成功安裝!"
@@ -78,10 +84,10 @@
"message": "新增好友"
},
"friends.action.view-friend-requests": {
"message": "{count} 個好友請"
"message": "{count} 個好友請"
},
"friends.add-friend.submit": {
"message": "傳送好友請求"
"message": "送出好友邀請"
},
"friends.add-friend.title": {
"message": "新增好友"
@@ -105,7 +111,7 @@
"message": "移除好友"
},
"friends.friend.request-sent": {
"message": "已送出好友請"
"message": "已送出好友請"
},
"friends.friend.view-profile": {
"message": "查看個人檔案"
@@ -324,7 +330,7 @@
"message": "安裝"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "安裝進行中"
"message": "安裝中"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} 版本"
@@ -375,7 +381,7 @@
"message": "是否要修復實例?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "修復進行中"
"message": "修復中"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "重設為目前版本"
@@ -470,9 +476,6 @@
"instance.settings.tabs.window.width.enter": {
"message": "輸入寬度..."
},
"instance.settings.title": {
"message": "設定"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft 伺服器"
},
+2 -2
View File
@@ -38,10 +38,10 @@ pub async fn authenticate_run() -> theseus::Result<Credentials> {
async fn main() -> theseus::Result<()> {
println!("Starting.");
let _log_guard = theseus::start_logger();
let _log_guard = theseus::start_logger("ModrinthApp");
// Initialize state
State::init().await?;
State::init("ModrinthApp".to_owned()).await?;
let worlds = get_recent_worlds(4, EnumSet::all()).await?;
for world in worlds {
+4 -1
View File
@@ -29,6 +29,9 @@ pub async fn settings_set(settings: Settings) -> Result<()> {
#[tauri::command]
pub async fn cancel_directory_change() -> Result<()> {
settings::cancel_directory_change().await?;
let state = State::get().await?;
let identifier = &state.app_identifier;
settings::cancel_directory_change(identifier).await?;
Ok(())
}
+6 -4
View File
@@ -107,10 +107,12 @@ pub async fn open_path<R: Runtime>(app: tauri::AppHandle<R>, path: PathBuf) {
#[tauri::command]
pub async fn show_launcher_logs_folder<R: Runtime>(app: tauri::AppHandle<R>) {
let path = DirectoryInfo::launcher_logs_dir().unwrap_or_default();
// failure to get folder just opens filesystem
// (ie: if in debug mode only and launcher_logs never created)
open_path(app, path).await;
if let Some(d) = DirectoryInfo::global_handle_if_ready() {
let path = d.launcher_logs_dir().unwrap_or_default();
// failure to get folder just opens filesystem
// (ie: if in debug mode only and launcher_logs never created)
open_path(app, path).await;
}
}
// Get opening command
+6 -3
View File
@@ -28,7 +28,7 @@ async fn initialize_state(app: tauri::AppHandle) -> api::Result<()> {
theseus::EventState::init(app.clone()).await?;
tracing::info!("Initializing app state...");
State::init().await?;
State::init(app.config().identifier.clone()).await?;
let state = State::get().await?;
app.asset_protocol_scope()
@@ -110,7 +110,10 @@ fn main() {
RUST_LOG="theseus=trace" {run command}
*/
let _log_guard = theseus::start_logger();
let tauri_context = tauri::generate_context!();
let _log_guard = theseus::start_logger(&tauri_context.config().identifier);
tracing::info!("Initialized tracing subscriber. Loading Modrinth App!");
@@ -243,7 +246,7 @@ fn main() {
]);
tracing::info!("Initializing app...");
let app = builder.build(tauri::generate_context!());
let app = builder.build(tauri_context);
match app {
Ok(app) => {
+1 -1
View File
@@ -87,7 +87,7 @@
"capabilities": ["ads", "core", "plugins"],
"csp": {
"default-src": "'self' customprotocol: asset:",
"connect-src": "ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.posthog.com https://*.sentry.io https://api.mclo.gs 'self' data: blob:",
"connect-src": "ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.posthog.com https://*.sentry.io https://api.mclo.gs http://textures.minecraft.net https://textures.minecraft.net 'self' data: blob:",
"font-src": ["https://cdn-raw.modrinth.com/fonts/"],
"img-src": "https: 'unsafe-inline' 'self' asset: http://asset.localhost http://textures.minecraft.net blob: data:",
"style-src": "'unsafe-inline' 'self'",
+2 -2
View File
@@ -11,8 +11,8 @@
"lint": "eslint . && prettier --check .",
"fix": "eslint . --fix && prettier --write .",
"intl:extract": "formatjs extract \"src/{components,composables,layouts,middleware,modules,pages,plugins,utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" \"src/error.vue\" --ignore \"**/*.d.ts\" --ignore node_modules --out-file src/locales/en-US/index.json --format crowdin --preserve-whitespace",
"cf-deploy": "pnpm run build && wrangler deploy --env preview",
"cf-dev": "pnpm run build && wrangler dev --env preview",
"cf-deploy": "pnpm run build && wrangler deploy --env staging",
"cf-dev": "pnpm run build && wrangler dev --env staging",
"cf-typegen": "wrangler types"
},
"devDependencies": {
@@ -223,10 +223,7 @@
:where(input) {
box-sizing: border-box;
max-height: 40px;
&:not(.stylized-toggle) {
max-width: 100%;
}
max-width: 100%;
}
:where(.adjacent-input, &.adjacent-input) {
@@ -271,10 +268,6 @@
&:not(&.small) {
flex-direction: column;
align-items: flex-start;
.stylized-toggle {
flex-basis: 0;
}
}
}
}
@@ -650,64 +643,6 @@ tr.button-transparent {
}
}
.switch {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
-webkit-tap-highlight-color: transparent;
cursor: pointer;
&:focus {
//outline: 0; Bad for accessibility
}
}
.stylized-toggle {
@extend .button-base;
box-sizing: content-box;
min-height: 32px;
height: 32px;
width: 52px;
max-width: 52px;
border-radius: var(--size-rounded-max);
display: inline-block;
position: relative;
margin: 0;
transition: all 0.2s ease;
background: var(--color-button-bg);
&:after {
content: '';
position: absolute;
top: 7px;
left: 7px;
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--color-toggle-handle);
transition: all 0.2s cubic-bezier(0.5, 0.1, 0.75, 1.35);
outline: 2px solid transparent;
@media (prefers-reduced-motion) {
transition: none;
}
}
&:checked {
background-color: var(--color-brand);
&:after {
transform: translatex(20px);
background: var(--color-brand-inverted);
}
}
&:hover &:focus {
background: var(--color-button-bg);
}
}
.textarea-wrapper {
display: flex;
flex-direction: column;
@@ -60,8 +60,6 @@ html {
--color-button-bg-active: #c3c6cb;
--color-button-text-active: var(--color-button-text-hover);
--color-toggle-handle: var(--color-icon);
--color-dropdown-bg: var(--color-button-bg);
--color-dropdown-text: var(--color-button-text);
@@ -177,8 +175,6 @@ html {
--color-button-bg-active: #616570;
--color-button-text-active: var(--color-button-text-hover);
--color-toggle-handle: var(--color-button-text);
--color-dropdown-bg: var(--color-button-bg);
--color-dropdown-text: var(--color-button-text);
+186 -146
View File
@@ -2,78 +2,54 @@
<nav
ref="scrollContainer"
class="experimental-styles-within relative flex w-fit overflow-x-auto rounded-full bg-bg-raised p-1 text-sm font-bold"
:class="[mode === 'navigation' ? 'card-shadow' : undefined]"
:class="{ 'card-shadow': mode === 'navigation' }"
>
<template v-if="mode === 'navigation'">
<NuxtLink
v-for="(link, index) in filteredLinks"
v-show="link.shown === undefined ? true : link.shown"
v-show="link.shown ?? true"
:key="link.href"
ref="tabLinkElements"
:to="query ? (link.href ? `?${query}=${link.href}` : '?') : link.href"
class="button-animation z-[1] flex flex-row items-center gap-2 px-4 py-2 focus:rounded-full"
:class="getSSRFallbackClasses(index)"
@mouseenter="link.onHover?.()"
@focus="link.onHover?.()"
>
<component
:is="link.icon"
v-if="link.icon"
class="size-5"
:class="{
'text-button-textSelected': currentActiveIndex === index && !subpageSelected,
'text-secondary': currentActiveIndex !== index || subpageSelected,
}"
/>
<span
class="text-nowrap"
:class="{
'text-button-textSelected': currentActiveIndex === index && !subpageSelected,
'text-contrast': currentActiveIndex !== index || subpageSelected,
}"
>{{ link.label }}</span
>
<component :is="link.icon" v-if="link.icon" class="size-5" :class="getIconClasses(index)" />
<span class="text-nowrap" :class="getLabelClasses(index)">
{{ link.label }}
</span>
</NuxtLink>
</template>
<template v-else>
<div
v-for="(link, index) in filteredLinks"
v-show="link.shown === undefined ? true : link.shown"
v-show="link.shown ?? true"
:key="link.href"
ref="tabLinkElements"
class="button-animation z-[1] flex flex-row items-center gap-2 px-4 py-2 hover:cursor-pointer focus:rounded-full"
:class="getSSRFallbackClasses(index)"
@click="emit('tabClick', index, link)"
>
<component
:is="link.icon"
v-if="link.icon"
class="size-5"
:class="{
'text-button-textSelected': currentActiveIndex === index && !subpageSelected,
'text-secondary': currentActiveIndex !== index || subpageSelected,
}"
/>
<span
class="text-nowrap"
:class="{
'text-button-textSelected': currentActiveIndex === index && !subpageSelected,
'text-contrast': currentActiveIndex !== index || subpageSelected,
}"
>{{ link.label }}</span
>
<component :is="link.icon" v-if="link.icon" class="size-5" :class="getIconClasses(index)" />
<span class="text-nowrap" :class="getLabelClasses(index)">
{{ link.label }}
</span>
</div>
</template>
<!-- Animated slider background -->
<div
:class="`navtabs-transition pointer-events-none absolute h-[calc(100%-0.5rem)] overflow-hidden rounded-full p-1 ${
subpageSelected ? 'bg-button-bg' : 'bg-button-bgSelected'
}`"
:style="{
left: sliderLeftPx,
top: sliderTopPx,
right: sliderRightPx,
bottom: sliderBottomPx,
opacity:
sliderLeft === 4 && sliderLeft === sliderRight ? 0 : currentActiveIndex === -1 ? 0 : 1,
}"
class="pointer-events-none absolute h-[calc(100%-0.5rem)] overflow-hidden rounded-full p-1"
:class="[
subpageSelected ? 'bg-button-bg' : 'bg-button-bgSelected',
{ 'navtabs-transition': transitionsEnabled },
]"
:style="sliderStyle"
aria-hidden="true"
></div>
/>
</nav>
</template>
@@ -89,6 +65,7 @@ interface Tab {
shown?: boolean
icon?: Component
subpages?: string[]
onHover?: () => void
}
const props = withDefaults(
@@ -109,124 +86,194 @@ const emit = defineEmits<{
tabClick: [index: number, tab: Tab]
}>()
// DOM refs
const scrollContainer = ref<HTMLElement | null>(null)
const tabLinkElements = ref<HTMLElement[]>()
// Slider pos state
const sliderLeft = ref(4)
const sliderTop = ref(4)
const sliderRight = ref(4)
const sliderBottom = ref(4)
// active tab state
const currentActiveIndex = ref(-1)
const subpageSelected = ref(false)
const filteredLinks = computed(() =>
props.links.filter((x) => (x.shown === undefined ? true : x.shown)),
// SSR state
const sliderReady = ref(false) // Slider is positioned and should be visible
const transitionsEnabled = ref(false) // CSS transitions should apply (after first paint)
const filteredLinks = computed(() => props.links.filter((link) => link.shown ?? true))
const sliderStyle = computed(() => ({
left: `${sliderLeft.value}px`,
top: `${sliderTop.value}px`,
right: `${sliderRight.value}px`,
bottom: `${sliderBottom.value}px`,
opacity: sliderReady.value && currentActiveIndex.value !== -1 ? 1 : 0,
}))
const isActiveAndNotSubpage = computed(
() => (index: number) => currentActiveIndex.value === index && !subpageSelected.value,
)
const sliderLeftPx = computed(() => `${sliderLeft.value}px`)
const sliderTopPx = computed(() => `${sliderTop.value}px`)
const sliderRightPx = computed(() => `${sliderRight.value}px`)
const sliderBottomPx = computed(() => `${sliderBottom.value}px`)
const tabLinkElements = ref()
function getSSRFallbackClasses(index: number) {
if (sliderReady.value) return {}
if (currentActiveIndex.value !== index) return {}
function pickLink() {
let index = -1
subpageSelected.value = false
return {
'rounded-full': true,
'bg-button-bgSelected': !subpageSelected.value,
'bg-button-bg': subpageSelected.value,
}
}
function getIconClasses(index: number) {
return {
'text-button-textSelected': isActiveAndNotSubpage.value(index),
'text-secondary': !isActiveAndNotSubpage.value(index),
}
}
function getLabelClasses(index: number) {
return {
'text-button-textSelected': isActiveAndNotSubpage.value(index),
'text-contrast': !isActiveAndNotSubpage.value(index),
}
}
function computeActiveIndex(): { index: number; isSubpage: boolean } {
if (props.mode === 'local' && props.activeIndex !== undefined) {
index = Math.min(props.activeIndex, filteredLinks.value.length - 1)
} else {
for (let i = filteredLinks.value.length - 1; i >= 0; i--) {
const link = filteredLinks.value[i]
if (props.query) {
if (route.query[props.query] === link.href || (!route.query[props.query] && !link.href)) {
index = i
break
}
} else if (decodeURIComponent(route.path) === link.href) {
index = i
break
} else if (
decodeURIComponent(route.path).includes(link.href) ||
(link.subpages &&
link.subpages.some((subpage) => decodeURIComponent(route.path).includes(subpage)))
) {
index = i
subpageSelected.value = true
break
}
return {
index: Math.min(props.activeIndex, filteredLinks.value.length - 1),
isSubpage: false,
}
}
currentActiveIndex.value = index
for (let i = filteredLinks.value.length - 1; i >= 0; i--) {
const link = filteredLinks.value[i]
const decodedPath = decodeURIComponent(route.path)
if (currentActiveIndex.value !== -1) {
nextTick(() => startAnimation())
// Query-based matching
if (props.query) {
const queryValue = route.query[props.query]
if (queryValue === link.href || (!queryValue && !link.href)) {
return { index: i, isSubpage: false }
}
continue
}
// Exact path match
if (decodedPath === link.href) {
return { index: i, isSubpage: false }
}
// Subpage match
const isSubpageMatch =
decodedPath.includes(link.href) ||
link.subpages?.some((subpage) => decodedPath.includes(subpage))
if (isSubpageMatch) {
return { index: i, isSubpage: true }
}
}
return { index: -1, isSubpage: false }
}
function getTabElement(index: number): HTMLElement | null {
if (!tabLinkElements.value?.[index]) return null
// In navigation mode, elements are NuxtLinks with $el property
// In local mode, elements are plain divs
const element = tabLinkElements.value[index]
return props.mode === 'navigation' ? (element as any).$el : element
}
function positionSlider() {
const el = getTabElement(currentActiveIndex.value)
if (!el?.offsetParent) return
const parent = el.offsetParent as HTMLElement
const newPosition = {
left: el.offsetLeft,
top: el.offsetTop,
right: parent.offsetWidth - el.offsetLeft - el.offsetWidth,
bottom: parent.offsetHeight - el.offsetTop - el.offsetHeight,
}
const isInitialPosition = sliderLeft.value === 4 && sliderRight.value === 4
if (isInitialPosition) {
// Initial positioning: set position instantly, no animation
sliderLeft.value = newPosition.left
sliderRight.value = newPosition.right
sliderTop.value = newPosition.top
sliderBottom.value = newPosition.bottom
sliderReady.value = true
// enable transitions after slider is painted, so future changes animate
requestAnimationFrame(() => {
transitionsEnabled.value = true
})
} else {
animateSliderTo(newPosition)
}
}
function animateSliderTo(newPosition: {
left: number
top: number
right: number
bottom: number
}) {
const STAGGER_DELAY = 200
// Horizontal animation - lead with the direction of movement
if (newPosition.left < sliderLeft.value) {
sliderLeft.value = newPosition.left
setTimeout(() => (sliderRight.value = newPosition.right), STAGGER_DELAY)
} else {
sliderRight.value = newPosition.right
setTimeout(() => (sliderLeft.value = newPosition.left), STAGGER_DELAY)
}
// Vertical animation - lead with the direction of movement
if (newPosition.top < sliderTop.value) {
sliderTop.value = newPosition.top
setTimeout(() => (sliderBottom.value = newPosition.bottom), STAGGER_DELAY)
} else {
sliderBottom.value = newPosition.bottom
setTimeout(() => (sliderTop.value = newPosition.top), STAGGER_DELAY)
}
}
function updateActiveTab() {
const { index, isSubpage } = computeActiveIndex()
currentActiveIndex.value = index
subpageSelected.value = isSubpage
if (index !== -1) {
nextTick(positionSlider)
} else {
sliderLeft.value = 0
sliderRight.value = 0
}
}
function startAnimation() {
// In navigation mode, elements are NuxtLinks with $el property
// In local mode, elements are plain divs
const el =
props.mode === 'navigation'
? tabLinkElements.value[currentActiveIndex.value]?.$el
: tabLinkElements.value[currentActiveIndex.value]
const initialActive = computeActiveIndex()
currentActiveIndex.value = initialActive.index
subpageSelected.value = initialActive.isSubpage
if (!el || !el.offsetParent) return
const newValues = {
left: el.offsetLeft,
top: el.offsetTop,
right: el.offsetParent.offsetWidth - el.offsetLeft - el.offsetWidth,
bottom: el.offsetParent.offsetHeight - el.offsetTop - el.offsetHeight,
}
if (sliderLeft.value === 4 && sliderRight.value === 4) {
sliderLeft.value = newValues.left
sliderRight.value = newValues.right
sliderTop.value = newValues.top
sliderBottom.value = newValues.bottom
} else {
const delay = 200
if (newValues.left < sliderLeft.value) {
sliderLeft.value = newValues.left
setTimeout(() => {
sliderRight.value = newValues.right
}, delay)
} else {
sliderRight.value = newValues.right
setTimeout(() => {
sliderLeft.value = newValues.left
}, delay)
}
if (newValues.top < sliderTop.value) {
sliderTop.value = newValues.top
setTimeout(() => {
sliderBottom.value = newValues.bottom
}, delay)
} else {
sliderBottom.value = newValues.bottom
setTimeout(() => {
sliderTop.value = newValues.top
}, delay)
}
}
}
onMounted(() => {
pickLink()
})
onMounted(updateActiveTab)
watch(
() => [route.path, route.query],
() => {
if (props.mode === 'navigation') {
pickLink()
updateActiveTab()
}
},
)
@@ -235,19 +282,12 @@ watch(
() => props.activeIndex,
() => {
if (props.mode === 'local') {
pickLink()
updateActiveTab()
}
},
)
watch(
() => props.links,
() => {
// Re-trigger animation when links change
pickLink()
},
{ deep: true },
)
watch(() => props.links, updateActiveTab, { deep: true })
</script>
<style scoped>
@@ -458,9 +458,11 @@ function getMessages() {
}
function getLoaderCategories(ver) {
return tags.value.loaders.filter((loader) => {
return ver?.loaders?.includes(loader.name)
})
return tags.value.loaders
.filter((loader) => {
return ver?.loaders?.includes(loader.name)
})
.map((loader) => loader.name)
}
</script>
@@ -91,10 +91,9 @@
<script>
import { CalendarIcon, DownloadIcon, HeartIcon, UpdatedIcon } from '@modrinth/assets'
import { Avatar, ProjectStatusBadge, useRelativeTime } from '@modrinth/ui'
import { Avatar, Categories, ProjectStatusBadge, useRelativeTime } from '@modrinth/ui'
import EnvironmentIndicator from '~/components/ui/EnvironmentIndicator.vue'
import Categories from '~/components/ui/search/Categories.vue'
export default {
components: {
@@ -9,13 +9,13 @@
<ButtonStyled color="brand">
<button class="brand-button" @click="acceptInvite()">
<CheckIcon />
{{ getFormattedMessage(messages.accept) }}
{{ getFormattedMessage(commonMessages.acceptButton) }}
</button>
</ButtonStyled>
<ButtonStyled color="red">
<button @click="declineInvite">
<XIcon />
{{ getFormattedMessage(messages.decline) }}
{{ getFormattedMessage(commonMessages.declineButton) }}
</button>
</ButtonStyled>
</div>
@@ -26,6 +26,7 @@
import { CheckIcon, XIcon } from '@modrinth/assets'
import {
ButtonStyled,
commonMessages,
defineMessages,
injectNotificationManager,
type MessageDescriptor,
@@ -81,14 +82,6 @@ const messages = defineMessages({
defaultMessage:
"You've been invited to join this project. Please accept or decline the invitation.",
},
accept: {
id: 'project-member-header.accept',
defaultMessage: 'Accept',
},
decline: {
id: 'project-member-header.decline',
defaultMessage: 'Decline',
},
successJoin: {
id: 'project-member-header.success-join',
defaultMessage: 'You have joined the project team',
@@ -105,14 +98,6 @@ const messages = defineMessages({
id: 'project-member-header.error-decline',
defaultMessage: 'Failed to decline team invitation',
},
success: {
id: 'project-member-header.success',
defaultMessage: 'Success',
},
error: {
id: 'project-member-header.error',
defaultMessage: 'Error',
},
})
const { formatMessage } = useVIntl()
@@ -171,13 +156,13 @@ async function acceptInvite(): Promise<void> {
await acceptTeamInvite(props.project.team)
await handleUpdateMembers()
addNotification({
title: formatMessage(messages.success),
title: formatMessage(commonMessages.successLabel),
text: formatMessage(messages.successJoin),
type: 'success',
})
} catch {
addNotification({
title: formatMessage(messages.error),
title: formatMessage(commonMessages.errorLabel),
text: formatMessage(messages.errorJoin),
type: 'error',
})
@@ -192,13 +177,13 @@ async function declineInvite(): Promise<void> {
await removeTeamMember(props.project.team, props.auth.user.id)
await handleUpdateMembers()
addNotification({
title: formatMessage(messages.success),
title: formatMessage(commonMessages.successLabel),
text: formatMessage(messages.successDecline),
type: 'success',
})
} catch {
addNotification({
title: formatMessage(messages.error),
title: formatMessage(commonMessages.errorLabel),
text: formatMessage(messages.errorDecline),
type: 'error',
})
@@ -46,20 +46,20 @@
Node hostnames
<span class="text-brand-red">*</span>
</span>
<span>Add nodes to transfer.</span>
<span>Add nodes to transfer (comma or space-separated).</span>
</label>
<div class="flex items-center gap-2">
<input
id="node-input"
v-model="nodeInput"
class="w-40"
class="w-64"
type="text"
autocomplete="off"
placeholder="us-vin200"
@keydown.enter.prevent="addNode"
placeholder="us-vin200, us-vin201"
@keydown.enter.prevent="addNodes"
/>
<ButtonStyled color="blue" color-fill="text">
<button class="shrink-0" @click="addNode">
<button class="shrink-0" @click="addNodes">
<PlusIcon />
Add
</button>
@@ -282,18 +282,37 @@ function hide() {
modal.value?.hide()
}
function addNode() {
const v = nodeInput.value.trim()
if (!v) return
if (!nodeHostnames.value.includes(v)) {
function addNodes() {
const input = nodeInput.value.trim()
if (!input) return
const nodes = input
.split(/[,\s]+/)
.map((s) => s.trim())
.filter((s) => s.length > 0)
const unknownNodes: string[] = []
const addedNodes: string[] = []
for (const v of nodes) {
if (!nodeHostnames.value.includes(v)) {
unknownNodes.push(v)
continue
}
if (!selectedNodes.value.includes(v)) {
selectedNodes.value.push(v)
addedNodes.push(v)
}
}
if (unknownNodes.length > 0) {
addNotification({
title: 'Unknown node',
text: "This hostname doesn't exist",
title: `Unknown node${unknownNodes.length > 1 ? 's' : ''}`,
text: unknownNodes.join(', '),
type: 'error',
})
return
}
if (!selectedNodes.value.includes(v)) selectedNodes.value.push(v)
nodeInput.value = ''
}
@@ -27,8 +27,8 @@
"
:style="`--_color: var(--color-platform-${loader.name})`"
>
<div v-html="loader.icon"></div>
{{ formatCategory(loader.name) }}
<component :is="getLoaderIcon(loader.name)" v-if="getLoaderIcon(loader.name)" />
<FormattedTag :tag="loader.name" enforce-type="loader" />
</TagItem>
</div>
</div>
@@ -40,8 +40,8 @@
<script lang="ts" setup>
import type { Labrinth } from '@modrinth/api-client'
import { Chips, TagItem } from '@modrinth/ui'
import { formatCategory } from '@modrinth/utils'
import { getLoaderIcon } from '@modrinth/assets'
import { Chips, FormattedTag, TagItem } from '@modrinth/ui'
const selectedLoaders = defineModel<string[]>({ default: [] })
@@ -155,7 +155,7 @@ function groupVersions(gameVersions: GameVersion[]) {
const groups: Record<string, string[]> = {}
let currentGroupKey = getSnapshotGroupKey(gameVersions.find((v) => v.major)?.version || '')
let currentGroupKey
gameVersions.forEach((gameVersion) => {
if (gameVersion.version_type === 'release') {
@@ -29,8 +29,8 @@
class="border !border-solid border-surface-5 !transition-all hover:bg-button-bgHover hover:no-underline"
:style="`--_color: var(--color-platform-${loader.name})`"
>
<div v-html="loader.icon"></div>
{{ formatCategory(loader.name) }}
<component :is="getLoaderIcon(loader.name)" v-if="getLoaderIcon(loader.name)" />
<FormattedTag :tag="loader.name" enforce-type="loader" />
<XIcon class="text-secondary" />
</TagItem>
</template>
@@ -41,9 +41,8 @@
</template>
<script lang="ts" setup>
import { XIcon } from '@modrinth/assets'
import { ButtonStyled, TagItem } from '@modrinth/ui'
import { formatCategory } from '@modrinth/utils'
import { getLoaderIcon, XIcon } from '@modrinth/assets'
import { ButtonStyled, FormattedTag, TagItem } from '@modrinth/ui'
import { injectManageVersionContext } from '~/providers/version/manage-version-modal'
@@ -72,8 +72,8 @@
class="border !border-solid border-surface-5 hover:no-underline"
:style="`--_color: var(--color-platform-${loader.name})`"
>
<div v-html="loader.icon"></div>
{{ formatCategory(loader.name) }}
<component :is="getLoaderIcon(loader.name)" v-if="getLoaderIcon(loader.name)" />
<FormattedTag :tag="loader.name" enforce-type="loader" />
</TagItem>
</template>
@@ -189,16 +189,16 @@
<script lang="ts" setup>
import type { Labrinth } from '@modrinth/api-client'
import { EditIcon, UnknownIcon } from '@modrinth/assets'
import { EditIcon, getLoaderIcon, UnknownIcon } from '@modrinth/assets'
import {
ButtonStyled,
defineMessages,
ENVIRONMENTS_COPY,
FormattedTag,
injectProjectPageContext,
TagItem,
useVIntl,
} from '@modrinth/ui'
import { formatCategory } from '@modrinth/utils'
import { useGeneratedState } from '~/composables/generated'
import { injectManageVersionContext } from '~/providers/version/manage-version-modal'
@@ -43,7 +43,7 @@
<ButtonStyled class="w-24">
<button @click="modal.hide()">
<XIcon aria-hidden="true" />
{{ formatMessage(messages.cancel) }}
{{ formatMessage(commonMessages.cancelButton) }}
</button>
</ButtonStyled>
<ButtonStyled color="brand" class="w-36">
@@ -60,6 +60,7 @@
import { PlusIcon, XIcon } from '@modrinth/assets'
import {
ButtonStyled,
commonMessages,
defineMessages,
injectNotificationManager,
NewModal,
@@ -102,18 +103,10 @@ const messages = defineMessages({
defaultMessage:
'Your new collection will be created as a public collection with {count, plural, =0 {no projects} one {# project} other {# projects}}.',
},
cancel: {
id: 'create.collection.cancel',
defaultMessage: 'Cancel',
},
createCollection: {
id: 'create.collection.create-collection',
defaultMessage: 'Create collection',
},
errorTitle: {
id: 'create.collection.error-title',
defaultMessage: 'An error occurred',
},
})
const name = ref('')
@@ -150,7 +143,7 @@ async function create() {
await router.push(`/collection/${result.id}`)
} catch (err) {
addNotification({
title: formatMessage(messages.errorTitle),
title: formatMessage(commonMessages.errorNotificationTitle),
text: err?.data?.description || err?.message || err,
type: 'error',
})
@@ -65,7 +65,7 @@
<ButtonStyled class="w-24">
<button @click="hide">
<XIcon aria-hidden="true" />
{{ formatMessage(messages.cancel) }}
{{ formatMessage(commonMessages.cancelButton) }}
</button>
</ButtonStyled>
<ButtonStyled color="brand" class="w-40">
@@ -83,6 +83,7 @@
import { PlusIcon, XIcon } from '@modrinth/assets'
import {
ButtonStyled,
commonMessages,
defineMessages,
injectNotificationManager,
NewModal,
@@ -130,18 +131,10 @@ const messages = defineMessages({
defaultMessage:
'You will be the owner of this organization, but you can invite other members and transfer ownership at any time.',
},
cancel: {
id: 'create.organization.cancel',
defaultMessage: 'Cancel',
},
createOrganization: {
id: 'create.organization.create-organization',
defaultMessage: 'Create organization',
},
errorTitle: {
id: 'create.organization.error-title',
defaultMessage: 'An error occurred',
},
})
const name = ref<string>('')
@@ -172,7 +165,7 @@ async function createOrganization(): Promise<void> {
} catch (err: any) {
console.error(err)
addNotification({
title: formatMessage(messages.errorTitle),
title: formatMessage(commonMessages.errorNotificationTitle),
text: err.data ? err.data.description : err,
type: 'error',
})
@@ -43,7 +43,7 @@
<div class="flex flex-col gap-2">
<label for="visibility" class="flex flex-col gap-1">
<span class="text-lg font-semibold text-contrast">
{{ formatMessage(messages.visibilityLabel) }}
{{ formatMessage(commonMessages.visibilityLabel) }}
<span class="text-brand-red">*</span>
</span>
<span>{{ formatMessage(messages.visibilityDescription) }}</span>
@@ -79,7 +79,7 @@
<ButtonStyled class="w-24">
<button @click="cancel">
<XIcon aria-hidden="true" />
{{ formatMessage(messages.cancel) }}
{{ formatMessage(commonMessages.cancelButton) }}
</button>
</ButtonStyled>
<ButtonStyled color="brand" class="w-32">
@@ -98,6 +98,7 @@ import { PlusIcon, XIcon } from '@modrinth/assets'
import {
ButtonStyled,
Chips,
commonMessages,
defineMessages,
injectNotificationManager,
NewModal,
@@ -127,10 +128,6 @@ const messages = defineMessages({
id: 'create.project.url-label',
defaultMessage: 'URL',
},
visibilityLabel: {
id: 'create.project.visibility-label',
defaultMessage: 'Visibility',
},
visibilityDescription: {
id: 'create.project.visibility-description',
defaultMessage: 'The visibility of your project after it has been approved.',
@@ -147,18 +144,10 @@ const messages = defineMessages({
id: 'create.project.summary-placeholder',
defaultMessage: 'This project adds...',
},
cancel: {
id: 'create.project.cancel',
defaultMessage: 'Cancel',
},
createProject: {
id: 'create.project.create-project',
defaultMessage: 'Create project',
},
errorTitle: {
id: 'create.project.error-title',
defaultMessage: 'An error occurred',
},
visibilityPublic: {
id: 'create.project.visibility-public',
defaultMessage: 'Public',
@@ -256,7 +245,7 @@ async function createProject() {
await router.push(`/project/${slug.value}/settings`)
} catch (err) {
addNotification({
title: formatMessage(messages.errorTitle),
title: formatMessage(commonMessages.errorNotificationTitle),
text: err.data ? err.data.description : err,
type: 'error',
})
@@ -37,7 +37,10 @@
v-model="isUSCitizen"
:items="['yes', 'no']"
:format-label="
(item) => (item === 'yes' ? formatMessage(messages.yes) : formatMessage(messages.no))
(item) =>
item === 'yes'
? formatMessage(commonMessages.yesLabel)
: formatMessage(commonMessages.noLabel)
"
:never-empty="false"
:capitalize="true"
@@ -162,6 +165,7 @@ import {
Admonition,
ButtonStyled,
Chips,
commonMessages,
defineMessages,
injectNotificationManager,
IntlFormatted,
@@ -228,8 +232,6 @@ const messages = defineMessages({
id: 'dashboard.creator-tax-form-modal.us-citizen.question',
defaultMessage: 'Are you a US citizen?',
},
yes: { id: 'common.yes', defaultMessage: 'Yes' },
no: { id: 'common.no', defaultMessage: 'No' },
entityQuestion: {
id: 'dashboard.creator-tax-form-modal.entity.question',
defaultMessage: 'Are you a private individual or part of a foreign entity?',
@@ -60,7 +60,7 @@
<div v-if="currentStage === 'completion'" class="mt-4 flex w-full gap-3">
<ButtonStyled class="flex-1">
<button class="w-full text-contrast" @click="handleClose">
{{ formatMessage(messages.closeButton) }}
{{ formatMessage(commonMessages.closeButton) }}
</button>
</ButtonStyled>
<ButtonStyled class="flex-1">
@@ -601,26 +601,10 @@ const messages = defineMessages({
id: 'dashboard.creator-withdraw-modal.stage.method-selection',
defaultMessage: 'Method',
},
tremendousDetailsStage: {
id: 'dashboard.creator-withdraw-modal.stage.tremendous-details',
defaultMessage: 'Details',
},
muralpayKycStage: {
id: 'dashboard.creator-withdraw-modal.stage.muralpay-kyc',
defaultMessage: 'Verification',
},
muralpayDetailsStage: {
id: 'dashboard.creator-withdraw-modal.stage.muralpay-details',
defaultMessage: 'Account Details',
},
completionStage: {
id: 'dashboard.creator-withdraw-modal.stage.completion',
defaultMessage: 'Complete',
},
detailsLabel: {
id: 'dashboard.creator-withdraw-modal.details-label',
defaultMessage: 'Details',
},
completeTaxForm: {
id: 'dashboard.creator-withdraw-modal.complete-tax-form',
defaultMessage: 'Complete tax form',
@@ -629,14 +613,14 @@ const messages = defineMessages({
id: 'dashboard.creator-withdraw-modal.continue-with-limit',
defaultMessage: 'Continue with limit',
},
detailsLabel: {
id: 'dashboard.creator-withdraw-modal.details-label',
defaultMessage: 'Details',
},
withdrawButton: {
id: 'dashboard.creator-withdraw-modal.withdraw-button',
defaultMessage: 'Withdraw',
},
closeButton: {
id: 'dashboard.withdraw.completion.close-button',
defaultMessage: 'Close',
},
transactionsButton: {
id: 'dashboard.withdraw.completion.transactions-button',
defaultMessage: 'Transactions',
@@ -287,13 +287,5 @@ const messages = defineMessages({
defaultMessage:
"You'll receive an email at <b>{email}</b> with instructions to redeem your withdrawal.",
},
closeButton: {
id: 'dashboard.withdraw.completion.close-button',
defaultMessage: 'Close',
},
transactionsButton: {
id: 'dashboard.withdraw.completion.transactions-button',
defaultMessage: 'Transactions',
},
})
</script>
@@ -57,8 +57,8 @@
<SaveIcon v-else />
{{
venmoSaveSuccess
? formatMessage(messages.savedButton)
: formatMessage(messages.saveButton)
? formatMessage(commonMessages.savedLabel)
: formatMessage(commonMessages.saveButton)
}}
</button>
</ButtonStyled>
@@ -107,6 +107,7 @@ import { CheckIcon, PayPalColorIcon, SaveIcon, XIcon } from '@modrinth/assets'
import {
ButtonStyled,
Checkbox,
commonMessages,
defineMessages,
financialMessages,
formFieldLabels,
@@ -342,14 +343,6 @@ const messages = defineMessages({
id: 'dashboard.creator-withdraw-modal.paypal-details.disconnect-account',
defaultMessage: 'Disconnect account',
},
saveButton: {
id: 'dashboard.creator-withdraw-modal.paypal-details.save-button',
defaultMessage: 'Save',
},
savedButton: {
id: 'dashboard.creator-withdraw-modal.paypal-details.saved-button',
defaultMessage: 'Saved',
},
saveSuccess: {
id: 'dashboard.creator-withdraw-modal.paypal-details.save-success',
defaultMessage: 'Venmo handle saved successfully!',
@@ -78,6 +78,7 @@
</template>
<script setup lang="ts">
import type { Labrinth } from '@modrinth/api-client'
import {
AsteriskIcon,
ChevronRightIcon,
@@ -90,7 +91,6 @@ import {
import type { Nag, NagContext, NagStatus } from '@modrinth/moderation'
import { nags } from '@modrinth/moderation'
import { ButtonStyled, defineMessages, type MessageDescriptor, useVIntl } from '@modrinth/ui'
import type { Project, User, Version } from '@modrinth/utils'
import type { Component } from 'vue'
import { computed } from 'vue'
@@ -98,16 +98,10 @@ interface Tags {
rejectedStatuses: string[]
}
interface Member {
accepted?: boolean
project_role?: string
user?: Partial<User>
}
interface Props {
project: Project
versions?: Version[]
currentMember?: Member | null
project: Labrinth.Projects.v2.Project
versions?: Labrinth.Versions.v2.Version[]
currentMember?: Labrinth.Projects.v3.TeamMember | null
collapsed?: boolean
routeName?: string
tags: Tags
@@ -179,7 +173,7 @@ const emit = defineEmits<{
const nagContext = computed<NagContext>(() => ({
project: props.project,
versions: props.versions,
currentMember: props.currentMember as User,
currentMember: props.currentMember?.user as Labrinth.Users.v2.User,
currentRoute: props.routeName,
tags: props.tags,
submitProject: submitForReview,
@@ -692,17 +692,23 @@ const emit = defineEmits<{
async function handleExit() {
// Release if we own the lock, or if there was an error checking (we might still own it)
if (lockStatus.value?.isOwnLock || lockError.value) {
const released = await moderationStore.releaseLock(projectV2.value.id)
const projectId = projectV2.value?.id
if (projectId && (lockStatus.value?.isOwnLock || lockError.value)) {
const released = await moderationStore.releaseLock(projectId)
if (!released && lockStatus.value?.isOwnLock) {
console.warn('Failed to release moderation lock for project:', projectV2.value.id)
console.warn('Failed to release moderation lock for project:', projectId)
}
}
emit('exit')
}
async function retryAcquireLock() {
const result = await moderationStore.acquireLock(projectV2.value.id)
const projectId = projectV2.value?.id
if (!projectId) {
console.warn('[retryAcquireLock] No project ID available')
return
}
const result = await moderationStore.acquireLock(projectId)
if (result.success) {
handleLockAcquired()
@@ -790,6 +796,8 @@ async function maintainPrefetchQueue() {
if (isPrefetching.value) return
if (!moderationStore.isQueueMode) return
const currentProjectId = projectV2.value?.id
isPrefetching.value = true
try {
@@ -798,7 +806,9 @@ async function maintainPrefetchQueue() {
prefetchQueue.value = prefetchQueue.value.filter((p) => now - p.validatedAt < PREFETCH_STALE_MS)
// 2. Remove entries for current project
prefetchQueue.value = prefetchQueue.value.filter((p) => p.projectId !== projectV2.value.id)
if (currentProjectId) {
prefetchQueue.value = prefetchQueue.value.filter((p) => p.projectId !== currentProjectId)
}
// 3. If queue is full enough, exit early
if (prefetchQueue.value.length >= PREFETCH_TARGET_COUNT) {
@@ -808,7 +818,7 @@ async function maintainPrefetchQueue() {
// 4. Get remaining queue items (excluding current and already prefetched)
const prefetchedIds = new Set(prefetchQueue.value.map((p) => p.projectId))
const queueItems = [...moderationStore.currentQueue.items]
const currentIndex = queueItems.indexOf(projectV2.value.id)
const currentIndex = currentProjectId ? queueItems.indexOf(currentProjectId) : -1
const remainingItems =
currentIndex >= 0 ? queueItems.slice(currentIndex + 1) : queueItems.slice(1)
@@ -873,7 +883,11 @@ const MAX_SKIP_ATTEMPTS = 10
async function skipToNextProject() {
// Skip the current project
const currentProjectId = projectV2.value.id
const currentProjectId = projectV2.value?.id
if (!currentProjectId) {
console.warn('[skipToNextProject] No current project ID, aborting')
return
}
debug('[skipToNextProject] Starting. Current project:', currentProjectId)
debug('[skipToNextProject] Queue before complete:', [...moderationStore.currentQueue.items])
@@ -1822,16 +1836,30 @@ function generateModpackMessage(allFiles: {
const hasNextProject = ref(false)
async function sendMessage(status: ProjectStatus) {
// Capture project data upfront to avoid null issues during async operations
const projectId = projectV2.value?.id
const threadId = projectV2.value?.thread_id
const projectType = projectV2.value?.project_type
if (!projectId) {
addNotification({
title: 'Error submitting moderation',
text: 'Project data unavailable. Please try again.',
type: 'error',
})
return
}
try {
await useBaseFetch(`project/${projectV2.value.id}`, {
await useBaseFetch(`project/${projectId}`, {
method: 'PATCH',
body: {
status,
},
})
if (message.value) {
await useBaseFetch(`thread/${projectV2.value.thread_id}`, {
if (message.value && threadId) {
await useBaseFetch(`thread/${threadId}`, {
method: 'POST',
body: {
body: {
@@ -1842,10 +1870,7 @@ async function sendMessage(status: ProjectStatus) {
})
}
if (
projectV2.value.project_type === 'modpack' &&
Object.keys(modpackJudgements.value).length > 0
) {
if (projectType === 'modpack' && Object.keys(modpackJudgements.value).length > 0) {
await useBaseFetch(`moderation/project`, {
internal: true,
method: 'POST',
@@ -1853,12 +1878,16 @@ async function sendMessage(status: ProjectStatus) {
})
}
const willHaveNext = moderationStore.completeCurrentProject(projectId, 'completed')
moderationStore.releaseLock(projectId).catch((err) => {
console.warn('Failed to release lock:', err)
})
// Set both states together - hasNextProject MUST be set before done
// to avoid the race condition where done=true renders with hasNextProject=false
hasNextProject.value = willHaveNext
done.value = true
// Release the lock after successful submission
await moderationStore.releaseLock(projectV2.value.id)
hasNextProject.value = moderationStore.completeCurrentProject(projectV2.value.id, 'completed')
} catch (error) {
console.error('Error submitting moderation:', error)
addNotification({
@@ -1900,7 +1929,7 @@ async function endChecklist(status?: string) {
if (!(await navigateToNextUnlockedProject())) {
// Fallback: batch check remaining projects with metadata
const remainingIds: string[] = []
const currentProjectId = projectV2.value.id
const currentProjectId = projectV2.value?.id
const queueItems = moderationStore.currentQueue.items
// Build list of remaining projects, excluding current
@@ -1971,10 +2000,21 @@ async function endChecklist(status?: string) {
}
async function skipCurrentProject() {
// Release the lock before skipping
await moderationStore.releaseLock(projectV2.value.id)
const projectId = projectV2.value?.id
if (!projectId) {
addNotification({
title: 'Error skipping project',
text: 'Project data unavailable. Please try again.',
type: 'error',
})
return
}
hasNextProject.value = moderationStore.completeCurrentProject(projectV2.value.id, 'skipped')
moderationStore.releaseLock(projectId).catch((err) => {
console.warn('Failed to release lock:', err)
})
hasNextProject.value = moderationStore.completeCurrentProject(projectId, 'skipped')
await endChecklist('skipped')
}
@@ -1,72 +0,0 @@
<template>
<div class="categories">
<slot />
<span
v-for="category in categoriesFiltered"
:key="category.name"
v-html="category.icon + formatCategory(category.name)"
/>
</div>
</template>
<script>
import { formatCategory } from '@modrinth/utils'
export default {
props: {
categories: {
type: Array,
default() {
return []
},
},
type: {
type: String,
required: true,
},
},
setup() {
const tags = useGeneratedState()
return { tags }
},
computed: {
categoriesFiltered() {
return this.tags.categories
.concat(this.tags.loaders)
.filter(
(x) =>
this.categories.includes(x.name) && (!x.project_type || x.project_type === this.type),
)
},
},
methods: { formatCategory },
}
</script>
<style lang="scss" scoped>
.categories {
display: flex;
flex-direction: row;
flex-wrap: wrap;
:deep(span) {
display: flex;
align-items: center;
flex-direction: row;
&:not(:last-child) {
margin-right: var(--spacing-card-md);
}
&:not(.badge) {
color: var(--color-icon);
}
svg {
width: 1rem;
margin-right: 0.2rem;
}
}
}
</style>
@@ -132,17 +132,23 @@
:loader="'Vanilla'"
class="size-5 flex-none"
/>
<svg
v-else
<component
:is="getLoaderIcon(filtersRef.selectedPlatforms[0])"
v-else-if="
filtersRef?.selectedPlatforms[0] && getLoaderIcon(filtersRef.selectedPlatforms[0])
"
class="size-5 flex-none"
v-html="tags.loaders.find((x) => x.name === filtersRef?.selectedPlatforms[0])?.icon"
></svg>
/>
<div class="w-full truncate text-left">
{{
filtersRef?.selectedPlatforms.length === 0
? 'All platforms'
: filtersRef?.selectedPlatforms.map((x) => formatCategory(x)).join(', ')
: filtersRef?.selectedPlatforms
.map((x) => {
return formatLoader(formatMessage, x)
})
.join(', ')
}}
</div>
</template>
@@ -242,6 +248,7 @@ import {
DropdownIcon,
ExternalIcon,
GameIcon,
getLoaderIcon,
LockOpenIcon,
XIcon,
} from '@modrinth/assets'
@@ -252,10 +259,12 @@ import {
Checkbox,
Combobox,
CopyCode,
formatLoader,
NewModal,
TagItem,
useVIntl,
} from '@modrinth/ui'
import TagItem from '@modrinth/ui/src/components/base/TagItem.vue'
import { formatCategory, formatVersionsForDisplay, type Mod, type Version } from '@modrinth/utils'
import { formatVersionsForDisplay, type Mod, type Version } from '@modrinth/utils'
import { computed, ref } from 'vue'
import Accordion from '~/components/ui/Accordion.vue'
@@ -265,6 +274,8 @@ import ContentVersionFilter, {
} from '~/components/ui/servers/ContentVersionFilter.vue'
import LoaderIcon from '~/components/ui/servers/icons/LoaderIcon.vue'
const { formatMessage } = useVIntl()
const props = defineProps<{
type: 'Mod' | 'Plugin'
loader: string
@@ -424,7 +435,7 @@ const formattedVersions = computed(() => {
if (secondLoaderPosition === -1) return -1
return firstLoaderPosition - secondLoaderPosition
})
.map((loader: string) => formatCategory(loader)),
.map((loader: string) => formatLoader(formatMessage, loader)),
}
})
@@ -19,7 +19,7 @@
Platform
</slot>
<template #option="{ option }">
{{ formatCategory(option) }}
{{ formatLoader(formatMessage, String(option)) }}
</template>
<template v-if="hasAnyUnsupportedPlatforms" #footer>
<Checkbox
@@ -58,12 +58,15 @@
<script setup lang="ts">
import { FilterIcon } from '@modrinth/assets'
import { formatLoader, useVIntl } from '@modrinth/ui'
import Checkbox from '@modrinth/ui/src/components/base/Checkbox.vue'
import ManySelect from '@modrinth/ui/src/components/base/ManySelect.vue'
import { formatCategory, type GameVersionTag, type Version } from '@modrinth/utils'
import type { GameVersionTag, Version } from '@modrinth/utils'
import { computed, ref } from 'vue'
import { useRoute } from 'vue-router'
const { formatMessage } = useVIntl()
export type ListedGameVersion = {
name: string
release: boolean
@@ -119,7 +122,7 @@ const hasOnlyUnsupportedPlatforms = computed(() => {
const showSupportedPlatformsOnly = ref(true)
const filterOptions = computed(() => {
const filterOptions = computed<Record<'gameVersion' | 'platform', string[]>>(() => {
const filters: Record<'gameVersion' | 'platform', string[]> = {
gameVersion: [],
platform: [],
@@ -32,12 +32,7 @@
<label class="w-full text-lg font-bold text-contrast" for="modpack-hard-reset">
Erase all data
</label>
<input
id="modpack-hard-reset"
v-model="hardReset"
class="switch stylized-toggle shrink-0"
type="checkbox"
/>
<Toggle id="modpack-hard-reset" v-model="hardReset" class="shrink-0" />
</div>
<div>
If enabled, existing mods, worlds, and configurations, will be deleted before installing
@@ -69,7 +64,7 @@
<script setup lang="ts">
import { DownloadIcon, XIcon } from '@modrinth/assets'
import { ButtonStyled, Combobox, injectNotificationManager, NewModal } from '@modrinth/ui'
import { ButtonStyled, Combobox, injectNotificationManager, NewModal, Toggle } from '@modrinth/ui'
import { ModrinthServersFetchError } from '@modrinth/utils'
import type { ModrinthServer } from '~/composables/servers/modrinth-servers.ts'
@@ -158,9 +153,3 @@ const hide = () => modal.value?.hide()
defineExpose({ show, hide })
</script>
<style scoped>
.stylized-toggle:checked::after {
background: var(--color-accent-contrast) !important;
}
</style>
@@ -53,12 +53,7 @@
<label class="w-full text-lg font-bold text-contrast" for="hard-reset">
Erase all data
</label>
<input
id="hard-reset"
v-model="hardReset"
class="switch stylized-toggle shrink-0"
type="checkbox"
/>
<Toggle id="hard-reset" v-model="hardReset" class="shrink-0" />
</div>
<div>
Removes all data on your server, including your worlds, mods, and configuration
@@ -128,6 +123,7 @@ import {
ButtonStyled,
injectNotificationManager,
NewModal,
Toggle,
} from '@modrinth/ui'
import { ModrinthServersFetchError } from '@modrinth/utils'
import { onMounted, onUnmounted } from 'vue'
@@ -255,9 +251,3 @@ const hide = () => mrpackModal.value?.hide()
defineExpose({ show, hide })
</script>
<style scoped>
.stylized-toggle:checked::after {
background: var(--color-accent-contrast) !important;
}
</style>
@@ -143,12 +143,7 @@
<label class="w-full text-lg font-bold text-contrast" for="hard-reset">
Erase all data
</label>
<input
id="hard-reset"
v-model="hardReset"
class="switch stylized-toggle shrink-0"
type="checkbox"
/>
<Toggle id="hard-reset" v-model="hardReset" class="shrink-0" />
</div>
<div>
Removes all data on your server, including your worlds, mods, and configuration files,
@@ -542,9 +537,3 @@ const hide = () => versionSelectModal.value?.hide()
defineExpose({ show, hide })
</script>
<style scoped>
.stylized-toggle:checked::after {
background: var(--color-accent-contrast) !important;
}
</style>
@@ -274,10 +274,6 @@ watch(
</script>
<style scoped>
.stylized-toggle:checked::after {
background: var(--color-accent-contrast) !important;
}
.button-base:active {
scale: none !important;
}
@@ -1,22 +1,15 @@
<template>
<div v-if="loaderData?.icon" v-html="loaderData.icon" />
<component :is="icon" v-if="icon" />
<LoaderIcon v-else />
</template>
<script setup lang="ts">
import { LoaderIcon } from '@modrinth/assets'
import { getLoaderIcon, LoaderIcon } from '@modrinth/assets'
import { computed } from 'vue'
import { useGeneratedState } from '~/composables/generated'
const props = defineProps<{
loader: string
}>()
const tags = useGeneratedState()
// Find the loader by name (case-insensitive comparison)
const loaderData = computed(() =>
tags.value.loaders.find((l) => l.name.toLowerCase() === props.loader.toLowerCase()),
)
const icon = computed(() => getLoaderIcon(props.loader))
</script>
@@ -10,12 +10,14 @@
<MedalIcon class="h-8 w-auto text-contrast md:h-10" />
<div class="flex flex-col items-start gap-1">
<span>
Try a free
<span class="text-medal-orange">3GB server</span> for 5 days powered by
<span class="text-medal-orange">Medal</span>
<IntlFormatted :message-id="messages.info">
<template #orange="{ children }">
<span class="text-medal-orange"><component :is="() => children" /></span>
</template>
</IntlFormatted>
</span>
<span class="text-xs font-medium text-secondary md:text-sm">
Limited-time offer. No credit card required. Available for US servers.
{{ formatMessage(messages.textSecondary) }}
</span>
</div>
</div>
@@ -23,7 +25,7 @@
<nuxt-link
to="https://medal.tv/modrinth"
class="z-10 flex w-full items-center justify-center gap-1 md:mt-0 md:w-auto"
>Learn more <ExternalIcon
>{{ formatMessage(messages.learnMoreButton) }} <ExternalIcon
/></nuxt-link>
</ButtonStyled>
</div>
@@ -31,9 +33,33 @@
<script lang="ts" setup>
import { ExternalIcon } from '@modrinth/assets'
import { ButtonStyled, MedalBackgroundImage } from '@modrinth/ui'
import {
ButtonStyled,
defineMessages,
IntlFormatted,
MedalBackgroundImage,
useVIntl,
} from '@modrinth/ui'
import MedalIcon from '~/assets/images/illustrations/medal_icon.svg?component'
const { formatMessage } = useVIntl()
const messages = defineMessages({
info: {
id: 'hosting-marketing.medal.info',
defaultMessage:
'Try a free <orange>3GB server</orange> for 5 days powered by <orange>Medal</orange>',
},
textSecondary: {
id: 'hosting-marketing.medal.text-secondary',
defaultMessage: 'Limited-time offer. No credit card required. Available for US servers.',
},
learnMoreButton: {
id: 'hosting-marketing.medal.learn-more',
defaultMessage: 'Learn more',
},
})
</script>
<style scoped lang="scss">
@@ -1,6 +1,6 @@
<script setup lang="ts">
import type { MessageDescriptor } from '@modrinth/ui'
import { ButtonStyled, defineMessage, ServersSpecs, useVIntl } from '@modrinth/ui'
import { ButtonStyled, defineMessage, defineMessages, ServersSpecs, useVIntl } from '@modrinth/ui'
import { formatPrice } from '@modrinth/utils'
const { formatMessage, locale } = useVIntl()
@@ -11,6 +11,17 @@ const emit = defineEmits<{
type Plan = 'small' | 'medium' | 'large'
const messages = defineMessages({
outOfStock: {
id: 'hosting.plan.out-of-stock',
defaultMessage: 'Out of stock',
},
selectPlanButton: {
id: 'hosting.plan.select-plan',
defaultMessage: 'Select plan',
},
})
const plans: Record<
Plan,
{
@@ -134,8 +145,12 @@ const billingMonths = computed(() => {
:type="plans[plan].mostPopular ? 'standard' : 'highlight-colored-text'"
size="large"
>
<span v-if="outOfStock" class="button-like disabled"> Out of Stock </span>
<button v-else @click="() => emit('select')">Select plan</button>
<span v-if="outOfStock" class="button-like disabled">{{
formatMessage(messages.outOfStock)
}}</span>
<button v-else @click="() => emit('select')">
{{ formatMessage(messages.selectPlanButton) }}
</button>
</ButtonStyled>
<ServersSpecs
:ram="ram"
@@ -323,6 +323,57 @@ export const scopeMessages = defineMessages({
},
})
export const scopeCategoryMessages = defineMessages({
categoryUserAccount: {
id: 'scopes.category.user-account',
defaultMessage: 'User account',
},
categoryProjects: {
id: 'scopes.category.projects',
defaultMessage: 'Projects',
},
categoryVersions: {
id: 'scopes.category.versions',
defaultMessage: 'Versions',
},
categoryCollections: {
id: 'scopes.category.collections',
defaultMessage: 'Collections',
},
categoryOrganizations: {
id: 'scopes.category.organizations',
defaultMessage: 'Organizations',
},
categoryReports: {
id: 'scopes.category.reports',
defaultMessage: 'Reports',
},
categoryThreads: {
id: 'scopes.category.threads',
defaultMessage: 'Threads',
},
categoryPats: {
id: 'scopes.category.pats',
defaultMessage: 'PATs',
},
categorySessions: {
id: 'scopes.category.sessions',
defaultMessage: 'Sessions',
},
categoryNotifications: {
id: 'scopes.category.notifications',
defaultMessage: 'Notifications',
},
categoryPayouts: {
id: 'scopes.category.payouts',
defaultMessage: 'Payouts',
},
categoryAnalytics: {
id: 'scopes.category.analytics',
defaultMessage: 'Analytics',
},
})
const scopeDefinitions = [
{
id: 'USER_READ_EMAIL',
@@ -0,0 +1,52 @@
import type { AbstractModrinthClient } from '@modrinth/api-client'
const STALE_TIME = 1000 * 60 * 5 // 5 minutes
export const projectQueryOptions = {
v2: (projectId: string, client: AbstractModrinthClient) => ({
queryKey: ['project', 'v2', projectId] as const,
queryFn: () => client.labrinth.projects_v2.get(projectId),
staleTime: STALE_TIME,
}),
v3: (projectId: string, client: AbstractModrinthClient) => ({
queryKey: ['project', 'v3', projectId] as const,
queryFn: () => client.labrinth.projects_v3.get(projectId),
staleTime: STALE_TIME,
}),
members: (projectId: string, client: AbstractModrinthClient) => ({
queryKey: ['project', projectId, 'members'] as const,
queryFn: () => client.labrinth.projects_v3.getMembers(projectId),
staleTime: STALE_TIME,
}),
dependencies: (projectId: string, client: AbstractModrinthClient) => ({
queryKey: ['project', projectId, 'dependencies'] as const,
queryFn: () => client.labrinth.projects_v2.getDependencies(projectId),
staleTime: STALE_TIME,
}),
versionsV2: (projectId: string, client: AbstractModrinthClient) => ({
queryKey: ['project', projectId, 'versions', 'v2'] as const,
queryFn: () =>
client.labrinth.versions_v3.getProjectVersions(projectId, { include_changelog: false }),
staleTime: STALE_TIME,
}),
versionsV3: (projectId: string, client: AbstractModrinthClient) => ({
queryKey: ['project', projectId, 'versions', 'v3'] as const,
queryFn: () =>
client.labrinth.versions_v3.getProjectVersions(projectId, {
include_changelog: false,
apiVersion: 3,
}),
staleTime: STALE_TIME,
}),
organization: (projectId: string, client: AbstractModrinthClient) => ({
queryKey: ['project', projectId, 'organization'] as const,
queryFn: () => client.labrinth.projects_v3.getOrganization(projectId),
staleTime: STALE_TIME,
}),
}
@@ -0,0 +1,14 @@
import type { QueryClient } from '@tanstack/vue-query'
import { useQueryClient } from '@tanstack/vue-query'
import { getCurrentInstance } from 'vue'
export function useAppQueryClient(): QueryClient {
// In components, use the standard composable
if (getCurrentInstance()) {
return useQueryClient()
}
// In middleware/server context, use the provided instance
const nuxtApp = useNuxtApp()
return nuxtApp.$queryClient as QueryClient
}
@@ -14,6 +14,8 @@ export function createMultiFileDetectors(
return {
// Legacy texture pack (pre-1.6.1)
legacyTexturePack: async (zip: JSZip): Promise<InferredVersionInfo | null> => {
if (!rawFile.name.endsWith('.zip')) return null
const packTxt = zip.file('pack.txt')
if (!packTxt) return null
+1 -5
View File
@@ -470,7 +470,7 @@
<CurrencyIcon aria-hidden="true" /> {{ formatMessage(messages.revenue) }}
</template>
<template #analytics>
<ChartIcon aria-hidden="true" /> {{ formatMessage(messages.analytics) }}
<ChartIcon aria-hidden="true" /> {{ formatMessage(commonMessages.analyticsButton) }}
</template>
<template #moderation>
<ScaleIcon aria-hidden="true" /> {{ formatMessage(commonMessages.moderationLabel) }}
@@ -899,10 +899,6 @@ const messages = defineMessages({
id: 'layout.nav.revenue',
defaultMessage: 'Revenue',
},
analytics: {
id: 'layout.nav.analytics',
defaultMessage: 'Analytics',
},
activeReports: {
id: 'layout.nav.active-reports',
defaultMessage: 'Active reports',
+74 -47
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "تنزيل RPM"
},
"app-marketing.download.flathub": {
"message": "احصل عليها من Flathub"
},
"app-marketing.download.linux": {
"message": "لينكس"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "خلال تنزيل Modrinth App فإنك توافق على <terms-link>الشروط</terms-link> و <privacy-link>سياسة الخصوصية</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "حزم الطرف الثالث"
},
"app-marketing.download.title": {
"message": "تنزيل Modrinth App (النسخة التجريبية)"
},
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "المزيد من خيارات التنزيل"
},
"app-marketing.hide-other-packages": {
"message": "إخفاء الحزم الأخري"
},
"app-marketing.not-recommended": {
"message": "لا ننصح باستخدام هؤلاء إذا لا تعلم ماذا تفعل."
},
"app-marketing.show-other-packages": {
"message": "إظهار الحزم الأخري"
},
"auth.authorize.action.authorize": {
"message": "سماح"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "أدخل بريدك الإلكتروني في الحقل بالأسفل، وسنرسل لك رابطًا لاستعادة حسابك."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "البريد الإلكتروني أو اسم المستخدم"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "البريد الإلكتروني"
},
"auth.reset-password.notification.email-sent.text": {
"message": "تم إرسال بريد يحتوي على التعليمات إليك، إذا كان بريدك الإلكتروني محفوظًا مسبقًا في حسابك."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>هل نسيت كلمة المرور؟</forgot-password-link> • <create-account-link>إنشاء حساب</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "البريد الإلكتروني أو اسم المستخدم"
},
"auth.sign-in.password.label": {
"message": "كلمة المرور"
},
"auth.sign-in.sign-in-with": {
"message": "تسجيل الدخول باستخدام"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "إنشاء حساب"
},
"auth.sign-up.confirm-password.label": {
"message": "تأكيد كلمة المرور"
},
"auth.sign-up.email.label": {
"message": "البريد الإلكتروني"
},
"auth.sign-up.label.username": {
"message": "اسم المستخدم"
},
"auth.sign-up.legal-dislaimer": {
"message": "بإنشائك حسابًا، فإنك توافق على <terms-link>شروط مودرنث</terms-link> و<privacy-policy-link>سياسة الخصوصية</privacy-policy-link> الخاصة بها."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "كلمتا المرور غير متطابقتين!"
},
"auth.sign-up.password.label": {
"message": "كلمة المرور"
},
"auth.sign-up.sign-in-option.title": {
"message": "هل لديك حساب بالفعل؟"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "إعدادات الحساب"
},
"auth.verify-email.action.sign-in": {
"message": "تسجيل الدخول"
},
"auth.verify-email.already-verified.description": {
"message": "تم توثيق بريدك الإلكتروني مسبقًا!"
},
@@ -383,6 +365,9 @@
"collection.button.unfollow-project": {
"message": "إلغاء متابعة المشروع"
},
"collection.delete-modal.description": {
"message": "هذا سوف يحذف هذه المجموعة بشكل دائم. لا يمكن التراجع في هذا التصرف."
},
"collection.delete-modal.title": {
"message": "هل أنت متأكد أنك تريد حذف هذه المجموعة؟"
},
@@ -392,6 +377,9 @@
"collection.description.following": {
"message": "مجموعة تم إنشاؤها تلقائيًا تضمّ جميع المشاريع التي تتابعها."
},
"collection.editing": {
"message": "تعديل المجموعة"
},
"collection.error.not-found": {
"message": "لم يتم العثور على المجموعة"
},
@@ -401,20 +389,23 @@
"collection.label.curated-by": {
"message": "من إعداد"
},
"collection.label.no-projects": {
"message": "لا توجد مشروعات في هذه المجموعة حتي الآن"
},
"collection.label.updated-at": {
"message": "تم التحديث منذ {ago}"
},
"collection.return-link.dashboard-collections": {
"message": "مجموعاتك"
},
"collection.return-link.user": {
"message": "الحساب الخاص ب {user}"
},
"collection.title": {
"message": "{name} - مجموعة"
},
"common.no": {
"message": "لا"
},
"common.yes": {
"message": "نعم"
},
"create.collection.cancel": {
"message": "إلغاء"
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "الملفات التكميلية تستخدم لدعم الموارد مثل كود المصدر، وليس للإصدارات أو الأنواع البديلة."
},
"create.collection.collection-info": {
"message": "سيتم إنشاء مجموعتك الجديدة كمجموعة عامة تحتوي على {count, plural,\n one {# مشروع}\n other {# مشاريع}\n}."
@@ -422,9 +413,6 @@
"create.collection.create-collection": {
"message": "إنشاء مجموعة"
},
"create.collection.error-title": {
"message": "حدث خطأ"
},
"create.collection.name-label": {
"message": "الاسم"
},
@@ -476,18 +464,57 @@
"create.limit-alert.type-project": {
"message": "مشروع"
},
"create.organization.cancel": {
"message": "إلغاء"
},
"create.organization.create-organization": {
"message": "إنشاء مؤسسة"
},
"create.organization.error-title": {
"message": "حدث خطأ"
},
"create.organization.name-label": {
"message": ""
},
"create.organization.name-placeholder": {
"message": "أدخل اسم المنظمة..."
},
"create.organization.ownership-info": {
"message": "سوف تكون مالك هذه المنظمة, لكن يمكنك بدعوة أعضاء آخرين و تحويل حالة الملكية في أي وقت."
},
"create.organization.summary-description": {
"message": "جملة أو جملتان تصف مجموعتك."
},
"create.organization.summary-label": {
"message": "الملخص"
},
"create.organization.summary-placeholder": {
"message": "منظمة ل..."
},
"create.organization.title": {
"message": "إنشاء منظمة"
},
"create.organization.url-label": {
"message": "عنوان URL"
},
"create.project.create-project": {
"message": "إنشاء مشروع"
},
"create.project.name-label": {
"message": "الإسم"
},
"create.project.name-placeholder": {
"message": "أدخل اسم المشروع..."
},
"create.project.summary-description": {
"message": "جملة أو جملتان تصف مجموعتك."
},
"create.project.summary-label": {
"message": "الملخص"
},
"create.project.summary-placeholder": {
"message": "هذا المشروع يضيف..."
},
"create.project.title": {
"message": "إنشاء مشروع"
},
"create.project.url-label": {
"message": "عنوان URL"
},
"error.collection.404.list_item.3": {
"message": "قد تكون هذه المجموعة قد أزالها فريق مراقبة مودرنث لانتهاك <tou-link>شروط الاستخدام</tou-link> الخاصة بنا."
},
+47 -119
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "Stáhnout RPM"
},
"app-marketing.download.flathub": {
"message": "Získat na Flathub"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "Stažením aplikace Modrinth souhlasíte s našimi <terms-link>Podmínkami</terms-link> a <privacy-link>Zásadami ochrany osobních údajů</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Balíčky třetích stran"
},
"app-marketing.download.title": {
"message": "Stáhnout Modrinth App (Beta)"
},
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "Více možností stáhnutí"
},
"app-marketing.hide-other-packages": {
"message": "Skrýt ostatní balíčky"
},
"app-marketing.not-recommended": {
"message": "Nedoporučujeme tyto možnosti používat, pokud přesně nevíte, co děláte."
},
"app-marketing.show-other-packages": {
"message": "Zobrazit další balíčky"
},
"auth.authorize.action.authorize": {
"message": "Schválit"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Zadejte svůj e-mail níže a my vám pošleme odkaz, abyste mohli obnovit heslo k svému účtu."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "E-mail nebo uživatelské jméno"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "E-mail"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Byl vám zaslán e-mail s pokyny, pokud byl e-mail dříve uložen na váš účet."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Zapomněli jste heslo?</forgot-password-link> • <create-account-link>Vytvořte si účet</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "E-mail nebo uživatelské jméno"
},
"auth.sign-in.password.label": {
"message": "Heslo"
},
"auth.sign-in.sign-in-with": {
"message": "Přihlášte se pomocí"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Vytvořte účet"
},
"auth.sign-up.confirm-password.label": {
"message": "Potvrďte heslo"
},
"auth.sign-up.email.label": {
"message": "E-mail"
},
"auth.sign-up.label.username": {
"message": "Uživatelské jméno"
},
"auth.sign-up.legal-dislaimer": {
"message": "Vytvořením účtu souhlasíte s <terms-link>Podmínkami</terms-link> a <privacy-policy-link>Zásadami ochrany osobních údajů</privacy-policy-link> Modrinthu."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Hesla se neshodují!"
},
"auth.sign-up.password.label": {
"message": "Heslo"
},
"auth.sign-up.sign-in-option.title": {
"message": "Již máte účet?"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Nastavení účtu"
},
"auth.verify-email.action.sign-in": {
"message": "Přihlásit se"
},
"auth.verify-email.already-verified.description": {
"message": "E-mail je již ověřen!"
},
@@ -407,15 +389,12 @@
"collection.label.curated-by": {
"message": "Kurátor"
},
"collection.label.description": {
"message": "Popis"
},
"collection.label.details": {
"message": "Podrobnosti"
},
"collection.label.no-projects": {
"message": "Zatím žádné projekty v kolekci"
},
"collection.label.projects-count": {
"message": "{count, plural, =0 {Zatím žádné projektyt} one {<stat>{count}</stat> projekt} other {<stat>{count}</stat> {type}}}"
},
"collection.label.updated-at": {
"message": "Aktualizováno {ago}"
},
@@ -428,14 +407,8 @@
"collection.title": {
"message": "{name} - Kolekce"
},
"common.no": {
"message": "Ne"
},
"common.yes": {
"message": "Ano"
},
"create.collection.cancel": {
"message": "Zrušit"
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Doplňkové soubory slouží jako podpůrné materiály (např. zdrojový kód), ne jako alternativní verze či varianty."
},
"create.collection.collection-info": {
"message": "Tvá nová kolekce bude vytvořena jako veřejná a bude obsahovat {count, plural, =0 {žádné projekty} one {# projekt} few {# projekty} other {# projektů}}."
@@ -443,9 +416,6 @@
"create.collection.create-collection": {
"message": "Vytvořit kolekci"
},
"create.collection.error-title": {
"message": "Došlo k chybě"
},
"create.collection.name-label": {
"message": "Název"
},
@@ -458,18 +428,27 @@
"create.collection.summary-label": {
"message": "Souhrn"
},
"create.collection.summary-placeholder": {
"message": "Toto je sbírka..."
},
"create.collection.title": {
"message": "Vytvořit kolekci"
},
"create.limit-alert.approaching-limit": {
"message": "Přibližujete se {type} limitu ({current}/{max})"
},
"create.limit-alert.approaching-limit-description": {
"message": "Blížíte se k limitu {type}. Pokud potřebujete více než {max} {typePlural}, kontaktujte prosím podporu."
},
"create.limit-alert.contact-support": {
"message": "Kontaktujte podporu"
},
"create.limit-alert.limit-reached": {
"message": "limit {type} byl dosažen"
},
"create.limit-alert.limit-reached-description": {
"message": "Dosáhli jste svého limitu {type} ({max}). Pro navýšení limitu kontaktujte podporu."
},
"create.limit-alert.type-collection": {
"message": "kolekce"
},
@@ -488,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "projekt"
},
"create.organization.cancel": {
"message": "Zrušit"
},
"create.organization.create-organization": {
"message": "Vytvořit organizaci"
},
"create.organization.error-title": {
"message": "Došlo k chybě"
},
"create.organization.name-label": {
"message": "Název"
},
@@ -521,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Zrušit"
},
"create.project.create-project": {
"message": "Vytvořit projekt"
},
"create.project.error-title": {
"message": "Došlo k chybě"
},
"create.project.name-label": {
"message": "Název"
},
@@ -554,9 +521,6 @@
"create.project.visibility-description": {
"message": "Viditelnost vašeho projektu poté co bude schválena."
},
"create.project.visibility-label": {
"message": "Viditelnost"
},
"create.project.visibility-private": {
"message": "Soukromé"
},
@@ -575,6 +539,9 @@
"dashboard.affiliate-links.header": {
"message": "Vaše affiliate odkazy"
},
"dashboard.affiliate-links.revoke-confirm.body": {
"message": "Tímto trvale zrušíte partnerský kód {id} a všechny již sdílené odkazy s tímto kódem přestanou být platné."
},
"dashboard.affiliate-links.revoke-confirm.button": {
"message": "Odvolat"
},
@@ -617,6 +584,12 @@
"dashboard.creator-withdraw-modal.muralpay-details.document-number-passport": {
"message": "Číslo vašeho pasu"
},
"dashboard.creator-withdraw-modal.muralpay-details.document-number-ruc-placeholder": {
"message": "Zadejte číslo RUC"
},
"dashboard.creator-withdraw-modal.muralpay-details.document-number-tax-id-placeholder": {
"message": "Zadejte DIČ"
},
"dashboard.creator-withdraw-modal.paypal-details.account": {
"message": "Účet"
},
@@ -629,15 +602,6 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-account": {
"message": "PayPal účet"
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Uložit"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Uloženo"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Podrobnosti"
},
"dashboard.creator-withdraw-modal.tremendous-details.reward": {
"message": "Odměna"
},
@@ -647,9 +611,21 @@
"dashboard.creator-withdraw-modal.tremendous-details.unverified-email-header": {
"message": "Neověřený email"
},
"dashboard.creator-withdraw-modal.withdraw-limit-used": {
"message": "Vyčerpali jste svůj limit pro výběr <b>{withdrawLimit}</b>. Pro vyšší výběr musíte vyplnit daňový formulář."
},
"dashboard.revenue.available-now": {
"message": "K dispozici nyní"
},
"dashboard.revenue.estimated-with-date": {
"message": "Odhadováno {date}"
},
"dashboard.revenue.stats.transactions": {
"message": "Transakce"
},
"dashboard.revenue.transactions.btn.download-csv": {
"message": "Stáhnout jako CSV"
},
"dashboard.withdraw.completion.account": {
"message": "Účet"
},
@@ -749,12 +725,6 @@
"frog.altText": {
"message": "Fotorealistické vyobrazení žabího labyrintu"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} další člověk byl také ožaben!} few {{count} další lidi byli také ožabeni!} other {{count} dalších lidí bylo také ožabeno!}}"
},
"frog.sinceOpened": {
"message": "Tato stránka byla otevřena {ago}"
},
"frog.title": {
"message": "Žába"
},
@@ -779,15 +749,6 @@
"landing.notifications.heading": {
"message": "Oznámení"
},
"landing.search.label": {
"message": "Hledat"
},
"landing.search.placeholder": {
"message": "Hledat..."
},
"landing.search.sort-by.label": {
"message": "Seřadit podle"
},
"landing.section.for-players.label": {
"message": "Pro hráče"
},
@@ -932,9 +893,6 @@
"layout.meta.og-description": {
"message": "Objevte a publikujte obsah Minecraftu!"
},
"layout.nav.analytics": {
"message": "Analytika"
},
"layout.nav.get-modrinth-app": {
"message": "Stáhnout Modrinth aplikaci"
},
@@ -962,9 +920,6 @@
"layout.nav.search": {
"message": "Hledat"
},
"moderation.filter.by": {
"message": "Filtrovat"
},
"moderation.moderate": {
"message": "Moderace"
},
@@ -977,12 +932,6 @@
"moderation.page.technicalReview": {
"message": "Technické hodnocení"
},
"moderation.search.placeholder": {
"message": "Hledat..."
},
"moderation.sort.by": {
"message": "Řadit podle"
},
"muralpay.country.at": {
"message": "Rakousko"
},
@@ -1061,9 +1010,6 @@
"profile.label.badges": {
"message": "Odznaky"
},
"profile.label.details": {
"message": "Detaily"
},
"profile.label.no-collections": {
"message": "Tento uživatel nemá žádné kolekce!"
},
@@ -1082,9 +1028,6 @@
"profile.label.saving": {
"message": "Ukládání..."
},
"profile.label.yes": {
"message": "Ano"
},
"profile.meta.description": {
"message": "Stáhněte si projekty od {username} na Modrinthu"
},
@@ -1097,15 +1040,6 @@
"profile.user-id": {
"message": "ID uživatele: {id}"
},
"project-member-header.accept": {
"message": "Přijato"
},
"project-member-header.decline": {
"message": "Zamítnout"
},
"project-member-header.error": {
"message": "Chyba"
},
"project-member-header.error-decline": {
"message": "Nepodařilo se zamítnout pozvánku do týmu"
},
@@ -1118,9 +1052,6 @@
"project-member-header.invitation-title": {
"message": "Pozvánka připojit se k projektu"
},
"project-member-header.success": {
"message": "Úspěch"
},
"project-member-header.success-decline": {
"message": "Odmítli jste pozvánku do týmu"
},
@@ -1432,8 +1363,5 @@
},
"settings.profile.profile-picture.title": {
"message": "Profilový obrázek"
},
"settings.profile.username.title": {
"message": "Uživatelské jméno"
}
}
+405 -54
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "Download RPM'en"
},
"app-marketing.download.flathub": {
"message": "Få det på Flathub"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "Ved at download Modrinth du acceptere vores <terms-link>servicevilkår</terms-link> og <privacy-link>privatlivspolitik</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Tredjepartspakker"
},
"app-marketing.download.title": {
"message": "Download Modrinth (Beta)"
},
@@ -191,9 +191,21 @@
"app-marketing.hero.download-modrinth-app-for-os": {
"message": "Hent Modrinth Appen til {os}"
},
"app-marketing.hero.minecraft-screenshot-alt": {
"message": "Skærmbilleder af Cobblemon instance'ens primære menu skærm."
},
"app-marketing.hero.more-download-options": {
"message": "Flere Download Muligheder"
},
"app-marketing.hide-other-packages": {
"message": "Gem andre pakker"
},
"app-marketing.not-recommended": {
"message": "Vi opfordre ikke du bruger disse medmindre du ved hvad du gør."
},
"app-marketing.show-other-packages": {
"message": "Vis andre pakker"
},
"auth.authorize.action.authorize": {
"message": "Godkend"
},
@@ -218,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Indtast din e-mail nedenfor, så sender vi et gendannelseslink, så du kan gendanne din konto."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "E-mail eller brugernavn"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "E-mail"
},
"auth.reset-password.notification.email-sent.text": {
"message": "En e-mail med instruktioner er blevet sendt til dig, hvis e-mailen tidligere er blevet gemt på din konto."
},
@@ -263,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Glemt adgangskode?</forgot-password-link> • <create-account-link>Opret en konto</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "E-mail eller brugernavn"
},
"auth.sign-in.password.label": {
"message": "Adgangskode"
},
"auth.sign-in.sign-in-with": {
"message": "Log ind med"
},
@@ -281,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Opret konto"
},
"auth.sign-up.confirm-password.label": {
"message": "Bekræft adgangskoden"
},
"auth.sign-up.email.label": {
"message": "E-mail"
},
"auth.sign-up.label.username": {
"message": "Brugernavn"
},
"auth.sign-up.legal-dislaimer": {
"message": "Ved at oprette en konto, accepterer du Modrinth's <terms-link>Vilkår</terms-link> og <privacy-policy-link>Privatlivspolitik</privacy-policy-link>."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Adgangskoderne er ikke ens!"
},
"auth.sign-up.password.label": {
"message": "Adgangskode"
},
"auth.sign-up.sign-in-option.title": {
"message": "Har du allerede en konto?"
},
@@ -317,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Kontoindstillinger"
},
"auth.verify-email.action.sign-in": {
"message": "Log ind"
},
"auth.verify-email.already-verified.description": {
"message": "Din e-mail er allerede bekræftet!"
},
@@ -350,27 +335,174 @@
"auth.welcome.checkbox.subscribe": {
"message": "Abonner på opdateringer om Modrinth"
},
"auth.welcome.description": {
"message": "Du er nu en del af det awesome fællesskab og skabere og udforskere der allerede bygger, downloader, og forbliver opdateret med fantastiske mods."
},
"auth.welcome.label.tos": {
"message": "Ved at oprette en konto, accepterer du Modrinth's <terms-link>Vilkår</terms-link> og <privacy-policy-link>Privatlivspolitik</privacy-policy-link>."
},
"auth.welcome.long-title": {
"message": "Velkommen til Modrinth!"
},
"auth.welcome.title": {
"message": "Velkommen"
},
"collection.button.edit-icon": {
"message": "Rediger ikon"
},
"collection.button.remove-icon": {
"message": "Fjern ikon"
},
"collection.button.remove-project": {
"message": "Slet projekt"
},
"create.collection.cancel": {
"message": "Annuller"
"collection.button.replace-icon": {
"message": "Udskift ikon"
},
"collection.button.select-icon": {
"message": "Vælg ikon"
},
"collection.button.unfollow-project": {
"message": "Stop med at følge projekt"
},
"collection.delete-modal.description": {
"message": "Dette vil permanent slette denne samlig. Dette vil ikke kunne blive fortydes."
},
"collection.delete-modal.title": {
"message": "Er du sikker på, at du vil slette denne samling?"
},
"collection.description": {
"message": "{description} - Se samlingen {name} af {username} på Modrinth"
},
"collection.description.following": {
"message": "Auto-genererede samling af alle de projekter, du følger."
},
"collection.editing": {
"message": "Redigere samling"
},
"collection.error.not-found": {
"message": "Samling ikke fundet"
},
"collection.label.created-at": {
"message": "Oprettet {ago}"
},
"collection.label.curated-by": {
"message": "Kurateret af"
},
"collection.label.no-projects": {
"message": "Ingen projekter i samlingen endnu"
},
"collection.label.updated-at": {
"message": "Opdateret {ago}"
},
"collection.return-link.dashboard-collections": {
"message": "Dine samlinger"
},
"collection.return-link.user": {
"message": "{user}'s profil"
},
"collection.title": {
"message": "{name} - samling"
},
"create.collection.collection-info": {
"message": "Din nye samling vil blive skabt som en offentlig samling med {count, plural, =0 {ingen projekter} one {# projekt} other {# projekter}}."
},
"create.collection.create-collection": {
"message": "Opret samling"
},
"create.collection.error-title": {
"message": "Der opstod en fejl"
},
"create.collection.name-label": {
"message": "Navn"
},
"create.collection.name-placeholder": {
"message": "Indtast samling navn..."
},
"create.collection.summary-description": {
"message": "En sætning eller to som beskriver din samling."
},
"create.collection.summary-label": {
"message": "Resumé"
},
"create.collection.summary-placeholder": {
"message": "Dette er en samling af..."
},
"create.collection.title": {
"message": "Opretter en samling"
},
"create.limit-alert.contact-support": {
"message": "Kontakt support"
},
"create.limit-alert.type-collection": {
"message": "samling"
},
"create.limit-alert.type-organization": {
"message": "organisation"
},
"create.limit-alert.type-plural-collection": {
"message": "samlinger"
},
"create.limit-alert.type-plural-organization": {
"message": "organisationer"
},
"create.limit-alert.type-plural-project": {
"message": "projekter"
},
"create.limit-alert.type-project": {
"message": "projekt"
},
"create.organization.create-organization": {
"message": "Opret organisation"
},
"create.organization.name-label": {
"message": "Navn"
},
"create.organization.name-placeholder": {
"message": "Indtast organisation navn..."
},
"create.organization.ownership-info": {
"message": "Du vil blive ejeren af denne organisation, men du kan invitere andre medlemmer og overføre ejerskabet på et hvert tidspunkt."
},
"create.organization.summary-description": {
"message": "En sætning eller to som beskriver din organisation."
},
"create.organization.summary-label": {
"message": "Resumé"
},
"create.organization.summary-placeholder": {
"message": "En organisation til..."
},
"create.organization.title": {
"message": "Opretter en organisation"
},
"create.organization.url-label": {
"message": "URL"
},
"create.project.create-project": {
"message": "Opret projekt"
},
"create.project.name-label": {
"message": "Navn"
},
"create.project.name-placeholder": {
"message": "Indtast projekt navn..."
},
"create.project.summary-description": {
"message": "En sætning eller to som beskriver dit projekt."
},
"create.project.summary-label": {
"message": "Resumé"
},
"create.project.summary-placeholder": {
"message": "Dette projekt tilføjer..."
},
"create.project.title": {
"message": "Opretter et projekt"
},
"create.project.url-label": {
"message": "URL"
},
"create.project.visibility-description": {
"message": "Dit projekts synlighed efter det er blevet godkendt."
},
"create.project.visibility-label": {
"message": "Synlighed"
},
"create.project.visibility-private": {
"message": "Privat"
},
@@ -389,6 +521,39 @@
"dashboard.affiliate-links.header": {
"message": "Dine affiliate links"
},
"dashboard.affiliate-links.revoke-confirm.body": {
"message": "Dette vil permanent fjerne partnerskabs-koden `{id}` og alle eksisterende links med denne kode some er blevet delt vil ikke længere være gyldig."
},
"dashboard.affiliate-links.revoke-confirm.button": {
"message": "Fjern"
},
"dashboard.affiliate-links.revoke-confirm.title": {
"message": "Er du sikker på du vil fjerne din \"{title}\" partnerskabs-link?"
},
"dashboard.affiliate-links.search": {
"message": "Søg partnerskabs-links..."
},
"dashboard.collections.button.create-new": {
"message": "Opret ny"
},
"dashboard.collections.label.projects-count": {
"message": "{count, plural, one {{count} projekt} other {{count} projekter}}"
},
"dashboard.collections.label.search-input": {
"message": "Søg dine samlinger"
},
"dashboard.collections.long-title": {
"message": "Dine samlinger"
},
"dashboard.creator-tax-form-modal.confirmation.download-button": {
"message": "Download {formType}"
},
"dashboard.creator-tax-form-modal.confirmation.success": {
"message": "Din {formType} skatte form er blevet indsendt!"
},
"dashboard.creator-tax-form-modal.entity.private-individual": {
"message": "Privat individ"
},
"dashboard.creator-tax-form-modal.security.description": {
"message": "Modrinth bruger tredjepartsudbyder Track1099 til sikkert at indsamle og opbevare dine skatteformularer. <security-link>Læs mere her.</security-link>"
},
@@ -398,6 +563,63 @@
"dashboard.creator-tax-form-modal.us-citizen.question": {
"message": "Er du amerikansk statsborger?"
},
"dashboard.creator-withdraw-modal.details-label": {
"message": "Detaljer"
},
"dashboard.creator-withdraw-modal.fee-breakdown-amount": {
"message": "Antal"
},
"dashboard.creator-withdraw-modal.fee-breakdown-fee": {
"message": "Gebyr"
},
"dashboard.creator-withdraw-modal.fee-breakdown-gift-card-value": {
"message": "Gavekort værdi"
},
"dashboard.creator-withdraw-modal.fee-breakdown-usd-equivalent": {
"message": "Tilsvarende i USD"
},
"dashboard.creator-withdraw-modal.kyc.private-individual": {
"message": "Privat individ"
},
"dashboard.creator-withdraw-modal.method-selection.country-placeholder": {
"message": "Vælg dit land"
},
"dashboard.creator-withdraw-modal.method-selection.country-search-placeholder": {
"message": "Søg lande..."
},
"dashboard.creator-withdraw-modal.method-selection.error-text": {
"message": "Kunne ikke hente gyldige betalingsmetoder. Venligst prøv igen senere."
},
"dashboard.creator-withdraw-modal.method-selection.error-title": {
"message": "Indlæsning af betalingsmetoder fejlede"
},
"dashboard.creator-withdraw-modal.method-selection.select-method": {
"message": "Vælg udbetalingsmetode"
},
"dashboard.creator-withdraw-modal.muralpay-details.account-owner": {
"message": "Konto ejer"
},
"dashboard.creator-withdraw-modal.muralpay-details.bank-account-owner": {
"message": "Bank konto ejer"
},
"dashboard.creator-withdraw-modal.muralpay-details.bank-account-owner-description": {
"message": "Indtast navnet af personen der er bemyndiget at bruge denne bank konto på firmaets vegne."
},
"dashboard.creator-withdraw-modal.muralpay-details.document-number-passport": {
"message": "Pas nummer"
},
"dashboard.creator-withdraw-modal.muralpay-details.document-number-passport-placeholder": {
"message": "Indtast pas nummer"
},
"dashboard.creator-withdraw-modal.paypal-details.account": {
"message": "Konto"
},
"dashboard.creator-withdraw-modal.paypal-details.disconnect-account": {
"message": "Fjern konto"
},
"dashboard.creator-withdraw-modal.paypal-details.payment-method": {
"message": "Betalingsmetode"
},
"dashboard.creator-withdraw-modal.paypal-details.paypal-account": {
"message": "PayPal konto"
},
@@ -416,14 +638,11 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Metode"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Kontooplysninger"
"dashboard.creator-withdraw-modal.tremendous-details.enter-amount-hint": {
"message": "Find gavekort omkring denne værdi."
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Verifikation"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Detaljer"
"dashboard.creator-withdraw-modal.tremendous-details.enter-denomination-placeholder": {
"message": "Indtast antal"
},
"dashboard.creator-withdraw-modal.tremendous-details.payment-method": {
"message": "Betalingsmetode"
@@ -440,6 +659,12 @@
"dashboard.creator-withdraw-modal.tremendous-details.search-amount-label": {
"message": "Antal søgte"
},
"dashboard.creator-withdraw-modal.tremendous-details.unverified-email-header": {
"message": "Ubekræftet email"
},
"dashboard.creator-withdraw-modal.tremendous-details.usd-paypal-warning-header": {
"message": "Lavere gebyr muligt"
},
"dashboard.creator-withdraw-modal.withdraw-button": {
"message": "Hæv"
},
@@ -452,6 +677,9 @@
"dashboard.revenue.balance": {
"message": "Saldo"
},
"dashboard.revenue.estimated-with-date": {
"message": "Anslået {date}"
},
"dashboard.revenue.processing": {
"message": "Behandler"
},
@@ -464,6 +692,9 @@
"dashboard.revenue.stats.withdrawn": {
"message": "Hævet"
},
"dashboard.revenue.transactions.btn.download-csv": {
"message": "Download som CSV"
},
"dashboard.revenue.transactions.header": {
"message": "Transaktioner"
},
@@ -476,24 +707,126 @@
"dashboard.revenue.withdraw.card.title": {
"message": "Hæv"
},
"dashboard.revenue.withdraw.header": {
"message": "Hæv"
},
"dashboard.withdraw.completion.account": {
"message": "Konto"
},
"dashboard.withdraw.completion.amount": {
"message": "Antal"
},
"dashboard.withdraw.completion.date": {
"message": "Dato"
},
"dashboard.withdraw.completion.fee": {
"message": "Gebyr"
},
"dashboard.withdraw.completion.method": {
"message": "Metode"
},
"dashboard.withdraw.completion.recipient": {
"message": "Modtager"
},
"dashboard.withdraw.completion.transactions-button": {
"message": "Transaktioner"
},
"dashboard.withdraw.completion.wallet": {
"message": "Pung"
},
"dashboard.withdraw.error.account-not-linked.title": {
"message": "Konto ikke tilknyttet"
},
"dashboard.withdraw.error.invalid-address.text": {
"message": "Adressen du angav kunne ikke blive bekræftet. Venligst tjek din adresse."
},
"dashboard.withdraw.error.invalid-address.title": {
"message": "Adresse bekræftigelse fejlede"
},
"dashboard.withdraw.error.minimum-not-met.title": {
"message": "Antal er for lavt"
},
"error.collection.404.list_item.1": {
"message": "Du har måske tastefejl i samlingen's URL."
},
"error.collection.404.list_item.2": {
"message": "Samlingen er måske privat."
},
"error.collection.404.list_item.3": {
"message": "Samlingen er måske blevet taget ned af Modrinth's moderatorteam for at være i strid imod vores <tou-link>Vilkår for brug</tou-link>."
},
"error.collection.404.list_title": {
"message": "Hvorfor?"
},
"error.collection.404.title": {
"message": "Samling ikke fundet"
},
"error.generic.404.subtitle": {
"message": "Siden du kigger efter ser ikke ud til at eksistere."
},
"error.generic.404.title": {
"message": "Side ikke fundet"
},
"error.generic.451.subtitle": {
"message": "Denne side er blevet blokeret af lovmæssige årsager, så som statscensur eller igangværende retssager."
},
"error.generic.451.title": {
"message": "Indholdet er ikke tilgængeligt af lovmæssige årsager"
},
"error.generic.default.list_item.1": {
"message": "Tjek om Modrinth er nede på vores <status-link>Status side</status-link>."
},
"error.generic.default.list_item.2": {
"message": "Hvis der bliver ved med at ske, kan du dele det Modrinth Team ved at join vores <discord-link>Discord server</discord-link>."
},
"error.generic.default.list_title": {
"message": "Venligst prøv igen om nogle minutter."
},
"error.generic.default.subtitle": {
"message": "Noget gik galt."
},
"error.generic.default.title": {
"message": "Åh nej!"
},
"error.organization.404.list_item.1": {
"message": "Du har måske tastefejl i organisationen's URL."
},
"error.organization.404.list_item.2": {
"message": "Organisationens ejer har måske ændret URL'en eller slettet den."
},
"error.organization.404.list_item.3": {
"message": "Organisationen er måske blevet taget ned af Modrinth's moderatorteam for at være i strid imod vores <tou-link>Vilkår for brug</tou-link>."
},
"error.organization.404.list_title": {
"message": "Hvorfor?"
},
"error.organization.404.title": {
"message": "Organisation ikke fundet"
},
"error.project.404.list_item.1": {
"message": "Du har måske tastefejl i projektet's URL."
},
"error.project.404.list_item.2": {
"message": "Projektets ejer har måske ændret URL'en, lavet projektet privat, eller slettet den."
},
"error.project.404.list_item.3": {
"message": "Projektet er måske blevet taget ned af Modrinth's moderatorteam for at være i strid imod vores <tou-link>Vilkår for brug</tou-link>."
},
"error.project.404.list_title": {
"message": "Hvorfor?"
},
"error.project.404.title": {
"message": "Projekt ikke fundet"
},
"error.user.404.list_item.1": {
"message": "Du har måske tastefejl i brugeren's brugernavn."
},
"error.user.404.list_item.2": {
"message": "Brugeren har måske ændret deres brugernavn eller slettet deres konto."
},
"error.user.404.list_item.3": {
"message": "Brugeren's konto er måske blevet slettet for at gå i strid imod Modrinth's <tou-link>Vilkår for brug</tou-link>."
},
"error.user.404.list_title": {
"message": "Hvorfor?"
},
@@ -503,9 +836,36 @@
"frog": {
"message": "Du er blevet frøleret! 🐸"
},
"frog.altText": {
"message": "Et fotorealistisk maleri af en frø-labyrint"
},
"frog.title": {
"message": "Frø"
},
"hosting-marketing.available-locations": {
"message": "Tilgængelig i Nord Amerika, Europa, og Sydøst Asien for bred dækning."
},
"hosting-marketing.billing.monthly": {
"message": "Betal hvert måned"
},
"hosting-marketing.billing.quarterly": {
"message": "Betal hvert kvartal"
},
"hosting-marketing.billing.save-with-quarterly": {
"message": "Spar 16% med betaling hvert kvartal!"
},
"hosting-marketing.billing.starting-at": {
"message": "Start ved {price} / måned"
},
"hosting-marketing.billing.yearly": {
"message": "Betal hvert år"
},
"hosting-marketing.faq.cpu-kind": {
"message": "Hvilken form for CPU'er køre Modrinth Hosting servere på?"
},
"hosting-marketing.faq.cpu-kind.answer": {
"message": "Modrinth Hosting servere er drevet af AMD Ryzen 7900 og 7950X3D lignende CPU'er på 5+ GHz, parret med DDR5 hukommelse."
},
"landing.creator.feature.discovery.title": {
"message": "Udforsk"
},
@@ -530,15 +890,6 @@
"landing.notifications.received-time": {
"message": "Modtaget {time}"
},
"landing.search.label": {
"message": "Søg"
},
"landing.search.placeholder": {
"message": "Søg..."
},
"landing.search.sort-by.label": {
"message": "Sorter efter"
},
"settings.pats.modal.create.name.label": {
"message": "Navn"
}
+222 -174
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "Lade das RPM herunter"
},
"app-marketing.download.flathub": {
"message": "Auf Flathub herunterladen"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "Durch das herunterladen der Modrinth App stimmst du unseren <terms-link>Nutzungsbedingungen</terms-link> und <privacy-link>Datenschutzrichtlinien</privacy-link> zu."
},
"app-marketing.download.third-party-packages": {
"message": "Drittanbieter Pakete"
},
"app-marketing.download.title": {
"message": "Modrinth App (Beta) herunterladen"
},
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "Weitere Downloadoptionen"
},
"app-marketing.hide-other-packages": {
"message": "Andere Pakete verstecken"
},
"app-marketing.not-recommended": {
"message": "Wir empfehlen, diese nicht zu verwenden, ausser du weisst was du tust."
},
"app-marketing.show-other-packages": {
"message": "Andere Pakete anzeigen"
},
"auth.authorize.action.authorize": {
"message": "Autorisieren"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Gib eine E-Mail unten ein und wir werden dir einen Wiederherstellungslink zum wiederherstellen deines Kontos senden."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "E-Mail oder Nutzername"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "E-Mail"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Eine E-Mail mit Anweisungen wurde gesendet, falls diese E-Mail zuvor in deinem Konto gespeicher wurde."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Passwort vergessen?</forgot-password-link> • <create-account-link>Konto erstellen</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "E-Mail oder Nutzername"
},
"auth.sign-in.password.label": {
"message": "Passwort"
},
"auth.sign-in.sign-in-with": {
"message": "Anmelden mit"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Konto erstellen"
},
"auth.sign-up.confirm-password.label": {
"message": "Passwort bestätigen"
},
"auth.sign-up.email.label": {
"message": "E-Mail"
},
"auth.sign-up.label.username": {
"message": "Nutzername"
},
"auth.sign-up.legal-dislaimer": {
"message": "Durch das erstellen eines Kontos stimmst du den <terms-link>Nutzungsbedingungen</terms-link> und <privacy-policy-link>Datenschutzrichtlinien</privacy-policy-link> von Modrinth zu."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Passwörter stimmen nicht überein!"
},
"auth.sign-up.password.label": {
"message": "Passwort"
},
"auth.sign-up.sign-in-option.title": {
"message": "Du hast bereits ein Konto?"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Kontoeinstellungen"
},
"auth.verify-email.action.sign-in": {
"message": "Anmelden"
},
"auth.verify-email.already-verified.description": {
"message": "Deine E-Mail ist bereits verifiziert!"
},
@@ -407,12 +389,6 @@
"collection.label.curated-by": {
"message": "Kuratiert von"
},
"collection.label.description": {
"message": "Beschreibung"
},
"collection.label.details": {
"message": "Details"
},
"collection.label.no-projects": {
"message": "Noch keine Projekte in Sammlung"
},
@@ -431,27 +407,15 @@
"collection.title": {
"message": "{name} - Kollektion"
},
"common.no": {
"message": "Nein"
},
"common.yes": {
"message": "Ja"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Ergänzende Dateien dienen zur unterstützung von Ressourcen wie Quellcode, nicht für alternative Versionen oder Varianten."
},
"create.collection.cancel": {
"message": "Abbrechen"
},
"create.collection.collection-info": {
"message": "Deine neue Sammlung wird als eine öffentliche Sammlung {count, plural, =0 {ohne Projekte} one {mit # Projekt} other {mit # Projekten}} erstellt."
},
"create.collection.create-collection": {
"message": "Sammlung erstellen"
},
"create.collection.error-title": {
"message": "Ein Fehler ist aufgetreten"
},
"create.collection.name-label": {
"message": "Name"
},
@@ -503,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "Projekt"
},
"create.organization.cancel": {
"message": "Abbrechen"
},
"create.organization.create-organization": {
"message": "Organisation erstellen"
},
"create.organization.error-title": {
"message": "Ein Fehler ist aufgetreten"
},
"create.organization.name-label": {
"message": "Name"
},
@@ -536,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Abbrechen"
},
"create.project.create-project": {
"message": "Projekt erstellen"
},
"create.project.error-title": {
"message": "Ein Fehler ist aufgetreten"
},
"create.project.name-label": {
"message": "Name"
},
@@ -569,9 +521,6 @@
"create.project.visibility-description": {
"message": "Die Sichtbarkeit deines Projekts nach der Überprüfung."
},
"create.project.visibility-label": {
"message": "Sichtbarkeit"
},
"create.project.visibility-private": {
"message": "Privat"
},
@@ -779,15 +728,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "Verbinde dein PayPal-Konto um Zahlungen direkt zu erhalten."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Speichern"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "Venmo-Benutzername erfolgreich gespeichert!"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Gespeichert"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Mit PayPal anmelden"
},
@@ -806,18 +749,9 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Methode"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Kontodetails"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Verifizierung"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Steuerformular"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Details"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "Um dein vollständiges Guthaben von <b>{available}</b> abzuheben musst du das unten stehende Formular ausfüllen. Dies wird für die Steuererklärung benötigt und muss nur einmal ausgefüllt werden."
},
@@ -947,9 +881,6 @@
"dashboard.withdraw.completion.amount": {
"message": "Menge"
},
"dashboard.withdraw.completion.close-button": {
"message": "Schliessen"
},
"dashboard.withdraw.completion.date": {
"message": "Datum"
},
@@ -1133,15 +1064,216 @@
"frog.altText": {
"message": "Ein fotorealistisches Gemälde eines Frosch-Labyrinths"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} weitere Person wurde} other {{count} weitere Personen wuden}} ebenfalls gefroscht!"
},
"frog.sinceOpened": {
"message": "Diese Seite wurde {ago} geöffnet"
},
"frog.title": {
"message": "Frosch"
},
"hosting-marketing.available-locations": {
"message": "Verfügbar in Nordamerika, Europa und Südostasien für eine breite Abdeckung."
},
"hosting-marketing.billing.monthly": {
"message": "Monatlich zahlen"
},
"hosting-marketing.billing.quarterly": {
"message": "Vierteljährlich zahlen"
},
"hosting-marketing.billing.save-with-quarterly": {
"message": "Spare 16% mit vierteljärlicher Abrechnung!"
},
"hosting-marketing.billing.starting-at": {
"message": "Ab {price} / Monat"
},
"hosting-marketing.billing.yearly": {
"message": "Jährlich zahlen"
},
"hosting-marketing.faq.burst-threads": {
"message": "Wie funktionieren CPU-Burst-Threads?"
},
"hosting-marketing.faq.burst-threads.answer": {
"message": "Wenn dein Server stark ausgelastet ist, geben wir ihm vorübergehend Zugriff auf zusätzliche CPU-Threads, um Lagspikes und Instabilität zu verringern. So wird verhindert, dass die TPS unter 20 fällt, und ein möglichst reibungsloses Erlebnis gewährleistet. Da diese zusätzlichen CPU-Threads nur kurzzeitig während Zeiten hoher Auslastung verfügbar sind, werden sie möglicherweise nicht in Spark-Berichten oder anderen Profiling-Tools angezeigt."
},
"hosting-marketing.faq.cpu-kind": {
"message": "Auf welchen CPUs laufen die Server von Modrinth Hosting?"
},
"hosting-marketing.faq.cpu-kind.answer": {
"message": "Die Server von Modrinth Hosting werden von AMD Ryzen 7900 und 7950X3D-äquivalenten CPUs mit 5+ GHz betrieben, kombiniert mit DDR5-Speicher."
},
"hosting-marketing.faq.currency": {
"message": "In welcher Währung sind die Preise angegeben?"
},
"hosting-marketing.faq.currency.answer": {
"message": "All Preise werden in US-Dollar (USD) angegeben."
},
"hosting-marketing.faq.ddos-protection": {
"message": "Haben die Server von Modrinth Hosting DDoS-Schutz?"
},
"hosting-marketing.faq.ddos-protection.answer": {
"message": "Ja. Alle Server von Modrinth Hosting sind mit DDoS-Schutz ausgestattet, an einigen Standorten mit einer Kapazität von bis zu 17 Tbit/s."
},
"hosting-marketing.faq.heading": {
"message": "Häufig gestellte Fragen"
},
"hosting-marketing.faq.how-fast": {
"message": "Wie schnell sind Server von Modrinth Hosting?"
},
"hosting-marketing.faq.how-fast.answer.one": {
"message": "Server von Modrinth Hosting werden auf sehr moderner, leistungsstarker Hardware gehostet, doch es ist schwer zu sagen, wie sich dies genau auf die Geschwindigkeit deines Servers auswirkt, da es so viele Faktoren gibt, die diese beeinflussen, wie beispielsweise die Mods, Datenpakete oder Plugins, die du auf deinem Server ausführst, und sogar das Verhalten der Nutzer."
},
"hosting-marketing.faq.how-fast.answer.two": {
"message": "Die meisten Leistungsprobleme entstehen in der Regel durch ein nicht optimiertes Modpack, Mod, Datenpaket oder Plugin, das zu Lag auf dem Server führt. Da unsere Server sehr leistungsstark sind, solltest du keine großen Probleme haben, solange du einen geeigneten Plan für die Inhalte wählst, die du auf dem Server ausführst."
},
"hosting-marketing.faq.increase-storage": {
"message": "Kann ich den Speicherplatz meines Servers erhöhen?"
},
"hosting-marketing.faq.increase-storage.answer": {
"message": "Ja, der Speicherplatz auf deinem Server kann ohne zusätzliche Kosten erweitert werden. Wenn du mehr Speicherplatz benötigst, wende dich bitte an den Modrinth-Support."
},
"hosting-marketing.faq.location": {
"message": "Wo befinden sich Server von Modrinth Hosting? Kann ich eine Region auswählen?"
},
"hosting-marketing.faq.location.answer": {
"message": "Derzeit sind Server in Nordamerika, Europa und Südostasien verfügbar, die du beim Kauf auswählen kannst. Weitere Regionen werden in Zukunft dazukommen! Falls du deine Region wechseln möchtest, wende dich bitte an den Support."
},
"hosting-marketing.faq.versions-loaders": {
"message": "Welche Minecraft-Versionen und Loader können verwendet werden?"
},
"hosting-marketing.faq.versions-loaders.answer.one": {
"message": "Server von Modrinth Hosting können jede Version von Minecraft: Java Edition bis zurück zur Version 1.2.5 ausführen, einschließlich Snapshot-Versionen."
},
"hosting-marketing.faq.versions-loaders.answer.two": {
"message": "Wir unterstützen außerdem eine Vielzahl von Mod- und Plugin-Loadern, darunter Fabric, Quilt, Forge und NeoForge für Mods sowie Paper und Purpur für Plugins. Die Verfügbarkeit hängt davon ab, ob der Mod- oder Plugin-Loader die ausgewählte Minecraft-Version unterstützt."
},
"hosting-marketing.get-started": {
"message": "Loslegen"
},
"hosting-marketing.hero.button.manage-your-servers": {
"message": "Verwalte deine Server"
},
"hosting-marketing.hero.button.start-a-new-server": {
"message": "Starte einen neuen Server"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Starte deinen Server"
},
"hosting-marketing.hero.host-with-modrinth": {
"message": "Hoste deinen nächsten Server mit Modrinth Hosting"
},
"hosting-marketing.hero.hosting-description": {
"message": "Modrinth Hosting ist der einfachste Weg, deinen eigenen Minecraft: Java Edition-Server zu hosten. Installiere und spiele deine Lieblings-Mods und Modpacks nahtlos innerhalb der Modrinth-Plattform."
},
"hosting-marketing.included.advanced-networking": {
"message": "Fortgeschrittenes Netzwerkmanagement"
},
"hosting-marketing.included.advanced-networking.description": {
"message": "Füge deinem Server deine eigene Domain hinzu, reserviere bis zu 15 Ports für Mods, die diese benötigen, und vieles mehr."
},
"hosting-marketing.included.backups-included": {
"message": "Backups inklusive"
},
"hosting-marketing.included.backups-included.description": {
"message": "Jeder Server verfügt über 15 Backups, die sicher an einem externen Standort gespeichert werden."
},
"hosting-marketing.included.custom-url": {
"message": "Benutzerdefinierte URL"
},
"hosting-marketing.included.custom-url.description": {
"message": "Teile deinen Server mit einer benutzerdefinierten <contrast>modrinth.gg</contrast>-URL."
},
"hosting-marketing.included.description": {
"message": "Jeder Server verfügt über eine Vielzahl von Funktionen, die ein Hosting-Erlebnis ermöglichen, wie es nur Modrinth bieten kann."
},
"hosting-marketing.included.file-manager": {
"message": "Einfach zu bedienender Dateimanager"
},
"hosting-marketing.included.file-manager.description": {
"message": "Suche, verwalte, bearbeite und lade Dateien ganz einfach direkt auf deinen Server hoch."
},
"hosting-marketing.included.heading": {
"message": "Mit allen Funktionen, die du benötigst."
},
"hosting-marketing.included.help": {
"message": "Hilfe wenn du sie brauchst"
},
"hosting-marketing.included.help.description": {
"message": "Wende dich jederzeit an das Modrinth-Team, falls du Hilfe mit deinem Server benötigst."
},
"hosting-marketing.included.powerful-console": {
"message": "Eine leistungsstarke Konsole, ein Servereigenschaften-Manager und vieles mehr"
},
"hosting-marketing.included.powerful-console.description": {
"message": "Modrinth Hosting bietet leistungsstarke Tools zur Verwaltung deines Servers."
},
"hosting-marketing.included.sftp-access": {
"message": "Zugriff über SFTP"
},
"hosting-marketing.included.sftp-access.description": {
"message": "Greife mit dem in Modrinth Hosting integrierten SFTP direkt auf die Dateien deines Servers zu."
},
"hosting-marketing.included.with-your-server": {
"message": "Bei deinem Server enthalten"
},
"hosting-marketing.know-what-you-need": {
"message": "Du weißt genau, was du brauchst?"
},
"hosting-marketing.medal.info": {
"message": "Teste 5 Tage lang kostenlos einen <orange>3 GB Server</orange>, unterstützt von <orange>Medal</orange>"
},
"hosting-marketing.medal.learn-more": {
"message": "Mehr erfahren"
},
"hosting-marketing.medal.text-secondary": {
"message": "Zeitlich begrenztes Angebot. Keine Kreditkarte erforderlich. Verfügbar für US-Server."
},
"hosting-marketing.pick-customized-plan": {
"message": "Wähle einen individuellen Plan mit genau den Spezifikationen, die du benötigst."
},
"hosting-marketing.server-for-everyone": {
"message": "Für jeden gibt es einen Server"
},
"hosting-marketing.why.all-on-modrinth": {
"message": "Verwalte alles auf Modrinth"
},
"hosting-marketing.why.all-on-modrinth.description": {
"message": "Dein Server, deine Mods, deine Spieler und vieles mehr befinden sich alle auf Modrinth. Du musst nicht zwischen verschiedenen Plattformen wechseln."
},
"hosting-marketing.why.consistently-fast": {
"message": "Konstant schnell"
},
"hosting-marketing.why.consistently-fast.description": {
"message": "Unsere Infrastruktur ist niemals überlastet, was bedeutet, dass jeder bei Modrinth gehostete Server stets mit voller Leistung läuft."
},
"hosting-marketing.why.description": {
"message": "Wähle aus Tausenden von Modpacks auf Modrinth oder erstelle dein eigenes. Lade deine Freunde ein, wenn du bereit bist zu spielen."
},
"hosting-marketing.why.heading": {
"message": "Finde ein Modpack. Jetzt ist es ein Server."
},
"hosting-marketing.why.modern-reliable-hosting": {
"message": "Entdecke modernes, zuverlässiges Hosting"
},
"hosting-marketing.why.modern-reliable-hosting.description": {
"message": "Server von Modrinth Hosting werden auf <contrast>leistungsstarken AMD-CPUs mit DDR5-Arbeitsspeicher</contrast> gehostet und laufen mit speziell entwickelter Software, um einen reibungslosen Betrieb deines Servers zu ermöglichen."
},
"hosting-marketing.why.where-mods-are": {
"message": "Spiele da, wo deine Mods sind"
},
"hosting-marketing.why.where-mods-are.description": {
"message": "Modrinth Hosting integriert die Installation von Mods und Modpacks nahtlos in deinen Server."
},
"hosting-marketing.why.why-modrinth-hosting": {
"message": "Warum Modrinth Hosting?"
},
"hosting-marketing.why.your-favorite-mods": {
"message": "Alle deine Lieblingsmods"
},
"hosting-marketing.why.your-favorite-mods.description": {
"message": "Wähle zwischen Vanilla, Fabric, Forge, Quilt und NeoForge. Was auf Modrinth ist, kann auf deinem Server laufen."
},
"hosting.plan.out-of-stock": {
"message": "Nicht verfügbar"
},
"hosting.plan.select-plan": {
"message": "Plan auswählen"
},
"landing.button.discover-mods": {
"message": "Entdecke Mods"
},
@@ -1253,15 +1385,6 @@
"landing.notifications.version-released": {
"message": "Version {version} wurde für {gameVersion} veröffentlicht"
},
"landing.search.label": {
"message": "Suche"
},
"landing.search.placeholder": {
"message": "Suche..."
},
"landing.search.sort-by.label": {
"message": "Sortieren nach"
},
"landing.section.for-creators.description": {
"message": "Gib deinen Kreationen ein Online-Zuhause und erreiche ein riesiges Publikum engagierter Spieler."
},
@@ -1487,9 +1610,6 @@
"layout.nav.active-reports": {
"message": "Aktive Meldungen"
},
"layout.nav.analytics": {
"message": "Analysen"
},
"layout.nav.discover": {
"message": "Entdecken"
},
@@ -1538,9 +1658,6 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Auf Modrinth+ upgraden"
},
"moderation.filter.by": {
"message": "Filtern nach"
},
"moderation.moderate": {
"message": "Moderieren"
},
@@ -1553,12 +1670,6 @@
"moderation.page.technicalReview": {
"message": "Technische Überprüfung"
},
"moderation.search.placeholder": {
"message": "Suche..."
},
"moderation.sort.by": {
"message": "Sortieren nach"
},
"muralpay.account-type.checking": {
"message": "Girokonto"
},
@@ -1886,18 +1997,12 @@
"profile.label.collection": {
"message": "Kollektion"
},
"profile.label.details": {
"message": "Details"
},
"profile.label.downloads": {
"message": "{count} {count, plural, one {Download} other {Downloads}}"
},
"profile.label.joined": {
"message": "Beigetreten"
},
"profile.label.no": {
"message": "Nein"
},
"profile.label.no-collections": {
"message": "Dieser Nutzer hat keine Kollektionen!"
},
@@ -1919,9 +2024,6 @@
"profile.label.saving": {
"message": "Speichert..."
},
"profile.label.yes": {
"message": "Ja"
},
"profile.meta.description": {
"message": "Lade {username}'s Projekte auf Modrinth herunter"
},
@@ -1934,15 +2036,6 @@
"profile.user-id": {
"message": "Benutzer ID: {id}"
},
"project-member-header.accept": {
"message": "Akzeptieren"
},
"project-member-header.decline": {
"message": "Ablehnen"
},
"project-member-header.error": {
"message": "Fehler"
},
"project-member-header.error-decline": {
"message": "Ablehnen der Team-Einladung fehlgeschlagen"
},
@@ -1958,9 +2051,6 @@
"project-member-header.invitation-with-role": {
"message": "Du wurdest eingeladen, ein Mitglied mit der Rolle \"{role}\" für dieses Projekt zu werden."
},
"project-member-header.success": {
"message": "Erfolg"
},
"project-member-header.success-decline": {
"message": "Du hast die Team-Einladung abgelehnt"
},
@@ -2588,6 +2678,9 @@
"scopes.versionWrite.label": {
"message": "Schreibzugriff Versionsdaten"
},
"search.filter.game-version-shader-message": {
"message": "Shaderpakete für ältere Versionen funktionieren höchstwahrscheinlich auch auf neueren Versionen mit nur kleineren Problemen."
},
"search.filter.locked.server": {
"message": "Vom Server bereitgestellt"
},
@@ -2675,9 +2768,6 @@
"settings.billing.payment_method.action.primary": {
"message": "Als primär festlegen"
},
"settings.billing.payment_method.card_display": {
"message": "{card_brand} endet in {last_four}"
},
"settings.billing.payment_method.card_expiry": {
"message": "Läuft ab {month}.{year}"
},
@@ -2690,42 +2780,6 @@
"settings.billing.payment_method.title": {
"message": "Zahlungsmethoden"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Discover"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.unknown": {
"message": "Unbekannte Zahlungsmethode"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.billing.pyro_subscription.description": {
"message": "Verwalte deine Modrinth Server Abonnements."
},
@@ -2879,18 +2933,12 @@
"settings.profile.profile-info": {
"message": "Profilinformationen"
},
"settings.profile.profile-picture.reset": {
"message": "Zurücksetzen"
},
"settings.profile.profile-picture.title": {
"message": "Profilbild"
},
"settings.profile.username.description": {
"message": "Ein eindeutiger Name (ohne berücksichtigung der Gross-/Kleinschreibung) zur identifikation deines Profils."
},
"settings.profile.username.title": {
"message": "Benutzername"
},
"settings.sessions.action.revoke-session": {
"message": "Sitzung widerrufen"
},
+224 -176
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "Lade das RPM herunter"
},
"app-marketing.download.flathub": {
"message": "Jetzt auf Flathub"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "Mit dem Herunterladen der Modrinth App stimmst du unseren <terms-link>Nutzungsbedingungen</terms-link> und der <privacy-link>Datenschutzrichtlinie</privacy-link> zu."
},
"app-marketing.download.third-party-packages": {
"message": "Pakete von Drittanbietern"
},
"app-marketing.download.title": {
"message": "Modrinth App (Beta) herunterladen"
},
@@ -99,7 +99,7 @@
"message": "Der Modrinth-Launcher ist vollständig quelloffen. Den Quellcode kannst du auf unserem <github-link>GitHub</github-link> einsehen!"
},
"app-marketing.features.open-source.title": {
"message": "Quelloffen"
"message": "Open Source"
},
"app-marketing.features.performance.activity-monitor": {
"message": "Aktivitätsmonitor"
@@ -114,7 +114,7 @@
"message": "Discord"
},
"app-marketing.features.performance.good-performance": {
"message": "Gute Performance"
"message": "Gute Leistung"
},
"app-marketing.features.performance.google-chrome": {
"message": "Google Chrome"
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "Mehr Downloadoptionen"
},
"app-marketing.hide-other-packages": {
"message": "Andere Pakete ausblenden"
},
"app-marketing.not-recommended": {
"message": "Wir empfehlen, diese nur zu verwenden, wenn du weißt, was du tust."
},
"app-marketing.show-other-packages": {
"message": "Andere Pakete anzeigen"
},
"auth.authorize.action.authorize": {
"message": "Autorisieren"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Gib unten deine E-Mail ein und wir senden dir einen Link, mit dem du dein Konto wiederherstellen kannst."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "E-Mail oder Benutzername"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "E-Mail"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Eine E-Mail mit Anweisungen wurde dir gesendet, falls dein Konto zuvor mit der E-Mail verbunden war."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Passwort vergessen?</forgot-password-link> • <create-account-link>Erstelle ein Konto</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "E-Mail oder Benutzername"
},
"auth.sign-in.password.label": {
"message": "Passwort"
},
"auth.sign-in.sign-in-with": {
"message": "Anmelden mit"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Konto erstellen"
},
"auth.sign-up.confirm-password.label": {
"message": "Passwort bestätigen"
},
"auth.sign-up.email.label": {
"message": "E-Mail"
},
"auth.sign-up.label.username": {
"message": "Benutzername"
},
"auth.sign-up.legal-dislaimer": {
"message": "Durch die Erstellung eines Kontos stimmst du den <terms-link>Nutzungsbedingungen</terms-link> und der <privacy-policy-link>Datenschutzerklärung</privacy-policy-link> von Modrinth zu."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Passwörter stimmen nicht überein!"
},
"auth.sign-up.password.label": {
"message": "Passwort"
},
"auth.sign-up.sign-in-option.title": {
"message": "Du hast bereits ein Konto?"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Kontoeinstellungen"
},
"auth.verify-email.action.sign-in": {
"message": "Anmelden"
},
"auth.verify-email.already-verified.description": {
"message": "Deine E-Mail wurde bereits bestätigt!"
},
@@ -407,12 +389,6 @@
"collection.label.curated-by": {
"message": "Kuratiert von"
},
"collection.label.description": {
"message": "Beschreibung"
},
"collection.label.details": {
"message": "Details"
},
"collection.label.no-projects": {
"message": "Noch keine Projekte in der Kollektion"
},
@@ -431,27 +407,15 @@
"collection.title": {
"message": "{name} - Kollektion"
},
"common.no": {
"message": "Nein"
},
"common.yes": {
"message": "Ja"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Ergänzende Dateien dienen zur Unterstützung von Ressourcen wie Quellcode, nicht für alternative Versionen oder Varianten."
},
"create.collection.cancel": {
"message": "Abbrechen"
},
"create.collection.collection-info": {
"message": "Deine neue Kollektion wird als eine öffentliche Kollektion mit {count, plural, =0 {keinen Projekten} one {einem Projekt} other {# Projekten}} erstellt."
},
"create.collection.create-collection": {
"message": "Kollektion erstellen"
},
"create.collection.error-title": {
"message": "Ein Fehler ist aufgetreten"
},
"create.collection.name-label": {
"message": "Name"
},
@@ -503,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "Projekt"
},
"create.organization.cancel": {
"message": "Abbrechen"
},
"create.organization.create-organization": {
"message": "Organisation erstellen"
},
"create.organization.error-title": {
"message": "Ein Fehler ist aufgetreten"
},
"create.organization.name-label": {
"message": "Name"
},
@@ -536,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Abbrechen"
},
"create.project.create-project": {
"message": "Projekt erstellen"
},
"create.project.error-title": {
"message": "Ein Fehler ist aufgetreten"
},
"create.project.name-label": {
"message": "Name"
},
@@ -569,9 +521,6 @@
"create.project.visibility-description": {
"message": "Die Sichtbarkeit deines Projekts, nachdem es genehmigt wurde."
},
"create.project.visibility-label": {
"message": "Sichtbarkeit"
},
"create.project.visibility-private": {
"message": "Privat"
},
@@ -779,15 +728,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "Verbinde dein PayPal-Konto, um Zahlungen direkt zu erhalten."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Speichern"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "Venmo-Benutzername erfolgreich gespeichert!"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Gespeichert"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Mit PayPal anmelden"
},
@@ -806,18 +749,9 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Methode"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Kontodetails"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Überprüfung"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Steuerformular"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Details"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "Um dein vollständiges Guthaben von <b>{available}</b> abzuheben musst du das unten stehende Formular ausfüllen. Dies wird für die Steuererklärung benötigt und muss nur einmal ausgefüllt werden."
},
@@ -947,9 +881,6 @@
"dashboard.withdraw.completion.amount": {
"message": "Menge"
},
"dashboard.withdraw.completion.close-button": {
"message": "Schließen"
},
"dashboard.withdraw.completion.date": {
"message": "Datum"
},
@@ -1133,15 +1064,216 @@
"frog.altText": {
"message": "Ein fotorealistisches Gemälde eines Frosch-Labyrinths"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} weitere Person wurde} other {{count} weitere Personen wurden}} ebenfalls gefroscht!"
},
"frog.sinceOpened": {
"message": "Diese Seite wurde {ago} geöffnet"
},
"frog.title": {
"message": "Frosch"
},
"hosting-marketing.available-locations": {
"message": "Verfügbar in Nordamerika, Europa und Südostasien für eine breite Abdeckung."
},
"hosting-marketing.billing.monthly": {
"message": "Monatlich zahlen"
},
"hosting-marketing.billing.quarterly": {
"message": "Vierteljährlich zahlen"
},
"hosting-marketing.billing.save-with-quarterly": {
"message": "Spare 16 % mit vierteljährlicher Abrechnung!"
},
"hosting-marketing.billing.starting-at": {
"message": "Ab {price} / Monat"
},
"hosting-marketing.billing.yearly": {
"message": "Jährlich zahlen"
},
"hosting-marketing.faq.burst-threads": {
"message": "Wie funktionieren CPU-Burst-Threads?"
},
"hosting-marketing.faq.burst-threads.answer": {
"message": "Wenn dein Server stark ausgelastet ist, geben wir ihm vorübergehend Zugriff auf zusätzliche CPU-Threads, um Lagspikes und Instabilität zu verringern. So wird verhindert, dass die TPS unter 20 fällt, und ein möglichst reibungsloses Erlebnis gewährleistet. Da diese zusätzlichen CPU-Threads nur kurzzeitig während Zeiten hoher Auslastung verfügbar sind, werden sie möglicherweise nicht in Spark-Berichten oder anderen Profiling-Tools angezeigt."
},
"hosting-marketing.faq.cpu-kind": {
"message": "Auf welchen CPUs laufen die Server von Modrinth Hosting?"
},
"hosting-marketing.faq.cpu-kind.answer": {
"message": "Die Server von Modrinth Hosting werden von AMD Ryzen 7900 und 7950X3D-äquivalenten CPUs mit 5+ GHz betrieben, kombiniert mit DDR5-Speicher."
},
"hosting-marketing.faq.currency": {
"message": "In welcher Währung sind die Preise angegeben?"
},
"hosting-marketing.faq.currency.answer": {
"message": "Alle Preise sind in US-Dollar (USD) angegeben."
},
"hosting-marketing.faq.ddos-protection": {
"message": "Haben die Server von Modrinth Hosting einen DDoS-Schutz?"
},
"hosting-marketing.faq.ddos-protection.answer": {
"message": "Ja. Alle Server von Modrinth Hosting sind mit DDoS-Schutz ausgestattet, an einigen Standorten mit einer Kapazität von bis zu 17 Tbit/s."
},
"hosting-marketing.faq.heading": {
"message": "Häufig gestellte Fragen"
},
"hosting-marketing.faq.how-fast": {
"message": "Wie schnell sind die Server von Modrinth Hosting?"
},
"hosting-marketing.faq.how-fast.answer.one": {
"message": "Server von Modrinth Hosting werden auf sehr moderner, leistungsstarker Hardware gehostet, doch es ist schwer zu sagen, wie sich dies genau auf die Geschwindigkeit deines Servers auswirkt, da es so viele Faktoren gibt, die diese beeinflussen, wie beispielsweise die Mods, Datenpakete oder Plugins, die du auf deinem Server ausführst, und sogar das Verhalten der Nutzer."
},
"hosting-marketing.faq.how-fast.answer.two": {
"message": "Die meisten Leistungsprobleme entstehen in der Regel durch ein nicht optimiertes Modpack, Mod, Datenpaket oder Plugin, das zu Lag auf dem Server führt. Da unsere Server sehr leistungsstark sind, solltest du keine großen Probleme haben, solange du einen geeigneten Plan für die Inhalte wählst, die du auf dem Server ausführst."
},
"hosting-marketing.faq.increase-storage": {
"message": "Kann ich den Speicherplatz meines Servers erhöhen?"
},
"hosting-marketing.faq.increase-storage.answer": {
"message": "Ja, der Speicherplatz auf deinem Server kann ohne zusätzliche Kosten erweitert werden. Wenn du mehr Speicherplatz benötigst, wende dich bitte an den Modrinth-Support."
},
"hosting-marketing.faq.location": {
"message": "Wo befinden sich Server von Modrinth Hosting? Kann ich eine Region auswählen?"
},
"hosting-marketing.faq.location.answer": {
"message": "Derzeit sind Server in Nordamerika, Europa und Südostasien verfügbar, die du beim Kauf auswählen kannst. Weitere Regionen werden in Zukunft dazukommen! Falls du deine Region wechseln möchtest, wende dich bitte an den Support."
},
"hosting-marketing.faq.versions-loaders": {
"message": "Welche Minecraft-Versionen und Loader können verwendet werden?"
},
"hosting-marketing.faq.versions-loaders.answer.one": {
"message": "Server von Modrinth Hosting können jede Version von Minecraft: Java Edition bis zurück zur Version 1.2.5 ausführen, einschließlich Snapshot-Versionen."
},
"hosting-marketing.faq.versions-loaders.answer.two": {
"message": "Wir unterstützen außerdem eine Vielzahl von Mod- und Plugin-Loadern, darunter Fabric, Quilt, Forge und NeoForge für Mods sowie Paper und Purpur für Plugins. Die Verfügbarkeit hängt davon ab, ob der Mod- oder Plugin-Loader die ausgewählte Minecraft-Version unterstützt."
},
"hosting-marketing.get-started": {
"message": "Loslegen"
},
"hosting-marketing.hero.button.manage-your-servers": {
"message": "Verwalte deine Server"
},
"hosting-marketing.hero.button.start-a-new-server": {
"message": "Starte einen neuen Server"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Starte deinen Server"
},
"hosting-marketing.hero.host-with-modrinth": {
"message": "Hoste deinen nächsten Server mit Modrinth Hosting"
},
"hosting-marketing.hero.hosting-description": {
"message": "Modrinth Hosting ist der einfachste Weg, deinen eigenen Minecraft: Java Edition-Server zu hosten. Installiere und spiele deine Lieblings-Mods und Modpacks nahtlos innerhalb der Modrinth-Plattform."
},
"hosting-marketing.included.advanced-networking": {
"message": "Fortgeschrittenes Netzwerkmanagement"
},
"hosting-marketing.included.advanced-networking.description": {
"message": "Füge deinem Server deine eigene Domain hinzu, reserviere bis zu 15 Ports für Mods, die diese benötigen, und vieles mehr."
},
"hosting-marketing.included.backups-included": {
"message": "Backups enthalten"
},
"hosting-marketing.included.backups-included.description": {
"message": "Jeder Server verfügt über 15 Backups, die sicher an einem externen Standort gespeichert werden."
},
"hosting-marketing.included.custom-url": {
"message": "Benutzerdefinierte URL"
},
"hosting-marketing.included.custom-url.description": {
"message": "Teile deinen Server mit einer benutzerdefinierten <contrast>modrinth.gg</contrast>-URL."
},
"hosting-marketing.included.description": {
"message": "Jeder Server verfügt über eine Vielzahl von Funktionen, die ein Hosting-Erlebnis ermöglichen, wie es nur Modrinth bieten kann."
},
"hosting-marketing.included.file-manager": {
"message": "Einfach zu bedienender Dateimanager"
},
"hosting-marketing.included.file-manager.description": {
"message": "Suche, verwalte, bearbeite und lade Dateien ganz einfach direkt auf deinen Server hoch."
},
"hosting-marketing.included.heading": {
"message": "Mit allen Funktionen, die du benötigst."
},
"hosting-marketing.included.help": {
"message": "Hilfe wenn du sie brauchst"
},
"hosting-marketing.included.help.description": {
"message": "Wende dich jederzeit an das Modrinth-Team, falls du Hilfe mit deinem Server benötigst."
},
"hosting-marketing.included.powerful-console": {
"message": "Eine leistungsstarke Konsole, ein Servereigenschaften-Manager und vieles mehr"
},
"hosting-marketing.included.powerful-console.description": {
"message": "Modrinth Hosting bietet leistungsstarke Tools zur Verwaltung deines Servers."
},
"hosting-marketing.included.sftp-access": {
"message": "Zugriff über SFTP"
},
"hosting-marketing.included.sftp-access.description": {
"message": "Greife mit dem in Modrinth Hosting integrierten SFTP direkt auf die Dateien deines Servers zu."
},
"hosting-marketing.included.with-your-server": {
"message": "Bei deinem Server enthalten"
},
"hosting-marketing.know-what-you-need": {
"message": "Du weißt genau, was du brauchst?"
},
"hosting-marketing.medal.info": {
"message": "Teste 5 Tage lang kostenlos einen <orange>3 GB Server</orange>, unterstützt von <orange>Medal</orange>"
},
"hosting-marketing.medal.learn-more": {
"message": "Mehr erfahren"
},
"hosting-marketing.medal.text-secondary": {
"message": "Zeitlich begrenztes Angebot. Keine Kreditkarte erforderlich. Verfügbar für US-Server."
},
"hosting-marketing.pick-customized-plan": {
"message": "Wähle einen individuellen Plan mit genau den Spezifikationen, die du benötigst."
},
"hosting-marketing.server-for-everyone": {
"message": "Für jeden gibt es einen Server"
},
"hosting-marketing.why.all-on-modrinth": {
"message": "Verwalte alles auf Modrinth"
},
"hosting-marketing.why.all-on-modrinth.description": {
"message": "Dein Server, deine Mods, deine Spieler und vieles mehr befinden sich alle auf Modrinth. Du musst nicht zwischen verschiedenen Plattformen wechseln."
},
"hosting-marketing.why.consistently-fast": {
"message": "Konstant schnell"
},
"hosting-marketing.why.consistently-fast.description": {
"message": "Unsere Infrastruktur ist niemals überlastet, was bedeutet, dass jeder bei Modrinth gehostete Server stets mit voller Leistung läuft."
},
"hosting-marketing.why.description": {
"message": "Wähle aus Tausenden von Modpacks auf Modrinth oder erstelle dein eigenes. Lade deine Freunde ein, wenn du bereit bist zu spielen."
},
"hosting-marketing.why.heading": {
"message": "Finde ein Modpack. Jetzt ist es ein Server."
},
"hosting-marketing.why.modern-reliable-hosting": {
"message": "Entdecke modernes, zuverlässiges Hosting"
},
"hosting-marketing.why.modern-reliable-hosting.description": {
"message": "Server von Modrinth Hosting werden auf <contrast>leistungsstarken AMD-CPUs mit DDR5-Arbeitsspeicher</contrast> gehostet und laufen mit speziell entwickelter Software, um einen reibungslosen Betrieb deines Servers zu ermöglichen."
},
"hosting-marketing.why.where-mods-are": {
"message": "Spiele da, wo deine Mods sind"
},
"hosting-marketing.why.where-mods-are.description": {
"message": "Modrinth Hosting integriert die Installation von Mods und Modpacks nahtlos in deinen Server."
},
"hosting-marketing.why.why-modrinth-hosting": {
"message": "Warum Modrinth Hosting?"
},
"hosting-marketing.why.your-favorite-mods": {
"message": "Alle deine Lieblingsmods"
},
"hosting-marketing.why.your-favorite-mods.description": {
"message": "Wähle zwischen Vanilla, Fabric, Forge, Quilt und NeoForge. Was auf Modrinth ist, kann auf deinem Server laufen."
},
"hosting.plan.out-of-stock": {
"message": "Nicht verfügbar"
},
"hosting.plan.select-plan": {
"message": "Plan auswählen"
},
"landing.button.discover-mods": {
"message": "Entdecke Mods"
},
@@ -1253,15 +1385,6 @@
"landing.notifications.version-released": {
"message": "Version {version} wurde für die {gameVersion} veröffentlicht"
},
"landing.search.label": {
"message": "Suche"
},
"landing.search.placeholder": {
"message": "Suche..."
},
"landing.search.sort-by.label": {
"message": "Sortieren nach"
},
"landing.section.for-creators.description": {
"message": "Gib deinen Kreationen ein Online-Zuhause und erreiche ein riesiges Publikum engagierter Spieler."
},
@@ -1487,9 +1610,6 @@
"layout.nav.active-reports": {
"message": "Aktive Meldungen"
},
"layout.nav.analytics": {
"message": "Analysen"
},
"layout.nav.discover": {
"message": "Entdecken"
},
@@ -1538,9 +1658,6 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Auf Modrinth+ upgraden"
},
"moderation.filter.by": {
"message": "Filtern nach"
},
"moderation.moderate": {
"message": "Moderieren"
},
@@ -1553,12 +1670,6 @@
"moderation.page.technicalReview": {
"message": "Technische Überprüfung"
},
"moderation.search.placeholder": {
"message": "Suche..."
},
"moderation.sort.by": {
"message": "Sortieren nach"
},
"muralpay.account-type.checking": {
"message": "Girokonto"
},
@@ -1886,18 +1997,12 @@
"profile.label.collection": {
"message": "Kollektion"
},
"profile.label.details": {
"message": "Details"
},
"profile.label.downloads": {
"message": "{count} {count, plural, one {Download} other {Downloads}}"
},
"profile.label.joined": {
"message": "Beigetreten"
},
"profile.label.no": {
"message": "Nein"
},
"profile.label.no-collections": {
"message": "Dieser Nutzer hat keine Kollektionen!"
},
@@ -1919,9 +2024,6 @@
"profile.label.saving": {
"message": "Speichert..."
},
"profile.label.yes": {
"message": "Ja"
},
"profile.meta.description": {
"message": "Lade {username}'s Projekte auf Modrinth herunter"
},
@@ -1934,15 +2036,6 @@
"profile.user-id": {
"message": "Benutzer ID: {id}"
},
"project-member-header.accept": {
"message": "Akzeptieren"
},
"project-member-header.decline": {
"message": "Ablehnen"
},
"project-member-header.error": {
"message": "Fehler"
},
"project-member-header.error-decline": {
"message": "Teameinladung konnte nicht abgelehnt werden"
},
@@ -1958,9 +2051,6 @@
"project-member-header.invitation-with-role": {
"message": "Du wurdest eingeladen, Mitglied dieses Projekts mit der Rolle \"{role}\" zu werden."
},
"project-member-header.success": {
"message": "Erfolg"
},
"project-member-header.success-decline": {
"message": "Du hast die Teameinladung abgelehnt"
},
@@ -2588,6 +2678,9 @@
"scopes.versionWrite.label": {
"message": "Versionen bearbeiten"
},
"search.filter.game-version-shader-message": {
"message": "Shaderpakete für ältere Versionen funktionieren meistens auch auf neueren Versionen, mit nur kleinen Problemen."
},
"search.filter.locked.server": {
"message": "Vom Server vorgegeben"
},
@@ -2675,9 +2768,6 @@
"settings.billing.payment_method.action.primary": {
"message": "Als primär festlegen"
},
"settings.billing.payment_method.card_display": {
"message": "{card_brand} mit Endung {last_four}"
},
"settings.billing.payment_method.card_expiry": {
"message": "Gültig bis {month}/{year}"
},
@@ -2690,42 +2780,6 @@
"settings.billing.payment_method.title": {
"message": "Zahlungsmethoden"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Discover"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.unknown": {
"message": "Unbekannte Zahlungsmethode"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.billing.pyro_subscription.description": {
"message": "Verwalte deine Modrinth Server-Abonnements."
},
@@ -2879,18 +2933,12 @@
"settings.profile.profile-info": {
"message": "Profilinformationen"
},
"settings.profile.profile-picture.reset": {
"message": "Zurücksetzen"
},
"settings.profile.profile-picture.title": {
"message": "Profilbild"
},
"settings.profile.username.description": {
"message": "Ein eindeutiger Name ohne Berücksichtigung der Groß-/Kleinschreibung zur Identifizierung deines Profils."
},
"settings.profile.username.title": {
"message": "Nutzername"
},
"settings.sessions.action.revoke-session": {
"message": "Sitzung widerrufen"
},
+1 -1
View File
@@ -5,6 +5,6 @@
},
"searchTerms": {
"description": "Please provide additional search terms associated with the language, if needed, to enhance the search functionality (e.g., American English, Deutschland). Each search term should be entered on a separate line. Translate as a hyphen (-) if no additional terms are needed.",
"message": "Deutschland\nDeutsch\nHochdeutsch\nDE\nDEU\nGermany\nGerman\nGER"
"message": "Deutschland\nDeutsch\nHochdeutsch\nDE\nDEU\nGerman\nGermany\nGER"
}
}
+342 -171
View File
@@ -230,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Enter your email below and we'll send a recovery link to allow you to recover your account."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "Email or username"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "Email"
},
"auth.reset-password.notification.email-sent.text": {
"message": "An email with instructions has been sent to you if the email was previously saved on your account."
},
@@ -275,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Forgot password?</forgot-password-link> • <create-account-link>Create an account</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "Email or username"
},
"auth.sign-in.password.label": {
"message": "Password"
},
"auth.sign-in.sign-in-with": {
"message": "Sign in with"
},
@@ -293,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Create account"
},
"auth.sign-up.confirm-password.label": {
"message": "Confirm password"
},
"auth.sign-up.email.label": {
"message": "Email"
},
"auth.sign-up.label.username": {
"message": "Username"
},
"auth.sign-up.legal-dislaimer": {
"message": "By creating an account, you agree to Modrinth's <terms-link>Terms</terms-link> and <privacy-policy-link>Privacy Policy</privacy-policy-link>."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Passwords do not match!"
},
"auth.sign-up.password.label": {
"message": "Password"
},
"auth.sign-up.sign-in-option.title": {
"message": "Already have an account?"
},
@@ -329,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Account settings"
},
"auth.verify-email.action.sign-in": {
"message": "Sign in"
},
"auth.verify-email.already-verified.description": {
"message": "Your email is already verified!"
},
@@ -416,12 +389,6 @@
"collection.label.curated-by": {
"message": "Curated by"
},
"collection.label.description": {
"message": "Description"
},
"collection.label.details": {
"message": "Details"
},
"collection.label.no-projects": {
"message": "No projects in collection yet"
},
@@ -440,27 +407,15 @@
"collection.title": {
"message": "{name} - Collection"
},
"common.no": {
"message": "No"
},
"common.yes": {
"message": "Yes"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Supplementary files are for supporting resources like source code, not for alternative versions or variants."
},
"create.collection.cancel": {
"message": "Cancel"
},
"create.collection.collection-info": {
"message": "Your new collection will be created as a public collection with {count, plural, =0 {no projects} one {# project} other {# projects}}."
},
"create.collection.create-collection": {
"message": "Create collection"
},
"create.collection.error-title": {
"message": "An error occurred"
},
"create.collection.name-label": {
"message": "Name"
},
@@ -512,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "project"
},
"create.organization.cancel": {
"message": "Cancel"
},
"create.organization.create-organization": {
"message": "Create organization"
},
"create.organization.error-title": {
"message": "An error occurred"
},
"create.organization.name-label": {
"message": "Name"
},
@@ -545,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Cancel"
},
"create.project.create-project": {
"message": "Create project"
},
"create.project.error-title": {
"message": "An error occurred"
},
"create.project.name-label": {
"message": "Name"
},
@@ -578,9 +521,6 @@
"create.project.visibility-description": {
"message": "The visibility of your project after it has been approved."
},
"create.project.visibility-label": {
"message": "Visibility"
},
"create.project.visibility-private": {
"message": "Private"
},
@@ -788,15 +728,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "Connect your PayPal account to receive payments directly."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Save"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "Venmo handle saved successfully!"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Saved"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Sign in with PayPal"
},
@@ -815,18 +749,9 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Method"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Account Details"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Verification"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Tax form"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Details"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "To withdraw your full <b>{available}</b> available balance please complete the form below. It is required for tax reporting and only needs to be done once."
},
@@ -956,9 +881,6 @@
"dashboard.withdraw.completion.amount": {
"message": "Amount"
},
"dashboard.withdraw.completion.close-button": {
"message": "Close"
},
"dashboard.withdraw.completion.date": {
"message": "Date"
},
@@ -1142,15 +1064,216 @@
"frog.altText": {
"message": "A photorealistic painting of a frog labyrinth"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} more person} other {{count} more people}} were also frogged!"
},
"frog.sinceOpened": {
"message": "This page was opened {ago}"
},
"frog.title": {
"message": "Frog"
},
"hosting-marketing.available-locations": {
"message": "Available in North America, Europe, and Southeast Asia for wide coverage."
},
"hosting-marketing.billing.monthly": {
"message": "Pay monthly"
},
"hosting-marketing.billing.quarterly": {
"message": "Pay quarterly"
},
"hosting-marketing.billing.save-with-quarterly": {
"message": "Save 16% with quarterly billing!"
},
"hosting-marketing.billing.starting-at": {
"message": "Starting at {price} / month"
},
"hosting-marketing.billing.yearly": {
"message": "Pay yearly"
},
"hosting-marketing.faq.burst-threads": {
"message": "How do CPU burst threads work?"
},
"hosting-marketing.faq.burst-threads.answer": {
"message": "When your server is under heavy load, we temporarily give it access to additional CPU threads to help mitigate lag spikes and instability. This helps prevent the TPS from going below 20, ensuring the smoothest experience possible. Since those extra CPU threads are only shortly available during high load periods, they might not show up in Spark reports or other profiling tools."
},
"hosting-marketing.faq.cpu-kind": {
"message": "What kind of CPUs do Modrinth Hosting servers run on?"
},
"hosting-marketing.faq.cpu-kind.answer": {
"message": "Modrinth Hosting servers are powered by AMD Ryzen 7900 and 7950X3D equivalent CPUs at 5+ GHz, paired with DDR5 memory."
},
"hosting-marketing.faq.currency": {
"message": "What currency are the prices in?"
},
"hosting-marketing.faq.currency.answer": {
"message": "All prices are listed in United States Dollars (USD)."
},
"hosting-marketing.faq.ddos-protection": {
"message": "Do Modrinth Hosting servers have DDoS protection?"
},
"hosting-marketing.faq.ddos-protection.answer": {
"message": "Yes. All Modrinth Hosting servers come with DDoS protection, with up to 17Tbps capacity in some locations."
},
"hosting-marketing.faq.heading": {
"message": "Frequently Asked Questions"
},
"hosting-marketing.faq.how-fast": {
"message": "How fast are Modrinth Hosting servers?"
},
"hosting-marketing.faq.how-fast.answer.one": {
"message": "Modrinth Hosting servers are hosted on very modern high-performance hardware, but it's tough to say how exactly that will translate into how fast your server will run because there are so many factors that affect it, such as the mods, data packs, or plugins you're running on your server, and even user behavior."
},
"hosting-marketing.faq.how-fast.answer.two": {
"message": "Most performance issues that arise tend to be the fault of an unoptimized modpack, mod, data pack, or plugin that causes the server to lag. Since our servers are very high-end, you shouldn't run into much trouble as long as you pick an appropriate plan for the content you're running on the server."
},
"hosting-marketing.faq.increase-storage": {
"message": "Can I increase the storage on my server?"
},
"hosting-marketing.faq.increase-storage.answer": {
"message": "Yes, storage can be increased on your server at no additional cost. If you need more storage, reach out to Modrinth Support."
},
"hosting-marketing.faq.location": {
"message": "Where are Modrinth Hosting servers located? Can I choose a region?"
},
"hosting-marketing.faq.location.answer": {
"message": "We have servers available in North America, Europe, and Southeast Asia at the moment that you can choose upon purchase. More regions to come in the future! If you'd like to switch your region, please contact support."
},
"hosting-marketing.faq.versions-loaders": {
"message": "What Minecraft versions and loaders can be used?"
},
"hosting-marketing.faq.versions-loaders.answer.one": {
"message": "Modrinth Hosting servers can run any version of Minecraft: Java Edition going all the way back to version 1.2.5, including snapshot versions."
},
"hosting-marketing.faq.versions-loaders.answer.two": {
"message": "We also support a wide range of mod and plugin loaders, including Fabric, Quilt, Forge, and NeoForge for mods, as well as Paper and Purpur for plugins. Availability depends on whether the mod or plugin loader supports the selected Minecraft version."
},
"hosting-marketing.get-started": {
"message": "Get started"
},
"hosting-marketing.hero.button.manage-your-servers": {
"message": "Manage your servers"
},
"hosting-marketing.hero.button.start-a-new-server": {
"message": "Start a new server"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Start your server"
},
"hosting-marketing.hero.host-with-modrinth": {
"message": "Host your next server with Modrinth Hosting"
},
"hosting-marketing.hero.hosting-description": {
"message": "Modrinth Hosting is the easiest way to host your own Minecraft: Java Edition server. Seamlessly install and play your favorite mods and modpacks, all within the Modrinth platform."
},
"hosting-marketing.included.advanced-networking": {
"message": "Advanced networking management"
},
"hosting-marketing.included.advanced-networking.description": {
"message": "Add your own domain to your server, reserve up to 15 ports for mods that require them, and more."
},
"hosting-marketing.included.backups-included": {
"message": "Backups included"
},
"hosting-marketing.included.backups-included.description": {
"message": "Every server comes with 15 backups stored securely off-site."
},
"hosting-marketing.included.custom-url": {
"message": "Custom URL"
},
"hosting-marketing.included.custom-url.description": {
"message": "Share your server with a custom <contrast>modrinth.gg</contrast> URL."
},
"hosting-marketing.included.description": {
"message": "Included with every server is a suite of features designed to provide a hosting experience that only Modrinth can offer."
},
"hosting-marketing.included.file-manager": {
"message": "Easy to use file manager"
},
"hosting-marketing.included.file-manager.description": {
"message": "Search, manage, edit, and upload files directly to your server with ease."
},
"hosting-marketing.included.heading": {
"message": "Comes with all the features you need."
},
"hosting-marketing.included.help": {
"message": "Help when you need it"
},
"hosting-marketing.included.help.description": {
"message": "Reach out to the Modrinth team for help with your server at any time."
},
"hosting-marketing.included.powerful-console": {
"message": "A powerful console, server properties manager, and more"
},
"hosting-marketing.included.powerful-console.description": {
"message": "Modrinth Hosting comes with powerful tools to manage your server."
},
"hosting-marketing.included.sftp-access": {
"message": "SFTP access"
},
"hosting-marketing.included.sftp-access.description": {
"message": "Access your server's files directly with SFTP built into Modrinth Hosting."
},
"hosting-marketing.included.with-your-server": {
"message": "Included with your server"
},
"hosting-marketing.know-what-you-need": {
"message": "Know exactly what you need?"
},
"hosting-marketing.medal.info": {
"message": "Try a free <orange>3GB server</orange> for 5 days powered by <orange>Medal</orange>"
},
"hosting-marketing.medal.learn-more": {
"message": "Learn more"
},
"hosting-marketing.medal.text-secondary": {
"message": "Limited-time offer. No credit card required. Available for US servers."
},
"hosting-marketing.pick-customized-plan": {
"message": "Pick a customized plan with just the specs you need."
},
"hosting-marketing.server-for-everyone": {
"message": "There's a server for everyone"
},
"hosting-marketing.why.all-on-modrinth": {
"message": "Manage it all on Modrinth"
},
"hosting-marketing.why.all-on-modrinth.description": {
"message": "Your server, mods, players, and more are all on Modrinth. No need to switch between platforms."
},
"hosting-marketing.why.consistently-fast": {
"message": "Consistently fast"
},
"hosting-marketing.why.consistently-fast.description": {
"message": "Our infrastructure is never overloaded, meaning each server hosted with Modrinth always runs at its full performance."
},
"hosting-marketing.why.description": {
"message": "Choose from the thousands of modpacks on Modrinth or create your own. Invite your friends when you're ready to play."
},
"hosting-marketing.why.heading": {
"message": "Find a modpack. Now it's a server."
},
"hosting-marketing.why.modern-reliable-hosting": {
"message": "Experience modern, reliable hosting"
},
"hosting-marketing.why.modern-reliable-hosting.description": {
"message": "Modrinth Hosting servers are hosted on <contrast>high-performance AMD CPUs with DDR5 RAM</contrast>, running on custom-built software to ensure your server performs smoothly."
},
"hosting-marketing.why.where-mods-are": {
"message": "Play where your mods are"
},
"hosting-marketing.why.where-mods-are.description": {
"message": "Modrinth Hosting seamlessly integrates the mod and modpack installation process into your server."
},
"hosting-marketing.why.why-modrinth-hosting": {
"message": "Why Modrinth Hosting?"
},
"hosting-marketing.why.your-favorite-mods": {
"message": "All your favorite mods"
},
"hosting-marketing.why.your-favorite-mods.description": {
"message": "Choose between Vanilla, Fabric, Forge, Quilt and NeoForge. If it's on Modrinth, it can run on your server."
},
"hosting.plan.out-of-stock": {
"message": "Out of stock"
},
"hosting.plan.select-plan": {
"message": "Select plan"
},
"landing.button.discover-mods": {
"message": "Discover mods"
},
@@ -1262,15 +1385,6 @@
"landing.notifications.version-released": {
"message": "Version {version} has been released for {gameVersion}"
},
"landing.search.label": {
"message": "Search"
},
"landing.search.placeholder": {
"message": "Search..."
},
"landing.search.sort-by.label": {
"message": "Sort by"
},
"landing.section.for-creators.description": {
"message": "Give an online home to your creations and reach a massive audience of dedicated players."
},
@@ -1496,9 +1610,6 @@
"layout.nav.active-reports": {
"message": "Active reports"
},
"layout.nav.analytics": {
"message": "Analytics"
},
"layout.nav.discover": {
"message": "Discover"
},
@@ -1547,9 +1658,6 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Upgrade to Modrinth+"
},
"moderation.filter.by": {
"message": "Filter by"
},
"moderation.moderate": {
"message": "Moderate"
},
@@ -1562,12 +1670,6 @@
"moderation.page.technicalReview": {
"message": "Technical Review"
},
"moderation.search.placeholder": {
"message": "Search..."
},
"moderation.sort.by": {
"message": "Sort by"
},
"muralpay.account-type.checking": {
"message": "Checking"
},
@@ -1895,18 +1997,12 @@
"profile.label.collection": {
"message": "Collection"
},
"profile.label.details": {
"message": "Details"
},
"profile.label.downloads": {
"message": "{count} {count, plural, one {download} other {downloads}}"
},
"profile.label.joined": {
"message": "Joined"
},
"profile.label.no": {
"message": "No"
},
"profile.label.no-collections": {
"message": "This user has no collections!"
},
@@ -1928,9 +2024,6 @@
"profile.label.saving": {
"message": "Saving..."
},
"profile.label.yes": {
"message": "Yes"
},
"profile.meta.description": {
"message": "Download {username}'s projects on Modrinth"
},
@@ -1943,15 +2036,6 @@
"profile.user-id": {
"message": "User ID: {id}"
},
"project-member-header.accept": {
"message": "Accept"
},
"project-member-header.decline": {
"message": "Decline"
},
"project-member-header.error": {
"message": "Error"
},
"project-member-header.error-decline": {
"message": "Failed to decline team invitation"
},
@@ -1967,9 +2051,6 @@
"project-member-header.invitation-with-role": {
"message": "You've been invited to be a member of this project with the role of ''{role}''."
},
"project-member-header.success": {
"message": "Success"
},
"project-member-header.success-decline": {
"message": "You have declined the team invitation"
},
@@ -2363,6 +2444,42 @@
"scopes.analytics.label": {
"message": "Read analytics"
},
"scopes.category.analytics": {
"message": "Analytics"
},
"scopes.category.collections": {
"message": "Collections"
},
"scopes.category.notifications": {
"message": "Notifications"
},
"scopes.category.organizations": {
"message": "Organizations"
},
"scopes.category.pats": {
"message": "PATs"
},
"scopes.category.payouts": {
"message": "Payouts"
},
"scopes.category.projects": {
"message": "Projects"
},
"scopes.category.reports": {
"message": "Reports"
},
"scopes.category.sessions": {
"message": "Sessions"
},
"scopes.category.threads": {
"message": "Threads"
},
"scopes.category.user-account": {
"message": "User account"
},
"scopes.category.versions": {
"message": "Versions"
},
"scopes.collectionCreate.description": {
"message": "Create collections"
},
@@ -2597,6 +2714,9 @@
"scopes.versionWrite.label": {
"message": "Write versions"
},
"search.filter.game-version-shader-message": {
"message": "Shader packs for older versions most likely work on newer versions with only minor issues."
},
"search.filter.locked.server": {
"message": "Provided by the server"
},
@@ -2657,6 +2777,102 @@
"servers.plan.small.name": {
"message": "Small"
},
"settings.applications.about": {
"message": "About"
},
"settings.applications.button.add-more": {
"message": "Add more"
},
"settings.applications.button.add-redirect-uri": {
"message": "Add a redirect uri"
},
"settings.applications.button.cancel": {
"message": "Cancel"
},
"settings.applications.button.create": {
"message": "Create app"
},
"settings.applications.button.delete": {
"message": "Delete"
},
"settings.applications.button.edit": {
"message": "Edit"
},
"settings.applications.button.new": {
"message": "New application"
},
"settings.applications.button.save-changes": {
"message": "Save changes"
},
"settings.applications.button.upload-icon": {
"message": "Upload icon"
},
"settings.applications.client-id": {
"message": "Client ID"
},
"settings.applications.client-secret": {
"message": "Client secret"
},
"settings.applications.created-on": {
"message": "Created on {date}"
},
"settings.applications.delete.confirm.button": {
"message": "Delete this application"
},
"settings.applications.delete.confirm.description": {
"message": "This will permanently delete this application and revoke all access tokens. (forever!)"
},
"settings.applications.delete.confirm.title": {
"message": "Are you sure you want to delete this application?"
},
"settings.applications.description.intro": {
"message": "Applications can be used to authenticate Modrinth's users with your products. For more information, see <docs-link>Modrinth's API documentation</docs-link>."
},
"settings.applications.field.description": {
"message": "Description"
},
"settings.applications.field.description.placeholder": {
"message": "Enter the application's description..."
},
"settings.applications.field.icon": {
"message": "Icon"
},
"settings.applications.field.name": {
"message": "Name"
},
"settings.applications.field.name.placeholder": {
"message": "Enter the application's name..."
},
"settings.applications.field.redirect-uri.placeholder": {
"message": "https://example.com/auth/callback"
},
"settings.applications.field.redirect-uris": {
"message": "Redirect uris"
},
"settings.applications.field.scopes": {
"message": "Scopes"
},
"settings.applications.field.url": {
"message": "URL"
},
"settings.applications.field.url.placeholder": {
"message": "https://example.com"
},
"settings.applications.modal.header": {
"message": "Application information"
},
"settings.applications.notification.error.title": {
"message": "An error occurred"
},
"settings.applications.notification.icon-updated.description": {
"message": "Your application icon has been updated."
},
"settings.applications.notification.icon-updated.title": {
"message": "Icon updated"
},
"settings.applications.secret.disclaimer": {
"message": "Save your secret now, it will be hidden after you leave this page!"
},
"settings.billing.modal.cancel.action": {
"message": "Cancel subscription"
},
@@ -2684,9 +2900,6 @@
"settings.billing.payment_method.action.primary": {
"message": "Make primary"
},
"settings.billing.payment_method.card_display": {
"message": "{card_brand} ending in {last_four}"
},
"settings.billing.payment_method.card_expiry": {
"message": "Expires {month}/{year}"
},
@@ -2699,42 +2912,6 @@
"settings.billing.payment_method.title": {
"message": "Payment methods"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Discover"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.unknown": {
"message": "Unknown payment method"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.billing.pyro_subscription.description": {
"message": "Manage your Modrinth Server subscriptions."
},
@@ -2888,18 +3065,12 @@
"settings.profile.profile-info": {
"message": "Profile information"
},
"settings.profile.profile-picture.reset": {
"message": "Reset"
},
"settings.profile.profile-picture.title": {
"message": "Profile picture"
},
"settings.profile.username.description": {
"message": "A unique case-insensitive name to identify your profile."
},
"settings.profile.username.title": {
"message": "Username"
},
"settings.sessions.action.revoke-session": {
"message": "Revoke session"
},
+223 -175
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "Descargar RPM"
},
"app-marketing.download.flathub": {
"message": "Consígalo en Flathub"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "Al descargar la Modrinth App, aceptas nuestros <terms-link>Términos de uso</terms-link> y nuestra <privacy-link>Política de privacidad</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Paquetes de terceros"
},
"app-marketing.download.title": {
"message": "Descargar la Modrinth App (Beta)"
},
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "Más opciones de descarga"
},
"app-marketing.hide-other-packages": {
"message": "Ocultar otros paquetes"
},
"app-marketing.not-recommended": {
"message": "No recomendamos usar esos al menos que sepas lo que estas haciendo."
},
"app-marketing.show-other-packages": {
"message": "Mostrar otros paquetes"
},
"auth.authorize.action.authorize": {
"message": "Autorizar"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Introduce tu correo electrónico a continuación y te enviaremos un enlace para recuperar tu cuenta."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "Correo o nombre de usuario"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "Correo electrónico"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Se ha enviado un correo con instrucciones si el correo estaba previamente guardado en tu cuenta."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>¿Olvidaste tu contraseña?</forgot-password-link> • <create-account-link>Crear una cuenta</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "Correo o usuario"
},
"auth.sign-in.password.label": {
"message": "Contraseña"
},
"auth.sign-in.sign-in-with": {
"message": "Iniciar sesión con"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Crear cuenta"
},
"auth.sign-up.confirm-password.label": {
"message": "Confirmar contraseña"
},
"auth.sign-up.email.label": {
"message": "Correo"
},
"auth.sign-up.label.username": {
"message": "Nombre de usuario"
},
"auth.sign-up.legal-dislaimer": {
"message": "Al crear una cuenta, aceptas los <terms-link>Términos</terms-link> y la <privacy-policy-link>Política de privacidad</privacy-policy-link> de Modrinth."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "¡Las contraseñas no coinciden!"
},
"auth.sign-up.password.label": {
"message": "Contraseña"
},
"auth.sign-up.sign-in-option.title": {
"message": "¿Ya tienes una cuenta?"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Configuración de cuenta"
},
"auth.verify-email.action.sign-in": {
"message": "Iniciar sesión"
},
"auth.verify-email.already-verified.description": {
"message": "¡Tu correo ya está verificado!"
},
@@ -407,12 +389,6 @@
"collection.label.curated-by": {
"message": "Seleccionado por"
},
"collection.label.description": {
"message": "Descripción"
},
"collection.label.details": {
"message": "Detalles"
},
"collection.label.no-projects": {
"message": "Aún no hay proyectos en la colección"
},
@@ -431,27 +407,15 @@
"collection.title": {
"message": "{name} - Colección"
},
"common.no": {
"message": "No"
},
"common.yes": {
"message": "Sí"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Los archivos complementarios sirven para recursos de apoyo, como código fuente, no para versiones o variantes alternativas."
},
"create.collection.cancel": {
"message": "Cancelar"
},
"create.collection.collection-info": {
"message": "Tu nueva colección se creará como una colección pública con {count, plural, =0 {ningún proyecto} one {# proyecto} other {# proyectos}}."
},
"create.collection.create-collection": {
"message": "Crear colección"
},
"create.collection.error-title": {
"message": "Se ha producido un error"
},
"create.collection.name-label": {
"message": "Nombre"
},
@@ -503,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "proyecto"
},
"create.organization.cancel": {
"message": "Cancelar"
},
"create.organization.create-organization": {
"message": "Crear organización"
},
"create.organization.error-title": {
"message": "Se ha producido un error"
},
"create.organization.name-label": {
"message": "Nombre"
},
@@ -536,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Cancelar"
},
"create.project.create-project": {
"message": "Crear proyecto"
},
"create.project.error-title": {
"message": "Se ha producido un error"
},
"create.project.name-label": {
"message": "Nombre"
},
@@ -569,9 +521,6 @@
"create.project.visibility-description": {
"message": "La visibilidad de tu proyecto después de que sea aprobado."
},
"create.project.visibility-label": {
"message": "Visibilidad"
},
"create.project.visibility-private": {
"message": "Privado"
},
@@ -779,15 +728,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "Conecta tu cuenta de PayPal para recibir pagos directamente."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Guardar"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "¡Nombre de usuario de Venmo guardado con éxito!"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Guardado"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Iniciar sesión con PayPal"
},
@@ -806,18 +749,9 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Método"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Detalles de la cuenta"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Verificación"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Formulario fiscal"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Detalles"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "Para retirar tu saldo total disponible de <b>{available}</b>, completa el formulario a continuación. Es necesario para la declaración de impuestos y solo debe hacerse una vez."
},
@@ -947,9 +881,6 @@
"dashboard.withdraw.completion.amount": {
"message": "Cantidad"
},
"dashboard.withdraw.completion.close-button": {
"message": "Cerrar"
},
"dashboard.withdraw.completion.date": {
"message": "Fecha"
},
@@ -1133,15 +1064,216 @@
"frog.altText": {
"message": "Una pintura fotorealista de un laberinto de ranas"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} persona más} other {{count} personas más}} ¡han sido raneadas!"
},
"frog.sinceOpened": {
"message": "Esta página fue abierta {ago}"
},
"frog.title": {
"message": "Rana"
},
"hosting-marketing.available-locations": {
"message": "Disponible en Norteamérica, Europa y el sudeste asiático para una amplia cobertura."
},
"hosting-marketing.billing.monthly": {
"message": "Paga Mensualmente"
},
"hosting-marketing.billing.quarterly": {
"message": "Pagar trimestralmente"
},
"hosting-marketing.billing.save-with-quarterly": {
"message": "¡Ahorra un 16% con la facturación trimestral!"
},
"hosting-marketing.billing.starting-at": {
"message": "Desde {price} / mes"
},
"hosting-marketing.billing.yearly": {
"message": "Paga Anualmente"
},
"hosting-marketing.faq.burst-threads": {
"message": "¿Cómo funcionan los hilos con ráfagas de CPU?"
},
"hosting-marketing.faq.burst-threads.answer": {
"message": "Cuando tu servidor está bajo una carga intensa, se le otorga temporalmente acceso a subprocesos adicionales de CPU para ayudar a reducir los picos de lag y la inestabilidad. Esto evita que el TPS baje de 20, garantizando la experiencia más fluida posible. Dado que estos subprocesos extra solo están disponibles brevemente durante períodos de alta carga, es posible que no aparezcan en los informes de Spark ni en otras herramientas de perfilado."
},
"hosting-marketing.faq.cpu-kind": {
"message": "¿Qué tipo de CPU utilizan los servidores de Modrinth Hosting?"
},
"hosting-marketing.faq.cpu-kind.answer": {
"message": "Los servidores de Modrinth Hosting funcionan con CPU AMD Ryzen 7900 y 7950X3D equivalentes a más de 5 GHz, combinadas con memoria DDR5."
},
"hosting-marketing.faq.currency": {
"message": "¿En que moneda están los precios?"
},
"hosting-marketing.faq.currency.answer": {
"message": "Todos los precios están en Dolares Estadounidenses (USD)."
},
"hosting-marketing.faq.ddos-protection": {
"message": "¿Los servidores de Modrinth Hosting tendrán protección contra DDoS?"
},
"hosting-marketing.faq.ddos-protection.answer": {
"message": "Si. Todos los servidores de Modrinth Hosting vienen con protección contra DDoS, con hasta 17 terabits por segundo (Tbps) en algunos lugares."
},
"hosting-marketing.faq.heading": {
"message": "Preguntas Frecuentes (FAQ)"
},
"hosting-marketing.faq.how-fast": {
"message": "¿Qué tan rápidos son los servidores de Modrinth Hosting?"
},
"hosting-marketing.faq.how-fast.answer.one": {
"message": "Los servidores de Modrinth Hosting están alojados en hardware muy moderno y de alto rendimiento, pero es difícil decir exactamente cómo se traducirá eso en la velocidad de funcionamiento de tu servidor, ya que hay muchos factores que influyen en ello, como los mods, los paquetes de datos o los plugins que ejecutas en tu servidor, e incluso el comportamiento de los usuarios."
},
"hosting-marketing.faq.how-fast.answer.two": {
"message": "La mayoría de los problemas de rendimiento que surgen suelen deberse a un modpack, mod, paquete de datos o complemento no optimizado que provoca retrasos en el servidor. Dado que nuestros servidores son de gama muy alta, no deberías tener muchos problemas siempre que elijas un plan adecuado para el contenido que ejecutas en el servidor."
},
"hosting-marketing.faq.increase-storage": {
"message": "¿Puedo aumentar el almacenamiento en mi servidor?"
},
"hosting-marketing.faq.increase-storage.answer": {
"message": "Sí, se puede aumentar el almacenamiento en su servidor sin coste adicional. Si necesita más almacenamiento, póngase en contacto con el servicio de asistencia de Modrinth"
},
"hosting-marketing.faq.location": {
"message": "¿Dónde se encuentran los servidores de Modrinth Hosting? ¿Puedo elegir una región?"
},
"hosting-marketing.faq.location.answer": {
"message": "Actualmente disponemos de servidores en Norteamérica, Europa y el Sudeste Asiático entre los que puede elegir al realizar la compra. ¡En el futuro añadiremos más regiones! Si desea cambiar de región, póngase en contacto con el servicio de asistencia."
},
"hosting-marketing.faq.versions-loaders": {
"message": "¿Qué versiones y cargadores de Minecraft se pueden utilizar?"
},
"hosting-marketing.faq.versions-loaders.answer.one": {
"message": "Los servidores de Modrinth Hosting pueden ejecutar cualquier versión de Minecraft: Java Edition, incluidas las de prueba, a partir de la 1.2.5."
},
"hosting-marketing.faq.versions-loaders.answer.two": {
"message": "También admitimos una amplia gama de cargadores de mods y plugins, incluidos Fabric, Quilt, Forge y NeoForge para mods, así como Paper y Purpur para plugins. La disponibilidad depende de si el cargador de mods o plugins es compatible con la versión seleccionada de Minecraft."
},
"hosting-marketing.get-started": {
"message": "Comenzar"
},
"hosting-marketing.hero.button.manage-your-servers": {
"message": "Administra tus servidores"
},
"hosting-marketing.hero.button.start-a-new-server": {
"message": "Inicia un nuevo servidor"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Inicia tu servidor"
},
"hosting-marketing.hero.host-with-modrinth": {
"message": "Aloja tu próximo servidor con Modrinth Hosting"
},
"hosting-marketing.hero.hosting-description": {
"message": "Modrinth Hosting es la forma más fácil de alojar tu propio servidor de Minecraft: Java Edition. Instala y juega sin problemas tus mods y modpacks favoritos, todo dentro de la plataforma Modrinth."
},
"hosting-marketing.included.advanced-networking": {
"message": "Gestión avanzada de redes"
},
"hosting-marketing.included.advanced-networking.description": {
"message": "Añade tu propio dominio al servidor, reserva hasta 15 puertos para los mods que los requieran y mucho más."
},
"hosting-marketing.included.backups-included": {
"message": "Copias de seguridad incluidas"
},
"hosting-marketing.included.backups-included.description": {
"message": "Cada servidor incluye 15 copias de seguridad almacenadas de forma segura fuera de las instalaciones."
},
"hosting-marketing.included.custom-url": {
"message": "URL personalizada"
},
"hosting-marketing.included.custom-url.description": {
"message": "Comparte tu servidor con una URL personalizada <contrast>modrinth.gg</contrast>"
},
"hosting-marketing.included.description": {
"message": "Cada servidor incluye un conjunto de funciones diseñadas para proporcionar una experiencia de alojamiento que solo Modrinth puede ofrecer."
},
"hosting-marketing.included.file-manager": {
"message": "Administrador de archivos fácil de usar"
},
"hosting-marketing.included.file-manager.description": {
"message": "Busca, gestiona, edita y sube archivos directamente a tu servidor con facilidad."
},
"hosting-marketing.included.heading": {
"message": "Incluye todas las funciones que necesitas."
},
"hosting-marketing.included.help": {
"message": "Ayuda cuando la necesites"
},
"hosting-marketing.included.help.description": {
"message": "Póngase en contacto con el equipo de Modrinth para obtener ayuda con su servidor en cualquier momento."
},
"hosting-marketing.included.powerful-console": {
"message": "Una potente consola, un administrador de propiedades del servidor y mucho más"
},
"hosting-marketing.included.powerful-console.description": {
"message": "Modrinth Hosting incluye potentes herramientas para gestionar su servidor."
},
"hosting-marketing.included.sftp-access": {
"message": "Acceso SFTP"
},
"hosting-marketing.included.sftp-access.description": {
"message": "Acceda directamente a los archivos de su servidor con SFTP integrado en Modrinth Hosting."
},
"hosting-marketing.included.with-your-server": {
"message": "Incluido con su servidor"
},
"hosting-marketing.know-what-you-need": {
"message": "¿Sabes exactamente lo que necesitas?"
},
"hosting-marketing.medal.info": {
"message": "Prueba un <orange>servidor de 3GB</orange> gratis por 5 días a través de <orange>Medal</orange>"
},
"hosting-marketing.medal.learn-more": {
"message": "Aprender más"
},
"hosting-marketing.medal.text-secondary": {
"message": "Oferta limitada. Sin necesidad de tarjeta de crédito. Disponible para servidores de EE. UU."
},
"hosting-marketing.pick-customized-plan": {
"message": "Elige un plan personalizado con solo las especificaciones que necesites."
},
"hosting-marketing.server-for-everyone": {
"message": "Hay un servidor para todos"
},
"hosting-marketing.why.all-on-modrinth": {
"message": "Gestiona todo en Modrinth"
},
"hosting-marketing.why.all-on-modrinth.description": {
"message": "Tu servidor, mods, jugadores y mucho más están todos en Modrinth. No es necesario cambiar de plataforma."
},
"hosting-marketing.why.consistently-fast": {
"message": "Siempre rápido"
},
"hosting-marketing.why.consistently-fast.description": {
"message": "Nuestra infraestructura nunca se sobrecarga, lo que significa que cada servidor alojado en Modrinth siempre funciona a pleno rendimiento."
},
"hosting-marketing.why.description": {
"message": "Elige entre los miles de paquetes de mods disponibles en Modrinth o crea el tuyo propio. Invita a tus amigos cuando estés listo para jugar."
},
"hosting-marketing.why.heading": {
"message": "Busca un modpack. Ahora es un servidor."
},
"hosting-marketing.why.modern-reliable-hosting": {
"message": "Disfrute de un alojamiento moderno y fiable"
},
"hosting-marketing.why.modern-reliable-hosting.description": {
"message": "Los servidores de Modrinth Hosting están alojados en <contrast>Procesadores AMD de alto rendimiento con RAM DDR5</contrast>, y funcionan con software personalizado para garantizar el buen funcionamiento de su servidor."
},
"hosting-marketing.why.where-mods-are": {
"message": "Juega donde están tus mods"
},
"hosting-marketing.why.where-mods-are.description": {
"message": "Modrinth Hosting integra a la perfección el proceso de instalación de mods y modpacks en tu servidor."
},
"hosting-marketing.why.why-modrinth-hosting": {
"message": "¿Por qué Modrinth Hosting?"
},
"hosting-marketing.why.your-favorite-mods": {
"message": "Todos tus mods favoritos"
},
"hosting-marketing.why.your-favorite-mods.description": {
"message": "Elige entre Vanilla, Fabric, Forge, Quilt y NeoForge. Si está en Modrinth, puede ejecutarse en tu servidor."
},
"hosting.plan.out-of-stock": {
"message": "Agotado"
},
"hosting.plan.select-plan": {
"message": "Seleccionar plan"
},
"landing.button.discover-mods": {
"message": "Descubre mods"
},
@@ -1206,7 +1338,7 @@
"message": "Encuentra lo que buscas, rápido y fácil"
},
"landing.heading.the-place-for-minecraft": {
"message": "El lugar para Minecraft {content}"
"message": "El lugar para {content} de Minecraft"
},
"landing.heading.the-place-for-minecraft.data-packs": {
"message": "data packs"
@@ -1253,15 +1385,6 @@
"landing.notifications.version-released": {
"message": "La versión {version} ha sido lanzada para {gameVersion}"
},
"landing.search.label": {
"message": "Buscar"
},
"landing.search.placeholder": {
"message": "Buscar..."
},
"landing.search.sort-by.label": {
"message": "Ordenar por"
},
"landing.section.for-creators.description": {
"message": "Dale un hogar en línea a tus creaciones y alcanza a una gran comunidad de jugadores apasionados."
},
@@ -1487,9 +1610,6 @@
"layout.nav.active-reports": {
"message": "Reportes activos"
},
"layout.nav.analytics": {
"message": "Estadísticas"
},
"layout.nav.discover": {
"message": "Descubre"
},
@@ -1538,9 +1658,6 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Actualizar a Modrinth+"
},
"moderation.filter.by": {
"message": "Filtrar por"
},
"moderation.moderate": {
"message": "Moderar"
},
@@ -1553,12 +1670,6 @@
"moderation.page.technicalReview": {
"message": "Revisión técnica"
},
"moderation.search.placeholder": {
"message": "Buscar..."
},
"moderation.sort.by": {
"message": "Ordenar por"
},
"muralpay.account-type.checking": {
"message": "Cuenta de cheques"
},
@@ -1886,18 +1997,12 @@
"profile.label.collection": {
"message": "Colección"
},
"profile.label.details": {
"message": "Detalles"
},
"profile.label.downloads": {
"message": "{count} {count, plural, one {descarga} other {descargas}}"
},
"profile.label.joined": {
"message": "Se unió"
},
"profile.label.no": {
"message": "No"
},
"profile.label.no-collections": {
"message": "¡Este usuario no tiene colecciones!"
},
@@ -1919,9 +2024,6 @@
"profile.label.saving": {
"message": "Guardando..."
},
"profile.label.yes": {
"message": "Sí"
},
"profile.meta.description": {
"message": "Descarga proyectos de {username} en Modrinth"
},
@@ -1934,15 +2036,6 @@
"profile.user-id": {
"message": "ID de usuario: {id}"
},
"project-member-header.accept": {
"message": "Aceptar"
},
"project-member-header.decline": {
"message": "Rechazar"
},
"project-member-header.error": {
"message": "Error"
},
"project-member-header.error-decline": {
"message": "Error al rechazar la invitación del equipo"
},
@@ -1958,9 +2051,6 @@
"project-member-header.invitation-with-role": {
"message": "Has sido invitado a ser miembro de este proyecto con el rol de ''{role}''."
},
"project-member-header.success": {
"message": "Éxito"
},
"project-member-header.success-decline": {
"message": "Has rechazado la invitación del equipo"
},
@@ -2588,6 +2678,9 @@
"scopes.versionWrite.label": {
"message": "Crear versiones"
},
"search.filter.game-version-shader-message": {
"message": "Los shader packs para versiones antiguas suelen funcionar en versiones más nuevas con pequeños problemas."
},
"search.filter.locked.server": {
"message": "Proporcionado por el servidor"
},
@@ -2675,9 +2768,6 @@
"settings.billing.payment_method.action.primary": {
"message": "Establecer como principal"
},
"settings.billing.payment_method.card_display": {
"message": "{card_brand} con terminación {last_four}"
},
"settings.billing.payment_method.card_expiry": {
"message": "Expira {month}/{year}"
},
@@ -2690,42 +2780,6 @@
"settings.billing.payment_method.title": {
"message": "Métodos de pago"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Discover"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.unknown": {
"message": "Método de pago desconocido"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.billing.pyro_subscription.description": {
"message": "Gestiona tus suscripciones de Modrinth Servers."
},
@@ -2879,18 +2933,12 @@
"settings.profile.profile-info": {
"message": "Información del perfil"
},
"settings.profile.profile-picture.reset": {
"message": "Restablecer"
},
"settings.profile.profile-picture.title": {
"message": "Imagen de perfil"
},
"settings.profile.username.description": {
"message": "Un nombre único, sin distinción entre mayúsculas y minúsculas, para identificar tu perfil."
},
"settings.profile.username.title": {
"message": "Nombre de usuario"
},
"settings.sessions.action.revoke-session": {
"message": "Revocar sesión"
},
+203 -173
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "Descargar el RPM"
},
"app-marketing.download.flathub": {
"message": "Consígalo en Flathub"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "Al descargar la aplicación Modrinth, aceptas nuestros <terms-link>Términos</terms-link> y nuestra <privacy-link>Política de Privacidad</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Paquetes de terceros"
},
"app-marketing.download.title": {
"message": "Descargar la aplicación Modrinth (Beta)"
},
@@ -221,12 +221,6 @@
"auth.reset-password.method-choice.description": {
"message": "Introduce tu correo electrónico a continuación y te enviaremos un enlace para que puedas recuperar tu cuenta."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "Correo electrónico o nombre de usuario"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "Correo electrónico"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Se te ha enviado un correo electrónico con instrucciones si el correo electrónico está asociado a tu cuenta."
},
@@ -266,12 +260,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>¿Olvidaste tu contraseña?</forgot-password-link> • <create-account-link>Crear una cuenta</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "Correo electrónico o nombre de usuario"
},
"auth.sign-in.password.label": {
"message": "Contraseña"
},
"auth.sign-in.sign-in-with": {
"message": "Iniciar sesión con"
},
@@ -284,24 +272,12 @@
"auth.sign-up.action.create-account": {
"message": "Crear cuenta"
},
"auth.sign-up.confirm-password.label": {
"message": "Confirmar contraseña"
},
"auth.sign-up.email.label": {
"message": "Correo electrónico"
},
"auth.sign-up.label.username": {
"message": "Nombre de usuario"
},
"auth.sign-up.legal-dislaimer": {
"message": "Al crear una cuenta, tú aceptas los <terms-link>Términos</terms-link> y <privacy-policy-link>Política de Privacidad</privacy-policy-link> de Modrinth."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "¡Las contraseñas no coinciden!"
},
"auth.sign-up.password.label": {
"message": "Contraseña"
},
"auth.sign-up.sign-in-option.title": {
"message": "¿Ya tienes una cuenta?"
},
@@ -320,9 +296,6 @@
"auth.verify-email.action.account-settings": {
"message": "Ajustes de cuenta"
},
"auth.verify-email.action.sign-in": {
"message": "Iniciar sesión"
},
"auth.verify-email.already-verified.description": {
"message": "¡Tu correo electrónico ya está verificado!"
},
@@ -407,12 +380,6 @@
"collection.label.curated-by": {
"message": "Mantenida por"
},
"collection.label.description": {
"message": "Descripción"
},
"collection.label.details": {
"message": "Detalles"
},
"collection.label.no-projects": {
"message": "No hay proyectos en colección todavía"
},
@@ -431,27 +398,15 @@
"collection.title": {
"message": "{name} - Colección"
},
"common.no": {
"message": "No"
},
"common.yes": {
"message": "Si"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Los archivos complementarios son para recursos de soporte, como el código fuente, no para versiones alternativas o variantes."
},
"create.collection.cancel": {
"message": "Cancelar"
},
"create.collection.collection-info": {
"message": "Tu nueva colección se creará como colección pública {count, plural, =0 {sin ningún proyecto} one {# proyecto} other {# proyectos}}."
},
"create.collection.create-collection": {
"message": "Crear colección"
},
"create.collection.error-title": {
"message": "Se ha producido un error"
},
"create.collection.name-label": {
"message": "Nombre"
},
@@ -503,15 +458,9 @@
"create.limit-alert.type-project": {
"message": "proyecto"
},
"create.organization.cancel": {
"message": "Cancelar"
},
"create.organization.create-organization": {
"message": "Crear organización"
},
"create.organization.error-title": {
"message": "Se ha producido un error"
},
"create.organization.name-label": {
"message": "Nombre"
},
@@ -536,15 +485,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Cancelar"
},
"create.project.create-project": {
"message": "Crear proyecto"
},
"create.project.error-title": {
"message": "Se ha producido un error"
},
"create.project.name-label": {
"message": "Nombre"
},
@@ -569,9 +512,6 @@
"create.project.visibility-description": {
"message": "La visibilidad de tu proyecto después de que haya sido aprobado."
},
"create.project.visibility-label": {
"message": "Visibilidad"
},
"create.project.visibility-private": {
"message": "Privado"
},
@@ -773,15 +713,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "Conecta tu cuenta de PayPal para recibir pagos directamente."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Guardar"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "¡Usuario de Venmo guardado con éxito!"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Guardado"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Entrar con PayPal"
},
@@ -800,38 +734,86 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Método"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Detalles de cuenta"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Verificación"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Formulario fiscal"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Detalles"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "Para retirar el saldo total <b>{available}</b> disponible, rellene el siguiente formulario. Es necesario para la declaración de impuestos y solo hay que hacerlo una vez."
},
"dashboard.creator-withdraw-modal.tremendous-details.available-denominations-label": {
"message": "Denominaciones disponibles"
},
"dashboard.creator-withdraw-modal.tremendous-details.enter-amount-hint": {
"message": "Encuentra tarjetas de regalo cerca de este valor."
},
"dashboard.creator-withdraw-modal.tremendous-details.enter-denomination-placeholder": {
"message": "Introducir monto"
},
"dashboard.creator-withdraw-modal.tremendous-details.payment-method": {
"message": "Método de pago"
},
"dashboard.creator-withdraw-modal.tremendous-details.reward": {
"message": "Recompensa"
},
"dashboard.creator-withdraw-modal.tremendous-details.reward-placeholder": {
"message": "Selecciona una recompensa"
},
"dashboard.creator-withdraw-modal.tremendous-details.reward-plural": {
"message": "Recompensas"
},
"dashboard.creator-withdraw-modal.tremendous-details.search-amount-label": {
"message": "Buscar monto"
},
"dashboard.creator-withdraw-modal.tremendous-details.select-denomination-hint": {
"message": "Selecciona una denominación:"
},
"dashboard.creator-withdraw-modal.tremendous-details.select-denomination-required": {
"message": "Selecciona una denominación para continuar"
},
"dashboard.creator-withdraw-modal.tremendous-details.unverified-email-header": {
"message": "Email no verificado"
},
"dashboard.creator-withdraw-modal.tremendous-details.usd-paypal-warning-header": {
"message": "Tarifas más bajas disponibles"
},
"dashboard.creator-withdraw-modal.withdraw-button": {
"message": "Retirada"
},
"dashboard.revenue.available-now": {
"message": "Ya disponible"
},
"dashboard.revenue.balance": {
"message": "Balance"
},
"dashboard.revenue.processing": {
"message": "Procesando"
},
"dashboard.revenue.stats.received": {
"message": "Recibido"
},
"dashboard.revenue.stats.transactions": {
"message": "Transacciones"
},
"dashboard.revenue.tos": {
"message": "Al subir proyectos a Modrinth y retirar dinero de tu cuenta, aceptas nuestros <terms-link>Términos del programa de recompensas</terms-link>. Más información sobre el <info-link>Programa de recompensas</info-link>."
},
"dashboard.withdraw.completion.close-button": {
"message": "Cerrar"
"dashboard.revenue.transactions.btn.download-csv": {
"message": "Descargar como CSV"
},
"dashboard.revenue.transactions.header": {
"message": "Transacciones"
},
"dashboard.revenue.transactions.none": {
"message": "No hay transacciones"
},
"dashboard.revenue.transactions.see-all": {
"message": "Ver todos"
},
"dashboard.withdraw.completion.account": {
"message": "Cuenta"
},
"dashboard.withdraw.completion.amount": {
"message": "Monto"
},
"dashboard.withdraw.completion.date": {
"message": "Fecha"
@@ -842,11 +824,23 @@
"dashboard.withdraw.completion.method": {
"message": "Método"
},
"dashboard.withdraw.completion.transactions-button": {
"message": "Transacciones"
},
"dashboard.withdraw.completion.wallet": {
"message": "Cartera"
},
"dashboard.withdraw.error.account-not-linked.title": {
"message": "Cuenta no vinculada"
},
"dashboard.withdraw.error.email-verification.text": {
"message": "Debes verificar tu email antes de retirar los fondos."
},
"dashboard.withdraw.error.email-verification.title": {
"message": "Verificación vía email requerida"
},
"dashboard.withdraw.error.invalid-bank.text": {
"message": ""
"message": "Los datos de la cuenta bancaria que has proporcionado no son válidos. Verifica la información."
},
"error.collection.404.list_item.1": {
"message": "Has escrito mal en enlace de esta colección."
@@ -936,17 +930,92 @@
"message": "Usuario no encontrado"
},
"frog": {
"message": ""
"message": "¡Te han ranado! 🐸"
},
"frog.altText": {
"message": "Una pintura fotorrealista de un laberinto de ranas"
},
"frog.sinceOpened": {
"message": "Esta página se abrió hace {ago}"
},
"frog.title": {
"message": "Rana"
},
"hosting-marketing.available-locations": {
"message": "Disponible en América del Norte, Europa y Sureste de Asia para una alta cobertura."
},
"hosting-marketing.billing.monthly": {
"message": "Pagar mensualmente"
},
"hosting-marketing.billing.starting-at": {
"message": "Empezando desde {price} / mes"
},
"hosting-marketing.billing.yearly": {
"message": "Pagar anualmente"
},
"hosting-marketing.faq.currency": {
"message": "¿En qué moneda están los precios?"
},
"hosting-marketing.faq.ddos-protection": {
"message": "¿Los servidores de Modrinth Hosting tienen protección DDoS?"
},
"hosting-marketing.faq.ddos-protection.answer": {
"message": "Sí. Todos los servidores de Modrinth Hosting tienen protección DDos, hasta 17Tbps de capacidad en algunas ubicaciones."
},
"hosting-marketing.faq.how-fast": {
"message": "¿Qué tan rápidos son los servidores de Modrinth hosting?"
},
"hosting-marketing.faq.increase-storage": {
"message": "¿Puedo aumentar capacidad de almacenamiento en mi servidor?"
},
"hosting-marketing.faq.increase-storage.answer": {
"message": "Si, el almacenamiento puede ser aumentado en tu servidor sin ningún costo adicional. Si necesitas más almacenamiento contáctate con el soporte de Modrinth."
},
"hosting-marketing.faq.location": {
"message": "¿Dónde están localizados los servidores de Modrinth Hosting? ¿Puedo elegir la región?"
},
"hosting-marketing.faq.location.answer": {
"message": "Tenemos servidores disponibles en América del Norte, Europa y Sureste de Asia por el momento, que puedes elegir al momento de comprarlo. ¡Más regiones estarán disponibles en el futuro! Si te gustaría cambiar tu región por favor contáctate con soporte."
},
"hosting-marketing.get-started": {
"message": "Empezar"
},
"hosting-marketing.hero.button.start-a-new-server": {
"message": "Crear un nuevo servidor"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Iniciar tu servidor"
},
"hosting-marketing.hero.host-with-modrinth": {
"message": "Aloja tu siguiente servidor con Modrinth Hosting"
},
"hosting-marketing.hero.hosting-description": {
"message": "Modrinth Hosting es la plataforma más fácil donde puedes aloja tu propio servidor de Minecraft: Java Edition. Fácilmente instala y juega con tus mods y modpacks favoritos, todo dentro de la plataforma de Modrinth."
},
"hosting-marketing.included.advanced-networking.description": {
"message": "Añade tu propio dominio a tu servidor, reserva hasta 15 puertos para mods que los requieren y mucho más."
},
"hosting-marketing.included.backups-included": {
"message": "Copias de seguridad incluidas"
},
"hosting-marketing.included.custom-url": {
"message": "URL personalizada"
},
"hosting-marketing.included.custom-url.description": {
"message": "Comparte tu servidor con una URL personalizada <contrast>modrinth.gg</contrast>."
},
"hosting-marketing.included.help": {
"message": "Ayuda cuando lo necesitas"
},
"hosting-marketing.included.sftp-access": {
"message": "Acceso SFTP"
},
"hosting-marketing.included.with-your-server": {
"message": "Incluido con tu servidor"
},
"hosting-marketing.medal.info": {
"message": "Prueba gratuitamente un <orange>servidor de 3 Gb</orange> por 5 días proporcionado por <orange>Medal</orange>"
},
"hosting-marketing.server-for-everyone": {
"message": "Hay un servidor para todos"
},
"landing.button.discover-mods": {
"message": "Descubrir mods"
},
@@ -1011,7 +1080,7 @@
"message": "Encuentre lo que busca, de forma rápida y sencilla"
},
"landing.heading.the-place-for-minecraft": {
"message": "El lugar para Minecraft {content}"
"message": "El lugar para {content} de Minecraft"
},
"landing.heading.the-place-for-minecraft.data-packs": {
"message": "paquetes de datos"
@@ -1058,15 +1127,6 @@
"landing.notifications.version-released": {
"message": "La versión {version} ha sido lanzada para {gameVersion}"
},
"landing.search.label": {
"message": "Buscar"
},
"landing.search.placeholder": {
"message": "Buscar..."
},
"landing.search.sort-by.label": {
"message": "Ordenar por"
},
"landing.section.for-creators.description": {
"message": "Dale un hogar online a tus creaciones y llega a una gran audiencia de jugadores dedicados."
},
@@ -1268,9 +1328,6 @@
"layout.mobile.open-menu": {
"message": "Abrir menú"
},
"layout.nav.analytics": {
"message": "Análisis"
},
"layout.nav.discover": {
"message": "Descubre"
},
@@ -1319,9 +1376,6 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Actualizar a Modrinth+"
},
"moderation.filter.by": {
"message": "Filtrar por"
},
"moderation.moderate": {
"message": "Moderar"
},
@@ -1334,12 +1388,6 @@
"moderation.page.technicalReview": {
"message": "Revisión Técnica"
},
"moderation.search.placeholder": {
"message": "Buscar..."
},
"moderation.sort.by": {
"message": "Ordenar por"
},
"muralpay.account-type.savings": {
"message": "Guardando"
},
@@ -1400,18 +1448,45 @@
"muralpay.document-type.passport": {
"message": "Pasaporte"
},
"muralpay.field.account-number-cbu-cvu": {
"message": "Número de cuenta (CBU/CVU)"
},
"muralpay.field.account-number-cci": {
"message": "Número de cuenta (CCI)"
},
"muralpay.field.account-number-type": {
"message": "Tipo de número de cuenta"
},
"muralpay.field.account-type": {
"message": "Tipo de cuenta"
},
"muralpay.field.bank-account-number": {
"message": "Número de cuenta"
},
"muralpay.field.country": {
"message": "País"
},
"muralpay.field.iban": {
"message": "IBAN"
},
"muralpay.field.wallet-address": {
"message": "Dirección de cartera"
},
"muralpay.help.cci": {
"message": "Código de Cuenta Interbancaria"
},
"muralpay.pix-type.bank-account": {
"message": "Cuenta de banco"
},
"muralpay.pix-type.email": {
"message": "Correo electrónico"
},
"muralpay.pix-type.phone": {
"message": "Número de teléfono"
},
"muralpay.placeholder.account-number": {
"message": "Introduce tú número de cuenta"
},
"profile.bio.fallback.creator": {
"message": "Creador en Modrinth."
},
@@ -1442,6 +1517,9 @@
"profile.details.label.email": {
"message": "Correo electrónico"
},
"profile.details.label.email-verified": {
"message": "Email verificado"
},
"profile.details.label.has-password": {
"message": "Tiene contraseña"
},
@@ -1469,18 +1547,12 @@
"profile.label.collection": {
"message": "Colección"
},
"profile.label.details": {
"message": "Detalles"
},
"profile.label.downloads": {
"message": "{count} {count, plural, one {descarga} other {descargas}}"
},
"profile.label.joined": {
"message": "Se unió hace"
},
"profile.label.no": {
"message": "No"
},
"profile.label.no-collections": {
"message": "¡Este usuario no tiene colecciones!"
},
@@ -1502,9 +1574,6 @@
"profile.label.saving": {
"message": "Guardando..."
},
"profile.label.yes": {
"message": "Sí"
},
"profile.meta.description": {
"message": "Descargar los proyectos de {username} en Modrinth"
},
@@ -1517,15 +1586,6 @@
"profile.user-id": {
"message": "ID de usuario: {id}"
},
"project-member-header.accept": {
"message": "Aceptar"
},
"project-member-header.decline": {
"message": "Rechazar"
},
"project-member-header.error": {
"message": "Error"
},
"project-member-header.error-decline": {
"message": "No se ha podido rechazar la invitación del equipo"
},
@@ -1541,9 +1601,6 @@
"project-member-header.invitation-with-role": {
"message": "Has sido invitado a formar parte de este proyecto con el rol de ''{role}''."
},
"project-member-header.success": {
"message": "Éxito"
},
"project-member-header.success-decline": {
"message": "Has rechazado la invitación al equipo"
},
@@ -1559,6 +1616,9 @@
"project-moderation-nags.resubmit-for-review": {
"message": "Reenviar para revisión"
},
"project-moderation-nags.resubmit-for-review-desc": {
"message": "Tu projecto a sido {status, select, rejected {Rechazado} withheld {Retenido} other {{status}}} por el personal de Modrinth. En la mayoria de los casos puedes volver a enviar tu solicitud luego de atender lo mencionado por el personal."
},
"project-moderation-nags.submit-checklist-tooltip": {
"message": "¡Debes completar los pasos requeridos en la lista de verificación de publicación!"
},
@@ -1802,6 +1862,15 @@
"project.settings.visit-dashboard": {
"message": "Visita el panel de proyectos"
},
"project.stats.downloads-label": {
"message": "descarga{count, plural, one {} other {s}}"
},
"project.stats.followers-label": {
"message": "seguidor{count, plural,one {}other {es}}"
},
"project.status.archived.message": {
"message": "{title} ha sido archivado. {title} no recibirá ninguna futura actualización excepto que el autor decida desarchivar el proyecto."
},
"project.versions.title": {
"message": "Versiones"
},
@@ -2201,9 +2270,6 @@
"settings.billing.payment_method.action.primary": {
"message": "Establecer como principal"
},
"settings.billing.payment_method.card_display": {
"message": "{card_brand} Que termina en {last_four}"
},
"settings.billing.payment_method.card_expiry": {
"message": "Caduca {month}/{year}"
},
@@ -2216,42 +2282,6 @@
"settings.billing.payment_method.title": {
"message": "Formas de pago"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Descubrir"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.unknown": {
"message": "Método de pago desconocido"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.billing.pyro_subscription.description": {
"message": "Gestiona tus suscripciones a servidores de Modrinth."
},
@@ -2405,18 +2435,12 @@
"settings.profile.profile-info": {
"message": "Información perfil"
},
"settings.profile.profile-picture.reset": {
"message": "Restablecer"
},
"settings.profile.profile-picture.title": {
"message": "Foto de perfil"
},
"settings.profile.username.description": {
"message": "Un nombre único que no distingue entre mayúsculas y minúsculas para identificar tu perfil."
},
"settings.profile.username.title": {
"message": "Nombre de usuario"
},
"settings.sessions.action.revoke-session": {
"message": "Revocar sesión"
},
@@ -2443,5 +2467,11 @@
},
"ui.latest-news-row.view-all": {
"message": "Ver todas las noticias"
},
"version.environment.unknown.description": {
"message": "El entorno:\"{environment}\" no es reconocido."
},
"version.environment.unknown.title": {
"message": "Entorno desconocido"
}
}
-105
View File
@@ -38,9 +38,6 @@
"app-marketing.download.terms": {
"message": "Lataamalla Modrinth Appin hyväksyt meidän <terms-link>Ehdot</terms-link> ja <privacy-link>Tietosuojaselosteen</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Kolmannen osapuolen paketit"
},
"app-marketing.download.title": {
"message": "Lataa Modrinth App (Beta)"
},
@@ -200,12 +197,6 @@
"auth.reset-password.method-choice.description": {
"message": "Kirjoita sähköpostiosoitteesi ja lähetämme palautuslinkin, jonka avulla voit palauttaa tilisi."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "Sähköposti tai käyttäjänimi"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "Sähköposti"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Sinulle on lähetetty sähköposti, jossa on ohjeita, jos sähköposti on aiemmin tallennettu tilillesi."
},
@@ -245,12 +236,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-Link> Unohditko salasanasi? </forgot-password-Link> • <create-account-link>Luo tili</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "Sähköposti tai käyttäjänimi"
},
"auth.sign-in.password.label": {
"message": "Salasana"
},
"auth.sign-in.sign-in-with": {
"message": "Kirjaudu sisään käyttäen"
},
@@ -263,24 +248,12 @@
"auth.sign-up.action.create-account": {
"message": "Luo tili"
},
"auth.sign-up.confirm-password.label": {
"message": "Vahvista salasana"
},
"auth.sign-up.email.label": {
"message": "Sähköposti"
},
"auth.sign-up.label.username": {
"message": "Käyttäjänimi"
},
"auth.sign-up.legal-dislaimer": {
"message": "Luomalla tilin, hyväksyt Modrinthin <terms-link>-käyttöoikeussopimuksen</terms-link> ja <privacy-policy-link>Tietosuojakäytännön</privacy-policy-link>."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Salasanat eivät täsmää!"
},
"auth.sign-up.password.label": {
"message": "Salasana"
},
"auth.sign-up.sign-in-option.title": {
"message": "Onko sinulla jo käyttäjätili?"
},
@@ -299,9 +272,6 @@
"auth.verify-email.action.account-settings": {
"message": "Tilin asetukset"
},
"auth.verify-email.action.sign-in": {
"message": "Kirjaudu sisään"
},
"auth.verify-email.already-verified.description": {
"message": "Sähköpostisi on jo vahvistettu!"
},
@@ -365,12 +335,6 @@
"collection.title": {
"message": "{name} - kokoelma"
},
"common.no": {
"message": "Ei"
},
"common.yes": {
"message": "Kyllä"
},
"dashboard.collections.button.create-new": {
"message": "Luo uusi"
},
@@ -491,15 +455,6 @@
"landing.notifications.heading": {
"message": "Ilmoitukset"
},
"landing.search.label": {
"message": "Hae"
},
"landing.search.placeholder": {
"message": "Hae..."
},
"landing.search.sort-by.label": {
"message": "Järjestä"
},
"landing.section.for-creators.label": {
"message": "Luojille"
},
@@ -581,9 +536,6 @@
"layout.footer.social.x": {
"message": "X"
},
"layout.nav.analytics": {
"message": "Analytiikat"
},
"layout.nav.discover": {
"message": "Löydä"
},
@@ -620,36 +572,15 @@
"moderation.page.reports": {
"message": "Raportit"
},
"moderation.search.placeholder": {
"message": "Hae..."
},
"moderation.sort.by": {
"message": "Järjestä"
},
"profile.label.badges": {
"message": "Arvomerkit"
},
"profile.label.details": {
"message": "Yksityiskohdat"
},
"profile.label.organizations": {
"message": "Organisaatiot"
},
"profile.user-id": {
"message": "Käyttäjätunnus: {id}"
},
"project-member-header.accept": {
"message": "Hyväksy"
},
"project-member-header.decline": {
"message": "Hylkää"
},
"project-member-header.error": {
"message": "Virhe"
},
"project-member-header.success": {
"message": "Onnistui"
},
"project-moderation-nags.required": {
"message": "Vaadittu"
},
@@ -791,36 +722,6 @@
"settings.billing.payment_method.primary": {
"message": "Ensisijainen"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Discover"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.display.project-list-layouts.mod": {
"message": "Mods -sivu"
},
@@ -848,12 +749,6 @@
"settings.profile.bio.title": {
"message": "Kuvaus"
},
"settings.profile.profile-picture.reset": {
"message": "Nollaa"
},
"settings.profile.username.title": {
"message": "Käyttäjänimi"
},
"settings.sessions.unknown-os": {
"message": "Tuntematon käyttöjärjestelmä"
}
+222 -174
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "I-download ang RPM"
},
"app-marketing.download.flathub": {
"message": "Kunin ito sa Flathub"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "Sa pagdownload ng Modrinth App, sumasang-ayon ka sa aming <terms-link>Mga Tuntunin</terms-link> at <privacy-link>Patakaran sa Pribasiya</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Mga third-party package"
},
"app-marketing.download.title": {
"message": "I-download ang Modrinth App (Beta)"
},
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "Higit na Pagpipilian sa Pagdownload"
},
"app-marketing.hide-other-packages": {
"message": "Itago ang ibang mga package"
},
"app-marketing.not-recommended": {
"message": "Hindi namin inumumungkahi ang mga ito sa iyo maliban lang kung alam mo ang ginagawa mo."
},
"app-marketing.show-other-packages": {
"message": "Ipakita ang ibang mga package"
},
"auth.authorize.action.authorize": {
"message": "Pahintulotan"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Ilagay ang iyong email sa ibaba at padadalhan ka namin ng recovery link upang maipanumbalik mo ang account mo."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "Email o username"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "Email"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Isang email na may tagubilin ang ipinadala sa iyo kung antemanong na-save ang email sa iyong account."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Nalimutan ang password?</forgot-password-link> • <create-account-link>Lumikha ng account</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "Email o username"
},
"auth.sign-in.password.label": {
"message": "Password"
},
"auth.sign-in.sign-in-with": {
"message": "Mag-sign in gamit ang"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Lumikha ng account"
},
"auth.sign-up.confirm-password.label": {
"message": "Patunayan ang password"
},
"auth.sign-up.email.label": {
"message": "Email"
},
"auth.sign-up.label.username": {
"message": "Username"
},
"auth.sign-up.legal-dislaimer": {
"message": "Sa paggawa ng account, sumasang-ayon ka sa <terms-link>Mga Tuntunin</terms-link> at <privacy-policy-link>Patakaran sa Pribasiya</privacy-policy-link> ng Modrinth."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Hindi magkatugma ang mga password!"
},
"auth.sign-up.password.label": {
"message": "Password"
},
"auth.sign-up.sign-in-option.title": {
"message": "Mayroon ka nang account?"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Mga setting sa account"
},
"auth.verify-email.action.sign-in": {
"message": "Mag-sign in"
},
"auth.verify-email.already-verified.description": {
"message": "Napatunayan na ang iyong email!"
},
@@ -407,12 +389,6 @@
"collection.label.curated-by": {
"message": "Pag-curate ni"
},
"collection.label.description": {
"message": "Paglalarawan"
},
"collection.label.details": {
"message": "Detalye"
},
"collection.label.no-projects": {
"message": "Wala pang proyekto sa koleksiyon"
},
@@ -431,27 +407,15 @@
"collection.title": {
"message": "{name} - Koleksiyon"
},
"common.no": {
"message": "Hindi"
},
"common.yes": {
"message": "Oo"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Ang mga supplementary file ay para sa mga resource na pangsuporta katulad ng source code, hindi para sa ibang bersiyon or baryante."
},
"create.collection.cancel": {
"message": "Kanselahin"
},
"create.collection.collection-info": {
"message": "Ang iyong bagong koleksiyon ay lilikhain bilang isang pampublikong koleksiyon na {count, plural, =0 {walang proyekto} one {may # proyekto} other {may # na proyekto}}."
},
"create.collection.create-collection": {
"message": "Lumikha ng koleksiyon"
},
"create.collection.error-title": {
"message": "Isang kamaliang naganap"
},
"create.collection.name-label": {
"message": "Pangalan"
},
@@ -503,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "proyekto"
},
"create.organization.cancel": {
"message": "Kanselahin"
},
"create.organization.create-organization": {
"message": "Lumikha ng organisasyon"
},
"create.organization.error-title": {
"message": "Isang kamaliang naganap"
},
"create.organization.name-label": {
"message": "Pangalan"
},
@@ -536,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Kanselahin"
},
"create.project.create-project": {
"message": "Lumikha ng proyekto"
},
"create.project.error-title": {
"message": "Isang kamaliang naganap"
},
"create.project.name-label": {
"message": "Pangalan"
},
@@ -569,9 +521,6 @@
"create.project.visibility-description": {
"message": "Ang visibility ng itong proyekto matapos nitong ma-approve."
},
"create.project.visibility-label": {
"message": "Visibility"
},
"create.project.visibility-private": {
"message": "Pribado"
},
@@ -779,15 +728,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "I-connect ang iyong PayPal account para direktang makatanggap ng bayad."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "I-save"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "Matagumpay na na-save ang Venmo handle!"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Na-save"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Mag-sign in gamit ang PayPal"
},
@@ -806,18 +749,9 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Paraan"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Detalye ng Account"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Verification"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Pormularyo sa buwis"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Detalye"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "Mangyaring kumpletuhin ang pormularyo sa ibaba upang ma-withdraw ang buong <b>{available}</b> balanseng magagamit. Ito ay kinakailangan sa pag-uulat ng buwis at kaiisang beses lamang gagawin."
},
@@ -947,9 +881,6 @@
"dashboard.withdraw.completion.amount": {
"message": "Halaga"
},
"dashboard.withdraw.completion.close-button": {
"message": "Isara"
},
"dashboard.withdraw.completion.date": {
"message": "Petsa"
},
@@ -1133,15 +1064,216 @@
"frog.altText": {
"message": "Isang photorealistic na pagpipinta ng frog labyrinth"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} more person} other {{count} more people}} were also frogged!"
},
"frog.sinceOpened": {
"message": "Binuksan ang pahina {ago}"
},
"frog.title": {
"message": "Palaka"
},
"hosting-marketing.available-locations": {
"message": "Magagamit sa Hilagang Amerika, Yuropa, at Timog-Silangang Asya para malawakang abot."
},
"hosting-marketing.billing.monthly": {
"message": "Buwanang pagbayad"
},
"hosting-marketing.billing.quarterly": {
"message": "Tatluhang-buwanang pagbayad"
},
"hosting-marketing.billing.save-with-quarterly": {
"message": "Makatipid nang 16% sa tatluhang-buwanang pagbabayad!"
},
"hosting-marketing.billing.starting-at": {
"message": "Nagsisimula sa {price} / buwan"
},
"hosting-marketing.billing.yearly": {
"message": "Taunang pagbayad"
},
"hosting-marketing.faq.burst-threads": {
"message": "Paaano gumagana ang CPU burst thread?"
},
"hosting-marketing.faq.burst-threads.answer": {
"message": "Kapag nabibigatan ang iyong server, pansamantala naming dinaragdagan ng karagdagang CPU thread upang mabawasan nang bisa ang lag spike at instabilidad. Ito ay nakatutulong sa TPS na hindi ito bababa sa 20, sinisiguro ang maayos na karanasan. Dahil pansamantalaan lamang sa mabibigat na pagproseso ang dinagdag na CPU thread, maaaring hindi ito lilitaw sa ulat ng Spark o sa ibang kagamitang pagpo-profile."
},
"hosting-marketing.faq.cpu-kind": {
"message": "Anong uri ng CPU pinatatakbo ang mga server ng Modrinth Hosting?"
},
"hosting-marketing.faq.cpu-kind.answer": {
"message": "Ang mga server ng Modrinth Hosting ay pinapagana ng AMD Ryzen 7900 at 7950X3D katumbas na CPU sa 5+ GHz, pinares nang memoryang DDR5."
},
"hosting-marketing.faq.currency": {
"message": "Saang salapi pinipresyo ito?"
},
"hosting-marketing.faq.currency.answer": {
"message": "Lahat ng presyo ay nasa United States Dollar (USD)."
},
"hosting-marketing.faq.ddos-protection": {
"message": "Protekdado ba nang proteksiyong DDos ang Modrinth Hosting?"
},
"hosting-marketing.faq.ddos-protection.answer": {
"message": "Oo. Lahat ng server ng Modrinth Hosting ay may proteksiyong DDoS, umaabot ang kapasidad nang hanggang 17Tbps sa iilang lokasyon."
},
"hosting-marketing.faq.heading": {
"message": "Kadalasang Tinatanong"
},
"hosting-marketing.faq.how-fast": {
"message": "Gaano ba kabilis ang mga server ng Modrinth Hosting?"
},
"hosting-marketing.faq.how-fast.answer.one": {
"message": "Ang mga server ng Modrinth Hosting ay naka-host sa napakamoderno at high-performance na hardware, ngunit mahirap matantiya kung papaano matumbasan sa bilis ng server dahil na rin sa iba pang mga salik, katulad ng mga mod, data pack, o plugin na pinatatakbo mo sa server, pati na ang kung pinapaano ito ng tagagamit."
},
"hosting-marketing.faq.how-fast.answer.two": {
"message": "Lahat ng isyu sa performance ay kadalasang sanhi ng kakulangan sa optimisasyon ng modpack, mod, data pack, o plugin na nagdudulot ng pagbabagal ng server. Dahil ang aming server ay napaka-high-end, hindi ka na mag-aalala nito basta pinili mo ang nakaaangkop na plan para sa kontentong pinatatakbo sa iyong server."
},
"hosting-marketing.faq.increase-storage": {
"message": "Maaari ko bang mapalaki ang storage ng aking server?"
},
"hosting-marketing.faq.increase-storage.answer": {
"message": "Oo, ang storage ay maaaring mapalaki para sa iyong server nang walang dagdag na bayarin. Kung kakailanganin mo ang higit pang storage, maaaring abutin ang Modrinth Support."
},
"hosting-marketing.faq.location": {
"message": "Nasaan ang mga server ng Modrinth Hosting? Makapipili ba ako ng rehiyon?"
},
"hosting-marketing.faq.location.answer": {
"message": "Mayroon kaming mga server na magagamit sa Hilagang Amerika, Yuropa, at Timog-silangang Asya sa kasalukuyang sandali na maaari mong piliin pagkatapos bumili. Dadating ang higit pang rehiyon sa hinaharap! Kung nais mong magpalit ng rehiyon, mangyaring abutin ang suporta."
},
"hosting-marketing.faq.versions-loaders": {
"message": "Ano bang bersiyon ng Minecraft at loader ang magagamit?"
},
"hosting-marketing.faq.versions-loaders.answer.one": {
"message": "Ang mga server ng Modrinth Hosting ay makatatakbo sa kahit na anong bersiyon ng Minecraft: Java Edition hanggang sa bersiyong 1.2.5, kasama ang mga snapshot version."
},
"hosting-marketing.faq.versions-loaders.answer.two": {
"message": "Mayroon din kaming malawak na suporta sa mod at plugin loader, lakip nito ang Fabric, Quilt, Forge, at NeoForge para sa mod, kasali nito ang Paper at Purpur para sa plugin. Dumedepende ang pagkamagamit nito kung suporta ng mod o plugin loader ang piniling bersiyon ng Minecraft."
},
"hosting-marketing.get-started": {
"message": "Magsimula na"
},
"hosting-marketing.hero.button.manage-your-servers": {
"message": "Pamahalaan ang iyong mga server"
},
"hosting-marketing.hero.button.start-a-new-server": {
"message": "Magsimula nang bagong server"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Simulan ang iyong server"
},
"hosting-marketing.hero.host-with-modrinth": {
"message": "I-host ang susunid na server mo sa Modrinth Hosting"
},
"hosting-marketing.hero.hosting-description": {
"message": "Ang Modrinth Hosting ang pinakamadaling daan na makaho-host ka nang sarili mong Minecraft: Java Edition na server. Walang hadlang nang sarili makapag-install at makapaglaro nang mga paboritong mod at modpack, lahat sa loob ng plataporma ng Modrinth."
},
"hosting-marketing.included.advanced-networking": {
"message": "Dalubhasang pamamahala ng network"
},
"hosting-marketing.included.advanced-networking.description": {
"message": "Dumagdag ng sarili mong domain sa iyong server, magreserba nang hanggang 15 port para sa mod na mangangailangan nito, at iba pa."
},
"hosting-marketing.included.backups-included": {
"message": "Kasama ang pag-backup"
},
"hosting-marketing.included.backups-included.description": {
"message": "Lahat ng servers and may 15 backup na ligtas na nakaimbak sa off-site."
},
"hosting-marketing.included.custom-url": {
"message": "Pasadyang URL"
},
"hosting-marketing.included.custom-url.description": {
"message": "Ibahagi ang iyong server gamit ang pasadyang <contrast>modrinth.gg</contrast> na URL."
},
"hosting-marketing.included.description": {
"message": "Nakapaloob sa bawat server ang malawak na tampok na dinisenyong bumigay ng karanasan sa hosting na sa Modrinth lang mabibigay."
},
"hosting-marketing.included.file-manager": {
"message": "Madaling gamitin na file manager"
},
"hosting-marketing.included.file-manager.description": {
"message": "Maghanap, mamahala, magbago, at mag-upload ng mga file deretso sa iyong server ng walang kahirapan."
},
"hosting-marketing.included.heading": {
"message": "Dala ang lahat ng tampok na kakailanganin mo."
},
"hosting-marketing.included.help": {
"message": "Tulong sa tuwing kakailanganin mo"
},
"hosting-marketing.included.help.description": {
"message": "Abutin ang Modrinth team para sa tulong sa iyong server sa kahit na anong oras."
},
"hosting-marketing.included.powerful-console": {
"message": "Isang makapangyarihan na konsol, server properties manager, at higit pa"
},
"hosting-marketing.included.powerful-console.description": {
"message": "Ang Modrinth Hosting ay nandito na may makapangyarihan na kagamitan sa pagpamahala ng iyong server."
},
"hosting-marketing.included.sftp-access": {
"message": "SFTP access"
},
"hosting-marketing.included.sftp-access.description": {
"message": "Aksesihin ang mga file ng server mo nang deretso gamit ang SFTP na nakapaloob sa Modrinth Hosting."
},
"hosting-marketing.included.with-your-server": {
"message": "Sinama sa iyong server"
},
"hosting-marketing.know-what-you-need": {
"message": "Alam mo bang ninanais mo?"
},
"hosting-marketing.medal.info": {
"message": "Subukan ang isang libreng <orange>3GB server</orange> nang 5 araw na pinapagana ni <orange>Medal</orange>"
},
"hosting-marketing.medal.learn-more": {
"message": "Matuto pa"
},
"hosting-marketing.medal.text-secondary": {
"message": "Alok sa limitadong oras. Walang kakailanganing credit card. Magagamit para sa mga server sa US."
},
"hosting-marketing.pick-customized-plan": {
"message": "Pumili ng sinadyang plan na may specs na kakailanganin mo."
},
"hosting-marketing.server-for-everyone": {
"message": "May server para sa lahat"
},
"hosting-marketing.why.all-on-modrinth": {
"message": "Pamahalaan ang lahat na ito sa Modrinth"
},
"hosting-marketing.why.all-on-modrinth.description": {
"message": "Ang iyong server, mga mod, mga manlalaro, at higit pa ay lahat nasa Modrinth. Hindi na mangangailangang lumipat-lipat pa sa iba pang plataporma."
},
"hosting-marketing.why.consistently-fast": {
"message": "Laging mabilis"
},
"hosting-marketing.why.consistently-fast.description": {
"message": "Ang aming impraestruktura ay hindi kailan man malalabisan ng karga, nangahuhulugan na ang bawat server na-host sa Modrinth ay laging tatakbo nang buong lakas."
},
"hosting-marketing.why.description": {
"message": "Pumili sa libo-libong modpack sa Modrinth o lumikha ng sa iyo. Anyayahin ang iyong mga kaibigan sa tuwing handa kayong maglaro."
},
"hosting-marketing.why.heading": {
"message": "Maghanap ng modpack. Server na ito ngayon."
},
"hosting-marketing.why.modern-reliable-hosting": {
"message": "Dumanas ng modernong, maaasahang hosting"
},
"hosting-marketing.why.modern-reliable-hosting.description": {
"message": "Ang mga server ng Modrinth Hosting ay naka-host sa <contrast>mga high-performance AMD CUP kasama ng DDR5 RAM</contrast>, pinatatakbo sa pasadyang gawa na software upang masiguro na tuloy-tuloy ang takbo ng server mo."
},
"hosting-marketing.why.where-mods-are": {
"message": "Maglaro kung saan ang mod mo"
},
"hosting-marketing.why.where-mods-are.description": {
"message": "And Modrinth Hosting ay magkaugnay na pinagsama sa proseso ng pag-install ng mod at modpack tungo sa iyong server."
},
"hosting-marketing.why.why-modrinth-hosting": {
"message": "Bakit ba Modrinth Hosting?"
},
"hosting-marketing.why.your-favorite-mods": {
"message": "Lahat ng iyong paboritong mod"
},
"hosting-marketing.why.your-favorite-mods.description": {
"message": "Mapa-Vanilla, mapa-Fabric, mapa-Forge, mapa-Quilt o mapa-NeoForge ba ang pili mo. Kung ito'y nasa Modrinth, gagana ito sa server mo."
},
"hosting.plan.out-of-stock": {
"message": "Wala nang stock"
},
"hosting.plan.select-plan": {
"message": "Pumili ng plan"
},
"landing.button.discover-mods": {
"message": "Magtuklas ng mga mod"
},
@@ -1253,15 +1385,6 @@
"landing.notifications.version-released": {
"message": "Ang bersiyong {version} ay ni-release para sa {gameVersion}"
},
"landing.search.label": {
"message": "Maghanap"
},
"landing.search.placeholder": {
"message": "Maghanap..."
},
"landing.search.sort-by.label": {
"message": "I-sort ayon sa"
},
"landing.section.for-creators.description": {
"message": "Bigyan ng online home ang iyong mga kalikhaan at abutin ang mga malalaking madla ng mga dedikadong manlalaro."
},
@@ -1487,9 +1610,6 @@
"layout.nav.active-reports": {
"message": "Mga aktibong sumbong"
},
"layout.nav.analytics": {
"message": "Analitika"
},
"layout.nav.discover": {
"message": "Tumuklas"
},
@@ -1538,9 +1658,6 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Mag-upgrade sa Modrinth+"
},
"moderation.filter.by": {
"message": "Salain ayon sa"
},
"moderation.moderate": {
"message": "Moderate"
},
@@ -1553,12 +1670,6 @@
"moderation.page.technicalReview": {
"message": "Teknikal na Pagsusuri"
},
"moderation.search.placeholder": {
"message": "Maghanap..."
},
"moderation.sort.by": {
"message": "I-sort ayon sa"
},
"muralpay.account-type.checking": {
"message": "Sinusuri"
},
@@ -1886,18 +1997,12 @@
"profile.label.collection": {
"message": "Koleksiyon"
},
"profile.label.details": {
"message": "Detalye"
},
"profile.label.downloads": {
"message": "{count} {count, plural, one {download} other {na download}}"
},
"profile.label.joined": {
"message": "Sumali"
},
"profile.label.no": {
"message": "Hindi"
},
"profile.label.no-collections": {
"message": "Walang mga koleksiyon ang tagagamit na ito!"
},
@@ -1919,9 +2024,6 @@
"profile.label.saving": {
"message": "Sine-save..."
},
"profile.label.yes": {
"message": "Oo"
},
"profile.meta.description": {
"message": "Magdownload ng mga proyekto ni {username} sa Modrinth"
},
@@ -1934,15 +2036,6 @@
"profile.user-id": {
"message": "User ID: {id}"
},
"project-member-header.accept": {
"message": "Tanggapin"
},
"project-member-header.decline": {
"message": "Tanggihan"
},
"project-member-header.error": {
"message": "Error"
},
"project-member-header.error-decline": {
"message": "Bigong matanggihan ang anyaya sa koponan"
},
@@ -1958,9 +2051,6 @@
"project-member-header.invitation-with-role": {
"message": "Inaanyaya kang maging miyembro ng proyektong ito sa tungkuling \"{role}\"."
},
"project-member-header.success": {
"message": "Tagumpay"
},
"project-member-header.success-decline": {
"message": "Tinanggihan mo ang anyaya sa koponan"
},
@@ -2588,6 +2678,9 @@
"scopes.versionWrite.label": {
"message": "Pagsulat sa bersiyon"
},
"search.filter.game-version-shader-message": {
"message": "Ang mga shader pack para sa matatandang bersiyon ay malamang na gagana sa mga bagong bersiyon na may maliliit na isyu."
},
"search.filter.locked.server": {
"message": "Handog ng server"
},
@@ -2675,9 +2768,6 @@
"settings.billing.payment_method.action.primary": {
"message": "Gawing pangunahin"
},
"settings.billing.payment_method.card_display": {
"message": "{card_brand} ay matatapos sa {last_four}"
},
"settings.billing.payment_method.card_expiry": {
"message": "Mawawang-bisa sa {month}/{year}"
},
@@ -2690,42 +2780,6 @@
"settings.billing.payment_method.title": {
"message": "Mga paraan ng pagbabayad"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Discover"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.unknown": {
"message": "Hindi kilalang paraan ng pagbabayad"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.billing.pyro_subscription.description": {
"message": "Pamahalaan ang iyong mga Modrinth Server subscription."
},
@@ -2879,18 +2933,12 @@
"settings.profile.profile-info": {
"message": "Impormasyon ng profile"
},
"settings.profile.profile-picture.reset": {
"message": "I-reset"
},
"settings.profile.profile-picture.title": {
"message": "Profile picture"
},
"settings.profile.username.description": {
"message": "Isang natatanging case-insensitive na pangalan upang matukoy ang iyong profile."
},
"settings.profile.username.title": {
"message": "Username"
},
"settings.sessions.action.revoke-session": {
"message": "Bawiin ang sesyon"
},
+233 -185
View File
@@ -23,11 +23,14 @@
"app-marketing.download.download-rpm": {
"message": "Télécharger le RPM"
},
"app-marketing.download.flathub": {
"message": "Disponible sur Flathub"
},
"app-marketing.download.linux": {
"message": "Linux"
},
"app-marketing.download.linux-disclaimer": {
"message": "Les versions Linux de l'application Modrinth sont <issues-link>connues pour présenter des problèmes</issues-link> sur certains systèmes et configurations. Si l'application Modrinth est instable sur votre système, nous vous encourageons à essayer d'autres applications telles que <prism-link>Prism Launcher</prism-link> pour installer facilement le contenu Modrinth."
"message": "Les versions Linux de Modrinth App sont <issues-link>connues pour présenter des problèmes</issues-link> sur certains systèmes et configurations. Si Modrinth App est instable sur votre système, nous vous encourageons à essayer d'autres applications telles que <prism-link>Prism Launcher</prism-link> pour installer facilement le contenu Modrinth."
},
"app-marketing.download.mac": {
"message": "Mac"
@@ -36,10 +39,7 @@
"message": "Options de téléchargement"
},
"app-marketing.download.terms": {
"message": "En téléchargeant l'application Modrinth, vous acceptez nos <terms-link>Conditions générales</terms-link> et notre <privacy-link>Politique de confidentialité</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Paquets tiers"
"message": "En téléchargeant Modrinth App, vous acceptez nos <terms-link>Conditions générales</terms-link> et notre <privacy-link>Politique de confidentialité</privacy-link>."
},
"app-marketing.download.title": {
"message": "Télécharger lapplication Modrinth (bêta)"
@@ -168,16 +168,16 @@
"message": "Un launcher comme"
},
"app-marketing.features.website.description": {
"message": "L'application Modrinth est entièrement intégrée au site Web, vous pouvez donc accéder à tous vos projets préférés depuis l'application !"
"message": "Modrinth App est entièrement intégrée au site Web, vous pouvez donc accéder à tous vos projets préférés depuis l'application !"
},
"app-marketing.features.website.title": {
"message": "Intégration au site Web"
},
"app-marketing.features.youve-used-before": {
"message": "vous nen avez jamais vu"
"message": "vous n'en avez jamais vu"
},
"app-marketing.hero.app-screenshot-alt": {
"message": "Capture d'écran de l'application Modrinth avec une instance Cobblemon ouverte sur la page \"Contenu\"."
"message": "Capture d'écran de Modrinth App avec une instance Cobblemon ouverte sur la page « Contenu »."
},
"app-marketing.hero.description": {
"message": "Modrinth App est un launcher unique et open source qui vous permet de jouer à vos mods préférés et de les maintenir à jour, le tout dans une seule petite application."
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "Plus d'options de téléchargement"
},
"app-marketing.hide-other-packages": {
"message": "Cacher les autres paquets"
},
"app-marketing.not-recommended": {
"message": "Nous vous déconseillons de les utiliser si vous ne savez pas ce que vous faites."
},
"app-marketing.show-other-packages": {
"message": "Montrer les autres paquets"
},
"auth.authorize.action.authorize": {
"message": "Autoriser"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Entrez votre adresse e-mail ci-dessous, et nous vous enverrons un lien pour récupérer votre compte."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "Adresse e-mail ou nom d'utilisateur"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "Adresse e-mail"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Un email avec les instructions vous a été envoyé si cet email était précédemment sauvegardé sur votre compte."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Mot de passe oublié ?</forgot-password-link> • <create-account-link>Créer un compte</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "Adresse e-mail ou nom d'utilisateur"
},
"auth.sign-in.password.label": {
"message": "Mot de passe"
},
"auth.sign-in.sign-in-with": {
"message": "Se connecter avec"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Créer un compte"
},
"auth.sign-up.confirm-password.label": {
"message": "Confirmer le mot de passe"
},
"auth.sign-up.email.label": {
"message": "Adresse e-mail"
},
"auth.sign-up.label.username": {
"message": "Nom d'utilisateur"
},
"auth.sign-up.legal-dislaimer": {
"message": "En créant un compte, vous acceptez les <terms-link>Conditions d'utilisation</terms-link> et la <privacy-policy-link>Politique de confidentialité</privacy-policy-link> de Modrinth."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "Les mots de passe ne correspondent pas !"
},
"auth.sign-up.password.label": {
"message": "Mot de passe"
},
"auth.sign-up.sign-in-option.title": {
"message": "Vous avez déjà un compte ?"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Paramètres du compte"
},
"auth.verify-email.action.sign-in": {
"message": "Se connecter"
},
"auth.verify-email.already-verified.description": {
"message": "Votre adresse e-mail est déjà vérifiée !"
},
@@ -393,7 +375,7 @@
"message": "{description} - Voir la collection {name} par {username} sur Modrinth"
},
"collection.description.following": {
"message": "Collection générée automatiquement de tous les projets que vous suivez."
"message": "Collection générée automatiquement de tous vos projets favoris."
},
"collection.editing": {
"message": "Édition de la collection"
@@ -407,12 +389,6 @@
"collection.label.curated-by": {
"message": "Organisée par"
},
"collection.label.description": {
"message": "Description"
},
"collection.label.details": {
"message": "Détails"
},
"collection.label.no-projects": {
"message": "Pas de projet dans la collection actuellement"
},
@@ -431,27 +407,15 @@
"collection.title": {
"message": "{name} - Collection"
},
"common.no": {
"message": "Non"
},
"common.yes": {
"message": "Oui"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "Les fichiers supplémentaires servent à fournir des ressources complémentaires comme le code source, et non des versions alternatives ou des variantes."
},
"create.collection.cancel": {
"message": "Annuler"
},
"create.collection.collection-info": {
"message": "Votre nouvelle collection sera crée en tant que collection publique{count, plural, =0 {no projects} one {# project} other {# projects}}."
},
"create.collection.create-collection": {
"message": "Créer une collection"
},
"create.collection.error-title": {
"message": "Une erreur est survenue"
},
"create.collection.name-label": {
"message": "Nom"
},
@@ -503,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "projet"
},
"create.organization.cancel": {
"message": "Annuler"
},
"create.organization.create-organization": {
"message": "Créer une organisation"
},
"create.organization.error-title": {
"message": "Une erreur est survenue"
},
"create.organization.name-label": {
"message": "Nom"
},
@@ -536,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Annuler"
},
"create.project.create-project": {
"message": "Créer un projet"
},
"create.project.error-title": {
"message": "Une erreur est survenue"
},
"create.project.name-label": {
"message": "Nom"
},
@@ -569,9 +521,6 @@
"create.project.visibility-description": {
"message": "La visibilité de votre projet après qu'il ait été approuvé."
},
"create.project.visibility-label": {
"message": "Visibilité"
},
"create.project.visibility-private": {
"message": "Privé"
},
@@ -779,15 +728,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "Connectez votre compte PayPal pour recevoir directement les paiements."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Sauvegarder"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "Identifiant Venmo enregistré avec succès !"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Enregistré"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Se connecter avec PayPal"
},
@@ -806,18 +749,9 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Méthode"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Détails du compte"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Vérification"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Formulaire fiscal"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Détails"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "Pour retirer la totalité <b>{available}</b> de votre solde disponible, veuillez remplir le formulaire ci-dessous. Cette démarche est obligatoire pour votre déclaration fiscale et ne doit être effectuée qu'une seule fois."
},
@@ -947,9 +881,6 @@
"dashboard.withdraw.completion.amount": {
"message": "Montant"
},
"dashboard.withdraw.completion.close-button": {
"message": "Fermer"
},
"dashboard.withdraw.completion.date": {
"message": "Date"
},
@@ -1131,17 +1062,218 @@
"message": "Grenouille surprise ! 🐸"
},
"frog.altText": {
"message": "Un tableau photoréaliste du Labyrinthe des Grenouilles"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} autre personne a eu} other {{count} autres personnes ont eu}} une grenouille surprise !"
},
"frog.sinceOpened": {
"message": "Cette page a été ouverte {ago}"
"message": "Un tableau photoréaliste d'un labyrinthe amphibien"
},
"frog.title": {
"message": "Grenouille"
},
"hosting-marketing.available-locations": {
"message": "Disponible en Amérique du Nord, en Europe et en Asie du Sud-Est pour une une couverture étendue."
},
"hosting-marketing.billing.monthly": {
"message": "Payer mensuellement"
},
"hosting-marketing.billing.quarterly": {
"message": "Payer trimestriellement"
},
"hosting-marketing.billing.save-with-quarterly": {
"message": "Économisez 16% avec facturation trimestrielle !"
},
"hosting-marketing.billing.starting-at": {
"message": "À partir de {price} par mois"
},
"hosting-marketing.billing.yearly": {
"message": "Payer annuellement"
},
"hosting-marketing.faq.burst-threads": {
"message": "Comment les pics de puissance CPU fonctionnent-ils ?"
},
"hosting-marketing.faq.burst-threads.answer": {
"message": "Lorsque votre serveur est fortement sollicité, nous lui accordons temporairement l'accès à des threads CPU supplémentaires afin d'atténuer les pics de latence et l'instabilité. Cela permet d'éviter que le TPS ne descende en dessous de 20, garantissant ainsi une expérience aussi fluide que possible. Étant donné que ces threads CPU supplémentaires ne sont disponibles que brièvement pendant les périodes de forte charge, ils peuvent ne pas apparaître dans les rapports Spark ou d'autres outils de profilage."
},
"hosting-marketing.faq.cpu-kind": {
"message": "Sur quelle sorte de CPU Modrinth Hosting exécute-t-il les serveurs ?"
},
"hosting-marketing.faq.cpu-kind.answer": {
"message": "Les serveurs de Modrinth Hosting sont équipés de processeurs AMD Ryzen 7900 et 7950X3D équivalents cadencés à plus de 5 GHz, associés à une mémoire DDR5."
},
"hosting-marketing.faq.currency": {
"message": "Dans quelle devise sont les prix ?"
},
"hosting-marketing.faq.currency.answer": {
"message": "Tous les prix sont indiqués en dollars américains (USD)."
},
"hosting-marketing.faq.ddos-protection": {
"message": "Les serveurs de Modrinth Hosting ont-ils une protection DDoS ?"
},
"hosting-marketing.faq.ddos-protection.answer": {
"message": "Oui. Tous les serveurs de Modrinth Hosting sont équipés dune protection DDoS, avec une capacité allant jusqu’à 17 Tbps dans certains endroits."
},
"hosting-marketing.faq.heading": {
"message": "Foire aux Questions"
},
"hosting-marketing.faq.how-fast": {
"message": "À quel point les serveurs de Modrinth Hosting sont-ils rapides ?"
},
"hosting-marketing.faq.how-fast.answer.one": {
"message": "Les serveurs de Modrinth Hosting sont hébergés sur du matériel très moderne et performant, mais il est difficile de dire exactement comment cela se traduira par la vitesse à laquelle votre serveur fonctionnera, car il y a tellement de facteurs qui laffectent, tels que les mods, les packs de données ou les plugins que vous exécutez sur votre serveur, et même le comportement de lutilisateur."
},
"hosting-marketing.faq.how-fast.answer.two": {
"message": "La plupart des problèmes de performance qui surviennent ont tendance à être la faute dun modpack, mod, pack de données ou plugin non optimisé qui provoque du lag chez le serveur. Puisque nos serveurs sont très haut de gamme, vous ne devriez pas rencontrer beaucoup de problèmes tant que vous choisissez un plan approprié pour le contenu que vous diffusez sur le serveur."
},
"hosting-marketing.faq.increase-storage": {
"message": "Puis-je augmenter le stockage sur mon serveur ?"
},
"hosting-marketing.faq.increase-storage.answer": {
"message": "Oui, le stockage peut être augmenté sur votre serveur sans coût supplémentaire. Si vous avez besoin de plus de stockage, contactez Modrinth Support."
},
"hosting-marketing.faq.location": {
"message": "Où se trouvent les serveurs de Modrinth Hosting ? Puis-je choisir une région ?"
},
"hosting-marketing.faq.location.answer": {
"message": "Nous avons des serveurs disponibles en Amérique du Nord, en Europe et en Asie du Sud-Est en ce moment-même que vous pouvez choisir dès l'achat. Plus de régions à venir dans le futur ! Si vous souhaitez changer de région, veuillez contacter le support."
},
"hosting-marketing.faq.versions-loaders": {
"message": "Quelles versions de Minecraft et loaders peuvent-être utilisés ?"
},
"hosting-marketing.faq.versions-loaders.answer.one": {
"message": "Les serveurs de Modrinth Hosting peuvent exécuter nimporte quelle version de Minecraft : Java Edition jusqu’à la version 1.2.5, y compris les snapshots."
},
"hosting-marketing.faq.versions-loaders.answer.two": {
"message": "Nous prenons également en charge une large gamme de mod loaders et de plugins, y compris Fabric, Quilt, Forge et NeoForge pour les mods, ainsi que Paper et Purpur pour les plugins. La disponibilité dépend si le chargeur de mod ou de plugin prend en charge la version sélectionnée de Minecraft."
},
"hosting-marketing.get-started": {
"message": "Commencer"
},
"hosting-marketing.hero.button.manage-your-servers": {
"message": "Gérer vos serveurs"
},
"hosting-marketing.hero.button.start-a-new-server": {
"message": "Commencer un nouveau serveur"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Commencer votre serveur"
},
"hosting-marketing.hero.host-with-modrinth": {
"message": "Jouez tous ensemble avec Modrinth Hosting"
},
"hosting-marketing.hero.hosting-description": {
"message": "Modrinth Hosting est le moyen le plus simple d'héberger votre propre serveur pour Minecraft : Java Edition. Installez et jouez sans problème avec vos mods et modpacks préférés, le tout sur la plateforme Modrinth."
},
"hosting-marketing.included.advanced-networking": {
"message": "Gestion de réseautage avancé"
},
"hosting-marketing.included.advanced-networking.description": {
"message": "Ajoutez votre propre domaine à votre serveur, réservez jusqu’à 15 ports pour les mods qui en ont besoin, et plus encore."
},
"hosting-marketing.included.backups-included": {
"message": "Sauvegardes de secours incluses"
},
"hosting-marketing.included.backups-included.description": {
"message": "Chaque serveur est livré avec 15 sauvegardes de secours stockées en toute sécurité hors site."
},
"hosting-marketing.included.custom-url": {
"message": "URL personnalisée"
},
"hosting-marketing.included.custom-url.description": {
"message": "Partagez votre serveur avec une URL <contrast>modrinth.gg</contrast> personnalisée."
},
"hosting-marketing.included.description": {
"message": "Chaque serveur inclus une suite de fonctionnalités conçues pour offrir une expérience dhébergement que seul Modrinth peut offrir."
},
"hosting-marketing.included.file-manager": {
"message": "Gestionnaire de fichiers facile à utiliser"
},
"hosting-marketing.included.file-manager.description": {
"message": "Recherchez, gérez, modifiez et téléchargez des fichiers directement sur votre serveur avec facilité."
},
"hosting-marketing.included.heading": {
"message": "Doté de toutes vos fonctions rêvées."
},
"hosting-marketing.included.help": {
"message": "De l'aide quand vous en avez besoin"
},
"hosting-marketing.included.help.description": {
"message": "Contactez l’équipe Modrinth pour obtenir de laide avec votre serveur à tout moment."
},
"hosting-marketing.included.powerful-console": {
"message": "Une console puissante, un gestionnaire des propriétés du serveur, et plus encore"
},
"hosting-marketing.included.powerful-console.description": {
"message": "Modrinth Hosting est livré avec des outils puissants pour gérer votre serveur."
},
"hosting-marketing.included.sftp-access": {
"message": "Accès SFTP"
},
"hosting-marketing.included.sftp-access.description": {
"message": "Accédez aux fichiers de votre serveur directement avec SFTP intégré dans Modrinth Hosting."
},
"hosting-marketing.included.with-your-server": {
"message": "Inclus avec votre serveur"
},
"hosting-marketing.know-what-you-need": {
"message": "Déjà trouvé ce dont vous avez besoin ?"
},
"hosting-marketing.medal.info": {
"message": "Essayez un <orange>serveur 3GB</orange> gratuit pour 5 jours alimenté par <orange>Medal</orange>"
},
"hosting-marketing.medal.learn-more": {
"message": "En savoir plus"
},
"hosting-marketing.medal.text-secondary": {
"message": "Offre à durée limitée. Aucune carte de crédit requise. Disponible pour les serveurs américains."
},
"hosting-marketing.pick-customized-plan": {
"message": "Choisissez un plan personnalisé avec seulement les spécifications dont vous avez besoin."
},
"hosting-marketing.server-for-everyone": {
"message": "Il y a un serveur pour tout le monde"
},
"hosting-marketing.why.all-on-modrinth": {
"message": "C'est sur Modrinth que ça se passe"
},
"hosting-marketing.why.all-on-modrinth.description": {
"message": "Vos serveurs, vos mods, vous joueurs, et plus encore, le tout sur Modrinth. Pas besoin de passer dune plateforme à lautre."
},
"hosting-marketing.why.consistently-fast": {
"message": "Constamment rapide"
},
"hosting-marketing.why.consistently-fast.description": {
"message": "Notre infrastructure reste non surchargée, garantissant des performances optimales pour chaque serveur Modrinth."
},
"hosting-marketing.why.description": {
"message": "Choisissez parmi les milliers de modpacks disponibles sur Modrinth ou créez le vôtre. Invitez vos amis lorsque vous êtes prêt à jouer."
},
"hosting-marketing.why.heading": {
"message": "De modpack à serveur"
},
"hosting-marketing.why.modern-reliable-hosting": {
"message": "Profitez d'un hébergement moderne et fiable"
},
"hosting-marketing.why.modern-reliable-hosting.description": {
"message": "Les serveurs dhébergement Modrinth sont hébergés sur des <contrast>processeurs AMD hautes performances avec une RAM DDR5</contrast>, fonctionnant sur un logiciel sur mesure pour assurer le bon fonctionnement de votre serveur."
},
"hosting-marketing.why.where-mods-are": {
"message": "Jouez là où se trouvent vos mods"
},
"hosting-marketing.why.where-mods-are.description": {
"message": "Modrinth Hosting intègre parfaitement le processus dinstallation de mods et de modpacks dans votre serveur."
},
"hosting-marketing.why.why-modrinth-hosting": {
"message": "Pourquoi Modrinth Hosting ?"
},
"hosting-marketing.why.your-favorite-mods": {
"message": "Tous vos mods préférés"
},
"hosting-marketing.why.your-favorite-mods.description": {
"message": "Choisissez entre Vanilla, Fabric, Forge, Quilt et NeoForge. Tout le contenu de Modrinth est compatible avec votre serveur."
},
"hosting.plan.out-of-stock": {
"message": "En rupture de stock"
},
"hosting.plan.select-plan": {
"message": "Sélectionner un plan"
},
"landing.button.discover-mods": {
"message": "Découvrez des mods"
},
@@ -1188,10 +1320,10 @@
"message": "Échec du chargement des projets aléatoires :("
},
"landing.feature.follow.description": {
"message": "Recevez une notification à chaque mise à jour de votre projet favori pour rester au courant."
"message": "Recevez une notification à chaque mise à jour de vos projets préférés pour rester au courant."
},
"landing.feature.follow.heading": {
"message": "Suivez les projets que vous aimez"
"message": "Trouvez les projets que vous adorez"
},
"landing.feature.launcher.description": {
"message": "LAPI open-source de Modrinth permet aux launchers dajouter des intégrations à Modrinth. Vous pouvez utiliser Modrinth depuis notre <link>application officielle</link> ou depuis les launchers les plus populaires, par exemple ATLauncher, MultiMC et Prism Launcher."
@@ -1253,15 +1385,6 @@
"landing.notifications.version-released": {
"message": "La version {version} a été publiée pour la {gameVersion}"
},
"landing.search.label": {
"message": "Rechercher"
},
"landing.search.placeholder": {
"message": "Rechercher..."
},
"landing.search.sort-by.label": {
"message": "Trier par"
},
"landing.section.for-creators.description": {
"message": "Donnez un foyer en ligne à vos créations et touchez une audience massive de joueurs dévoués."
},
@@ -1487,9 +1610,6 @@
"layout.nav.active-reports": {
"message": "Rapports actifs"
},
"layout.nav.analytics": {
"message": "Analytiques"
},
"layout.nav.discover": {
"message": "Découvrir"
},
@@ -1538,9 +1658,6 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Passer à Modrinth+"
},
"moderation.filter.by": {
"message": "Filtrer par"
},
"moderation.moderate": {
"message": "Modérer"
},
@@ -1553,12 +1670,6 @@
"moderation.page.technicalReview": {
"message": "Revue technique"
},
"moderation.search.placeholder": {
"message": "Rechercher..."
},
"moderation.sort.by": {
"message": "Trier par"
},
"muralpay.account-type.checking": {
"message": "Compte courant"
},
@@ -1886,18 +1997,12 @@
"profile.label.collection": {
"message": "Collection"
},
"profile.label.details": {
"message": "Détails"
},
"profile.label.downloads": {
"message": "{count} {count, plural, one {téléchargement} other {téléchargements}}"
},
"profile.label.joined": {
"message": "Rejoint"
},
"profile.label.no": {
"message": "Non"
},
"profile.label.no-collections": {
"message": "Cet utilisateur n'a aucune collection !"
},
@@ -1919,9 +2024,6 @@
"profile.label.saving": {
"message": "Sauvegarde en cours..."
},
"profile.label.yes": {
"message": "Oui"
},
"profile.meta.description": {
"message": "Téléchargez les projets de {username} sur Modrinth"
},
@@ -1929,20 +2031,11 @@
"message": "{bio} - Téléchargez les projets de {username} sur Modrinth"
},
"profile.stats.projects-followers": {
"message": "{count, plural, one {<stat>{count}</stat> abonné} other {<stat>{count}</stat> abonnés}} aux projets"
"message": "{count, plural, one {<stat>{count}</stat> personne adore} other {<stat>{count}</stat> personnes adorent}}"
},
"profile.user-id": {
"message": "ID utilisateur : {id}"
},
"project-member-header.accept": {
"message": "Accepter"
},
"project-member-header.decline": {
"message": "Refuser"
},
"project-member-header.error": {
"message": "Erreur"
},
"project-member-header.error-decline": {
"message": "Échec du refus de linvitation à l’équipe"
},
@@ -1958,9 +2051,6 @@
"project-member-header.invitation-with-role": {
"message": "Vous avez été invité à être membre de ce projet sous le rôle de '{role}''."
},
"project-member-header.success": {
"message": "Succès"
},
"project-member-header.success-decline": {
"message": "Vous avez refusé linvitation à rejoindre l’équipe."
},
@@ -2262,7 +2352,7 @@
"message": "téléchargement{count, plural, one {} other {s}}"
},
"project.stats.followers-label": {
"message": "abonné{count, plural, one {} other {s}}"
"message": "adore{count, plural, one {} other {nt}}"
},
"project.status.archived.message": {
"message": "{title} a été archivé. {title} ne recevra plus de mises à jour jusqu'à ce que l'auteur du projet décide de désarchiver le projet."
@@ -2588,6 +2678,9 @@
"scopes.versionWrite.label": {
"message": "Créer des versions"
},
"search.filter.game-version-shader-message": {
"message": "Les packs de shaders pour des versions antérieures ont moins de dysfonctionnements dans les versions supérieures."
},
"search.filter.locked.server": {
"message": "Fournis par le serveur"
},
@@ -2675,9 +2768,6 @@
"settings.billing.payment_method.action.primary": {
"message": "Définir comme primaire"
},
"settings.billing.payment_method.card_display": {
"message": "{card_brand} se terminant par {last_four}"
},
"settings.billing.payment_method.card_expiry": {
"message": "Expire le {month}/{year}"
},
@@ -2690,42 +2780,6 @@
"settings.billing.payment_method.title": {
"message": "Mode de paiement"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.cashapp": {
"message": "Cash App"
},
"settings.billing.payment_method_type.diners": {
"message": "Diners Club"
},
"settings.billing.payment_method_type.discover": {
"message": "Discover"
},
"settings.billing.payment_method_type.eftpos": {
"message": "EFTPOS"
},
"settings.billing.payment_method_type.jcb": {
"message": "JCB"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.payment_method_type.unionpay": {
"message": "UnionPay"
},
"settings.billing.payment_method_type.unknown": {
"message": "Mode de paiement inconnue"
},
"settings.billing.payment_method_type.visa": {
"message": "Visa"
},
"settings.billing.pyro_subscription.description": {
"message": "Gérer vos abonnements au serveur Modrinth."
},
@@ -2879,18 +2933,12 @@
"settings.profile.profile-info": {
"message": "Information du profil"
},
"settings.profile.profile-picture.reset": {
"message": "Réinitialiser"
},
"settings.profile.profile-picture.title": {
"message": "Photo de profil"
},
"settings.profile.username.description": {
"message": "Un nom unique insensible à la casse pour identifier votre profil."
},
"settings.profile.username.title": {
"message": "Nom d'utilisateur"
},
"settings.sessions.action.revoke-session": {
"message": "Révoquer la session"
},
+1 -1
View File
@@ -1,7 +1,7 @@
{
"displayName": {
"description": "Please enter the name of the language in its specific variant or regional form (e.g., English (US) for American English, not just English). If the language does not have any specific variant, simply enter the name of the language (e.g., Français, Deutsch).",
"message": "Français (France)"
"message": "Anglais (États-Unis)"
},
"searchTerms": {
"description": "Please provide additional search terms associated with the language, if needed, to enhance the search functionality (e.g., American English, Deutschland). Each search term should be entered on a separate line. Translate as a hyphen (-) if no additional terms are needed.",
+21 -81
View File
@@ -38,9 +38,6 @@
"app-marketing.download.terms": {
"message": "בהורדת אפליקציית מודרינת' אתה מסכים ל<terms-link>תנאים</terms-link> ול<privacy-link>מדיניות הפרטיות</privacy-link> שלנו."
},
"app-marketing.download.third-party-packages": {
"message": "חבילות צד שלישי"
},
"app-marketing.download.title": {
"message": "הורד את אפליקציית מודרינת' (בטא)"
},
@@ -221,12 +218,6 @@
"auth.reset-password.method-choice.description": {
"message": "כתבו את הדואר אלקטרוני ואנו נשלח דואר שחזור כדי שאתם תוכלו להכנס לחשבונכם."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "דואר אלקטרוני או שם משתמש"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "דואר אלקטרוני"
},
"auth.reset-password.notification.email-sent.text": {
"message": "דואר אם הוראות היו שלחו לכם אם הדואר אלקטרוני שלכם היה שמור בחשבונכם."
},
@@ -266,12 +257,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>שככו את הסיסמה?</forgot-password-link>\n<create-account-link>ליצור חשבון</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "דואר אלקטרוני או שם משתמש"
},
"auth.sign-in.password.label": {
"message": "סיסמה"
},
"auth.sign-in.sign-in-with": {
"message": "הכנס אם"
},
@@ -284,24 +269,12 @@
"auth.sign-up.action.create-account": {
"message": "ליצור חשבון"
},
"auth.sign-up.confirm-password.label": {
"message": "המת סיסמה"
},
"auth.sign-up.email.label": {
"message": "אימייל"
},
"auth.sign-up.label.username": {
"message": "שם משתמש"
},
"auth.sign-up.legal-dislaimer": {
"message": "כליצור את החשבון, אתם מסכימים ל<terms-link>תנאים</terms-link> ו<privacy-policy-link>מדיניות פרטיות</privacy-policy-link> של Modrinth."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "סיסמאות לא תואמות!"
},
"auth.sign-up.password.label": {
"message": "סיסמה"
},
"auth.sign-up.sign-in-option.title": {
"message": "כבר יש לכם חשבון?"
},
@@ -320,9 +293,6 @@
"auth.verify-email.action.account-settings": {
"message": "הגדרות חשבון"
},
"auth.verify-email.action.sign-in": {
"message": "הכנס"
},
"auth.verify-email.already-verified.description": {
"message": "דואר אלקטרוני שלכם הוא כבר מאומת!"
},
@@ -368,12 +338,24 @@
"collection.button.edit-icon": {
"message": "ערוך סמל"
},
"collection.button.remove-icon": {
"message": "מחק אייקון"
},
"collection.button.remove-project": {
"message": "מחק פרוייקט"
},
"collection.button.replace-icon": {
"message": "החלף אייקון"
},
"collection.button.select-icon": {
"message": "בחר אייקון"
},
"collection.button.unfollow-project": {
"message": "הסר מעקב מפרוייקט"
},
"collection.delete-modal.description": {
"message": "זה הולך למחוק את האוסף הזאת. פעולה זו אינה הפיכה."
},
"collection.delete-modal.title": {
"message": "אתה בטוח שאתה רוצה למחוק את הקולקציה?"
},
@@ -383,6 +365,9 @@
"collection.description.following": {
"message": "אוסף שנוצר אוטומטית של כל הפרויקטים שאתה עוקב אחריו."
},
"collection.editing": {
"message": "צור אוסף"
},
"collection.error.not-found": {
"message": "אוסף לא נמצא"
},
@@ -392,30 +377,24 @@
"collection.label.curated-by": {
"message": "נוצר על ידי"
},
"collection.label.no-projects": {
"message": "אין פרוייקטים באוסף עדיין"
},
"collection.label.updated-at": {
"message": "עודכן {ago}"
},
"collection.return-link.dashboard-collections": {
"message": "האוספים שלך"
},
"collection.title": {
"message": "{name} - אוסף"
},
"common.no": {
"message": "לא"
},
"common.yes": {
"message": "כן"
},
"create.collection.cancel": {
"message": "בטל"
},
"create.collection.collection-info": {
"message": "האוסף החדש שלך יווצר עכשיו כאוסף ציבורי עם {count, plural, =0 {no projects} one {# project} other {# projects}}."
},
"create.collection.create-collection": {
"message": "צור אוסף"
},
"create.collection.error-title": {
"message": "אירעה שגיאה"
},
"create.collection.name-label": {
"message": "שם"
},
@@ -467,15 +446,9 @@
"create.limit-alert.type-project": {
"message": "פרויקט"
},
"create.organization.cancel": {
"message": "בטל"
},
"create.organization.create-organization": {
"message": "צור ארגון"
},
"create.organization.error-title": {
"message": "התרחשה תקלה"
},
"create.organization.name-label": {
"message": "שם"
},
@@ -500,15 +473,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "בטל"
},
"create.project.create-project": {
"message": "צור פרויקט"
},
"create.project.error-title": {
"message": "התרחשה תקלה"
},
"create.project.name-label": {
"message": "שם"
},
@@ -533,9 +500,6 @@
"create.project.visibility-description": {
"message": "מצב נראות הפרויקט שלך אחרי שאושר."
},
"create.project.visibility-label": {
"message": "מצב נראות"
},
"create.project.visibility-private": {
"message": "פרויקט פרטי"
},
@@ -689,12 +653,6 @@
"frog.altText": {
"message": "ציור פוטוריאליסטי של מבוך צפרדעים"
},
"frog.froggedPeople": {
"message": "{count, plural, one {עוד {count} אדם} other {עוד {count} אנשים}} גם הוצפרדע!"
},
"frog.sinceOpened": {
"message": "עמוד זה היה פתוח {ago}"
},
"frog.title": {
"message": "צפרדע"
},
@@ -809,15 +767,6 @@
"landing.notifications.version-released": {
"message": "גרסא {version} יצאה לגרסאת המשחק {gameVersion}"
},
"landing.search.label": {
"message": "חיפוש"
},
"landing.search.placeholder": {
"message": "חיפוש..."
},
"landing.search.sort-by.label": {
"message": "מיון לפי"
},
"landing.section.for-players.label": {
"message": "בשביל שחקנים"
},
@@ -941,15 +890,6 @@
"moderation.page.projects": {
"message": "פרויקטים"
},
"profile.label.no": {
"message": "לא"
},
"profile.label.yes": {
"message": "כן"
},
"project-member-header.error": {
"message": "שגיאה"
},
"project-type.datapack.plural": {
"message": "חבילות נתונים"
},
+99 -147
View File
@@ -23,6 +23,9 @@
"app-marketing.download.download-rpm": {
"message": "RPM letöltése"
},
"app-marketing.download.flathub": {
"message": "Töltsd le a Flathubról"
},
"app-marketing.download.linux": {
"message": "Linux"
},
@@ -38,9 +41,6 @@
"app-marketing.download.terms": {
"message": "A Modrinth App letöltésével elfogadod <terms-link>feltételeket</terms-link> és a <privacy-link>biztonsági szabályzatot</privacy-link>."
},
"app-marketing.download.third-party-packages": {
"message": "Harmadik féltül származó csomagok"
},
"app-marketing.download.title": {
"message": "Modrinth App etöltése (béta)"
},
@@ -197,6 +197,15 @@
"app-marketing.hero.more-download-options": {
"message": "Több letöltési lehetőség"
},
"app-marketing.hide-other-packages": {
"message": "Egyéb csomagok elrejtése"
},
"app-marketing.not-recommended": {
"message": "Nem ajánljuk ezek használatát, hacsak nem tudod, mit csinálsz."
},
"app-marketing.show-other-packages": {
"message": "Egyéb csomagok megjelenítése"
},
"auth.authorize.action.authorize": {
"message": "Engedélyezés"
},
@@ -221,12 +230,6 @@
"auth.reset-password.method-choice.description": {
"message": "Írja be az email-címét az alábbi mezőbe, és küldünk Önnek egy hivatkozást, amivel vissza tudja állítani a fiókját."
},
"auth.reset-password.method-choice.email-username.label": {
"message": "Email vagy felhasználónév"
},
"auth.reset-password.method-choice.email-username.placeholder": {
"message": "Email"
},
"auth.reset-password.notification.email-sent.text": {
"message": "Egy email el lett küldve önnek az email-címére amennyiben az email-cím el volt mente a fiókjában."
},
@@ -266,12 +269,6 @@
"auth.sign-in.additional-options": {
"message": "<forgot-password-link>Elfelejtted a jelszavad?</forgot-password-link> • <create-account-link>Hozz létre egy fiókót</create-account-link>"
},
"auth.sign-in.email-username.label": {
"message": "Email vagy felhasználónév"
},
"auth.sign-in.password.label": {
"message": "Jelszó"
},
"auth.sign-in.sign-in-with": {
"message": "Bejelentkezés ezzel"
},
@@ -284,24 +281,12 @@
"auth.sign-up.action.create-account": {
"message": "Fiók létrehozása"
},
"auth.sign-up.confirm-password.label": {
"message": "Jelszó megerősítése"
},
"auth.sign-up.email.label": {
"message": "Email"
},
"auth.sign-up.label.username": {
"message": "Felhasználónév"
},
"auth.sign-up.legal-dislaimer": {
"message": "Fiók létrehozásával Ön elfogadja a Modrinth <terms-link>Felhasználási feltételeit</terms-link> és <privacy-policy-link>Adatvédelmi irányelveit</privacy-policy-link>."
},
"auth.sign-up.notification.password-mismatch.text": {
"message": "A jelszavak nem jegyeznek!"
},
"auth.sign-up.password.label": {
"message": "Jelszó"
},
"auth.sign-up.sign-in-option.title": {
"message": "Már van fiókod?"
},
@@ -320,9 +305,6 @@
"auth.verify-email.action.account-settings": {
"message": "Fiók beállítások"
},
"auth.verify-email.action.sign-in": {
"message": "Bejenlentkezés"
},
"auth.verify-email.already-verified.description": {
"message": "Az email már hítelesítve van!"
},
@@ -407,12 +389,6 @@
"collection.label.curated-by": {
"message": "Kurátor"
},
"collection.label.description": {
"message": "Leírás"
},
"collection.label.details": {
"message": "Részletek"
},
"collection.label.no-projects": {
"message": "Még nincsenek projektek ebben a gyűjteményben"
},
@@ -431,27 +407,15 @@
"collection.title": {
"message": "{name} - Gyűjtemény"
},
"common.no": {
"message": "Nem"
},
"common.yes": {
"message": "Igen"
},
"create-project-version.create-modal.stage.add-files.admonition": {
"message": "A kiegészítő fájlok olyan kiegészítő forrásokhoz tartoznak, mint például a forráskód, nem pedig alternatív verziókhoz vagy változatokhoz."
},
"create.collection.cancel": {
"message": "Mégsem"
},
"create.collection.collection-info": {
"message": "Az új gyűjteményed nyilvános gyűjteményként jön létre, {count, plural, =0 {nincs projekt} one {# projekt} other {# projekt}}."
},
"create.collection.create-collection": {
"message": "Gyűjtemény létrehozása"
},
"create.collection.error-title": {
"message": "Hiba történt"
},
"create.collection.name-label": {
"message": "Név"
},
@@ -503,15 +467,9 @@
"create.limit-alert.type-project": {
"message": "projekt"
},
"create.organization.cancel": {
"message": "Mégsem"
},
"create.organization.create-organization": {
"message": "Szervezet létrehozása"
},
"create.organization.error-title": {
"message": "Hiba történt"
},
"create.organization.name-label": {
"message": "Név"
},
@@ -536,15 +494,9 @@
"create.organization.url-label": {
"message": "URL"
},
"create.project.cancel": {
"message": "Mégsem"
},
"create.project.create-project": {
"message": "Projekt létrehozása"
},
"create.project.error-title": {
"message": "Hiba történt"
},
"create.project.name-label": {
"message": "Név"
},
@@ -569,9 +521,6 @@
"create.project.visibility-description": {
"message": "A projekt láthatósága jóváhagyása után."
},
"create.project.visibility-label": {
"message": "Láthatóság"
},
"create.project.visibility-private": {
"message": "Privát"
},
@@ -674,6 +623,9 @@
"dashboard.creator-withdraw-modal.fee-breakdown-net-amount": {
"message": "Nettó összeg"
},
"dashboard.creator-withdraw-modal.fee-breakdown-usd-equivalent": {
"message": "USD egyenérték"
},
"dashboard.creator-withdraw-modal.kyc.business-entity": {
"message": "Üzleti szervezet"
},
@@ -713,6 +665,12 @@
"dashboard.creator-withdraw-modal.muralpay-details.account-owner": {
"message": "Fiók tulajdonosa"
},
"dashboard.creator-withdraw-modal.muralpay-details.bank-account-owner": {
"message": "Bankszámla tulajdonos"
},
"dashboard.creator-withdraw-modal.muralpay-details.bank-account-owner-description": {
"message": "Adja meg annak a személynek a nevét, aki a vállalkozás nevében jogosult a bankszámla kezelésére."
},
"dashboard.creator-withdraw-modal.muralpay-details.coin": {
"message": "Érme"
},
@@ -731,6 +689,12 @@
"dashboard.creator-withdraw-modal.muralpay-details.document-number-passport-placeholder": {
"message": "Írd be az útlevél számod"
},
"dashboard.creator-withdraw-modal.muralpay-details.document-number-resident-id": {
"message": "Személyi igazolvány száma"
},
"dashboard.creator-withdraw-modal.muralpay-details.document-number-resident-id-placeholder": {
"message": "Adja meg a személyi igazolvány számát"
},
"dashboard.creator-withdraw-modal.muralpay-details.document-number-ruc": {
"message": "RUC szám"
},
@@ -764,15 +728,9 @@
"dashboard.creator-withdraw-modal.paypal-details.paypal-auth-description": {
"message": "Csatlakoztasd a PayPal fiókodat hogy tudjál fizetni keresztül rajta."
},
"dashboard.creator-withdraw-modal.paypal-details.save-button": {
"message": "Mentés"
},
"dashboard.creator-withdraw-modal.paypal-details.save-success": {
"message": "Venmo handle sikeresen mentve!"
},
"dashboard.creator-withdraw-modal.paypal-details.saved-button": {
"message": "Mentve"
},
"dashboard.creator-withdraw-modal.paypal-details.sign-in-with-paypal": {
"message": "Bejelentkezés PayPalálal"
},
@@ -791,18 +749,9 @@
"dashboard.creator-withdraw-modal.stage.method-selection": {
"message": "Módszer"
},
"dashboard.creator-withdraw-modal.stage.muralpay-details": {
"message": "Fiók részletei"
},
"dashboard.creator-withdraw-modal.stage.muralpay-kyc": {
"message": "Megerősítés"
},
"dashboard.creator-withdraw-modal.stage.tax-form": {
"message": "Adóűrlap"
},
"dashboard.creator-withdraw-modal.stage.tremendous-details": {
"message": "Részletek"
},
"dashboard.creator-withdraw-modal.tax-form-required.body": {
"message": "Ahhoz, hogy kivedd a teljes <b>{available}</b> rendelkezésre álló összeget, kérlek töltsd ki az űrlapot. Szükséges az adóbevalláshoz és csak egyszer kell megcsinálni."
},
@@ -812,6 +761,12 @@
"dashboard.creator-withdraw-modal.tax-form-required.header": {
"message": "Adóbevallási űrlap szükséges"
},
"dashboard.creator-withdraw-modal.tremendous-details.available-denominations-label": {
"message": "Elérhető címletek"
},
"dashboard.creator-withdraw-modal.tremendous-details.enter-denomination-placeholder": {
"message": "Összeg megadása"
},
"dashboard.creator-withdraw-modal.tremendous-details.payment-method": {
"message": "Kifizetési módok"
},
@@ -824,6 +779,9 @@
"dashboard.creator-withdraw-modal.tremendous-details.reward-plural": {
"message": "Jutalmak"
},
"dashboard.creator-withdraw-modal.tremendous-details.search-amount-label": {
"message": "Összeg keresése"
},
"dashboard.creator-withdraw-modal.tremendous-details.unverified-email-header": {
"message": "Megerősítettlen E-mail"
},
@@ -836,6 +794,12 @@
"dashboard.creator-withdraw-modal.tremendous-details.usd-paypal-warning-message": {
"message": "A PayPal International szolgáltatáshoz az USD pénznemet választotta. <direct-paypal-link>Váltson át a közvetlen PayPal-re</direct-paypal-link> a kedvezőbb díjakért (≈6% helyett ≈2%)."
},
"dashboard.creator-withdraw-modal.withdraw-button": {
"message": "Pénzfelvétel"
},
"dashboard.creator-withdraw-modal.withdraw-limit": {
"message": "Pénzfelvételi korlát"
},
"dashboard.revenue.available-now": {
"message": "Elérhető most"
},
@@ -878,18 +842,66 @@
"dashboard.revenue.transactions.see-all": {
"message": "Összes megtekintése"
},
"dashboard.revenue.withdraw.card.title": {
"message": "Pénzfelvétel"
},
"dashboard.revenue.withdraw.header": {
"message": "Pénzfelvétel"
},
"dashboard.withdraw.completion.account": {
"message": "Fiók"
},
"dashboard.withdraw.completion.amount": {
"message": "Összeg"
},
"dashboard.withdraw.completion.close-button": {
"message": "Bezárás"
},
"dashboard.withdraw.completion.date": {
"message": "Dátum"
},
"dashboard.withdraw.completion.exchange-rate": {
"message": "Árfolyam"
},
"dashboard.withdraw.completion.fee": {
"message": "Díj"
},
"dashboard.withdraw.completion.method": {
"message": "Módszer"
},
"dashboard.withdraw.completion.net-amount": {
"message": "Nettó összeg"
},
"dashboard.withdraw.completion.recipient": {
"message": "Címzett"
},
"dashboard.withdraw.completion.title": {
"message": "Sikeres pénzfelvétel"
},
"dashboard.withdraw.completion.transactions-button": {
"message": "Tranzakciók"
},
"dashboard.withdraw.completion.wallet": {
"message": "Pénztárca"
},
"dashboard.withdraw.error.account-not-linked.text": {
"message": "Kapcsold a fizetési fiókodat pénzfelvétel előtt."
},
"dashboard.withdraw.error.account-not-linked.title": {
"message": "Fiók nincs csatolva"
},
"dashboard.withdraw.error.email-verification.title": {
"message": "E-mail hítelesítés szükséges"
},
"dashboard.withdraw.error.invalid-address.title": {
"message": "Cím megerősítése sikertelen"
},
"dashboard.withdraw.error.invalid-bank.title": {
"message": "Helytelen banki adatok"
},
"dashboard.withdraw.error.minimum-not-met.title": {
"message": "Túl alacsony az összeg"
},
"dashboard.withdraw.error.paypal-country-mismatch.title": {
"message": "PayPal régió eltérés"
},
"error.collection.404.list_item.1": {
"message": "Elírhatad a gyűjtemémyed URL-ét."
},
@@ -983,15 +995,15 @@
"frog.altText": {
"message": "Egy fotórealisztikus festmény egy béka labirintusról"
},
"frog.froggedPeople": {
"message": "{count, plural, one {{count} more person} other {{count} more people}} is békázva lett!🐸🐸"
},
"frog.sinceOpened": {
"message": "Ez a lap {ago} lett megnyitva"
},
"frog.title": {
"message": "Béka"
},
"hosting-marketing.hero.button.manage-your-servers": {
"message": "Szervereid kezelése"
},
"hosting-marketing.hero.button.start-your-server": {
"message": "Szervered indítása"
},
"landing.button.discover-mods": {
"message": "Modok felfedezése"
},
@@ -1073,15 +1085,6 @@
"landing.notifications.version-released": {
"message": "Egy új verzió {version} kijött erre: {gameVersion}"
},
"landing.search.label": {
"message": "Keresés"
},
"landing.search.placeholder": {
"message": "Keresés..."
},
"landing.search.sort-by.label": {
"message": "Rendezés"
},
"landing.section.for-creators.description": {
"message": "Adj otthont alkotásaidnak az interneten, és érj el hatalmas közönséget elkötelezett játékosokból."
},
@@ -1235,9 +1238,6 @@
"layout.meta.description": {
"message": "Tölts le Minecraft modokat, pluginokat, adatcsomagokat, shadereket, forráscsomagokat és modcsomagokat a Modrinthról. Fedezd fel és tedd közzé projektjeidet a Modrinthon egy modern, könnyen használható felületen és API-n keresztül."
},
"layout.nav.analytics": {
"message": "Elemzés"
},
"layout.nav.discover": {
"message": "Felfedezés"
},
@@ -1283,21 +1283,12 @@
"layout.nav.upgrade-to-modrinth-plus": {
"message": "Frissíts a Modrinth+-ra"
},
"moderation.filter.by": {
"message": "Szűrés"
},
"moderation.page.projects": {
"message": "Projektek"
},
"moderation.page.reports": {
"message": "Jelentések"
},
"moderation.search.placeholder": {
"message": "Keresés..."
},
"moderation.sort.by": {
"message": "Rendezés"
},
"muralpay.country.at": {
"message": "Ausztria"
},
@@ -1406,18 +1397,12 @@
"profile.label.collection": {
"message": "Gyűjtemény"
},
"profile.label.details": {
"message": "Részletek"
},
"profile.label.downloads": {
"message": "letöltés"
},
"profile.label.joined": {
"message": "Csatlakozott"
},
"profile.label.no": {
"message": "Nem"
},
"profile.label.no-collections": {
"message": "Ennek a felhasználónak nincsenek gyűjteményei!"
},
@@ -1439,9 +1424,6 @@
"profile.label.saving": {
"message": "Mentés..."
},
"profile.label.yes": {
"message": "Igen"
},
"profile.meta.description": {
"message": "Töltsd le {username} projektjeit a Modrinthon"
},
@@ -1454,15 +1436,6 @@
"profile.user-id": {
"message": "Felhasználói ID: {id}"
},
"project-member-header.accept": {
"message": "Elfogadás"
},
"project-member-header.decline": {
"message": "Elutasítás"
},
"project-member-header.error": {
"message": "Hiba"
},
"project-member-header.error-decline": {
"message": "Nem sikerült elutasítani a meghívást"
},
@@ -1478,9 +1451,6 @@
"project-member-header.invitation-with-role": {
"message": "Meghívtak, hogy legyél ennek a projektnek a tagja „{role}” szereppel."
},
"project-member-header.success": {
"message": "Sikeres"
},
"project-member-header.success-decline": {
"message": "Elutasítottad a meghívást"
},
@@ -1730,18 +1700,6 @@
"settings.billing.modal.cancel.title": {
"message": "Biztos, hogy le akarod mondani az előfizetésedet?"
},
"settings.billing.payment_method_type.amazon_pay": {
"message": "Amazon Pay"
},
"settings.billing.payment_method_type.amex": {
"message": "American Express"
},
"settings.billing.payment_method_type.mastercard": {
"message": "MasterCard"
},
"settings.billing.payment_method_type.paypal": {
"message": "PayPal"
},
"settings.billing.subscription.title": {
"message": "Előfizetések"
},
@@ -1820,18 +1778,12 @@
"settings.profile.profile-info": {
"message": "Profilinformációk"
},
"settings.profile.profile-picture.reset": {
"message": "Visszaállítás"
},
"settings.profile.profile-picture.title": {
"message": "Profilkép"
},
"settings.profile.username.description": {
"message": "Egyedi, kis- és nagybetűktől független név a profilod azonosításához."
},
"settings.profile.username.title": {
"message": "Felhasználónév"
},
"settings.sessions.created-ago": {
"message": "Létrehozva {ago}"
},

Some files were not shown because too many files have changed in this diff Show More