435 Commits

Author SHA1 Message Date
93365a519d Delete patches/AstralRinth_Git_Diff_02112025.patch 2026-01-26 13:28:15 +00:00
45519f5dbb Bump version to v0.10.2401
Some checks failed
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Has been cancelled
2025-12-29 04:08:52 +03:00
3843ed6690 Merge tag 'v0.10.24' into beta
Some checks failed
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Has been cancelled
2025-12-29 01:57:40 +03:00
Truman Gao
53ec2c5306 Handle project type on per version basis for multi-type projects (#4945)
* infer project type by draft version loader

* fix detecting modpack project type when editing

* fix no loaders check

* pnpm run fix
2025-12-21 22:13:41 +01:00
aecsocket
cace1a54cd Fix tech review query routes (#4946) 2025-12-21 09:23:21 +00:00
Emma Alexia
803c17de31 Fix modpack exports in the app being broken due to new file types (#4944)
* Fix modpack exports in the app being broken due to new file types

* pnpm fix to fix CI

---------

Co-authored-by: aecsocket <aecsocket@tutanota.com>
2025-12-21 08:49:53 +00:00
Calum H.
537eadef0c fix: issues with files tab + tech rev cards (#4941) 2025-12-20 22:58:14 +01:00
aecsocket
39f2b0ecb6 Technical review queue (#4775)
* chore: fix typo in status message

* feat(labrinth): overhaul malware scanner report storage and routes

* chore: address some review comments

* feat: add Delphi to Docker Compose `with-delphi` profile

* chore: fix unused import Clippy lint

* feat(labrinth/delphi): use PAT token authorization with project read scopes

* chore: expose file IDs in version queries

* fix: accept null decompiled source payloads from Delphi

* tweak(labrinth): expose base62 file IDs more consistently for Delphi

* feat(labrinth/delphi): support new Delphi report severity field

* chore(labrinth): run `cargo sqlx prepare` to fix Docker build errors

* tweak: add route for fetching Delphi issue type schema, abstract Labrinth away from issue types

* chore: run `cargo sqlx prepare`

* chore: fix typo on frontend generated state file message

* feat: update to use new Delphi issue schema

* wip: tech review endpoints

* wip: add ToSchema for dependent types

* wip: report issues return

* wip

* wip: returning more data

* wip

* Fix up db query

* Delphi configuration to talk to Labrinth

* Get Delphi working with Labrinth

* Add Delphi dummy fixture

* Better Delphi logging

* Improve utoipa for tech review routes

* Add more sorting options for tech review queue

* Oops join

* New routes for fetching issues and reports

* Fix which kind of ID is returned in tech review endpoints

* Deduplicate tech review report rows

* Reduce info sent for projects

* Fetch more thread info

* Address PR comments

* fix ci

* fix postgres version mismatch

* fix version creation

* Implement routes

* fix up tech review

* Allow adding a moderation comment to Delphi rejections

* fix up rebase

* exclude rejected projects from tech review

* add status change msg to tech review thread

* cargo sqlx prepare

* also ignore withheld projects

* More filtering on issue search

* wip: report routes

* Fix up for build

* cargo sqlx prepare

* fix thread message privacy

* New tech review search route

* submit route

* details have statuses now

* add default to drid status

* dedup issue details

* fix sqlx query on empty files

* fixes

* Dedupe issue detail statuses and message on entering tech rev

* Fix qa issues

* Fix qa issues

* fix review comments

* typos

* fix ci

* feat: tech review frontend (#4781)

* chore: fix typo in status message

* feat(labrinth): overhaul malware scanner report storage and routes

* chore: address some review comments

* feat: add Delphi to Docker Compose `with-delphi` profile

* chore: fix unused import Clippy lint

* feat(labrinth/delphi): use PAT token authorization with project read scopes

* chore: expose file IDs in version queries

* fix: accept null decompiled source payloads from Delphi

* tweak(labrinth): expose base62 file IDs more consistently for Delphi

* feat(labrinth/delphi): support new Delphi report severity field

* chore(labrinth): run `cargo sqlx prepare` to fix Docker build errors

* tweak: add route for fetching Delphi issue type schema, abstract Labrinth away from issue types

* chore: run `cargo sqlx prepare`

* chore: fix typo on frontend generated state file message

* feat: update to use new Delphi issue schema

* wip: tech review endpoints

* wip: add ToSchema for dependent types

* wip: report issues return

* wip

* wip: returning more data

* wip

* Fix up db query

* Delphi configuration to talk to Labrinth

* Get Delphi working with Labrinth

* Add Delphi dummy fixture

* Better Delphi logging

* Improve utoipa for tech review routes

* Add more sorting options for tech review queue

* Oops join

* New routes for fetching issues and reports

* Fix which kind of ID is returned in tech review endpoints

* Deduplicate tech review report rows

* Reduce info sent for projects

* Fetch more thread info

* Address PR comments

* fix ci

* fix ci

* fix postgres version mismatch

* fix version creation

* Implement routes

* feat: batch scan alert

* feat: layout

* feat: introduce surface variables

* fix: theme selector

* feat: rough draft of tech review card

* feat: tab switcher

* feat: batch scan btn

* feat: api-client module for tech review

* draft: impl

* feat: auto icons

* fix: layout issues

* feat: fixes to code blocks + flag labels

* feat: temp remove mock data

* fix: search sort types

* fix: intl & lint

* chore: re-enable mock data

* fix: flag badges + auto open first issue in file tab

* feat: update for new routes

* fix: more qa issues

* feat: lazy load sources

* fix: re-enable auth middleware

* feat: impl threads

* fix: lint & severity

* feat: download btn + switch to using NavTabs with new local mode option

* feat: re-add toplevel btns

* feat: reports page consistency

* fix: consistency on project queue

* fix: icons + sizing

* fix: colors and gaps

* fix: impl endpoints

* feat: load all flags on file tab

* feat: thread generics changes

* feat: more qa

* feat: fix collapse

* fix: qa

* feat: msg modal

* fix: ISO import

* feat: qa fixes

* fix: empty state basic

* fix: collapsible region

* fix: collapse thread by default

* feat: rough draft of new process/flow

* fix labrinth build

* fix thread message privacy

* New tech review search route

* feat: qa fixes

* feat: QA changes

* fix: verdict on detail not whole issue

* fix: lint + intl

* fix: lint

* fix: thread message for tech rev verdict

* feat: use anim frames

* fix: exports + typecheck

* polish: qa changes

* feat: qa

* feat: qa polish

* feat: fix malic modal

* fix: lint

* fix: qa + lint

* fix: pagination

* fix: lint

* fix: qa

* intl extract

* fix ci

---------

Signed-off-by: Calum H. <contact@cal.engineer>
Co-authored-by: Alejandro González <me@alegon.dev>
Co-authored-by: aecsocket <aecsocket@tutanota.com>

---------

Signed-off-by: Calum H. <contact@cal.engineer>
Co-authored-by: Alejandro González <me@alegon.dev>
Co-authored-by: Calum H. <contact@cal.engineer>
2025-12-20 11:43:04 +00:00
Truman Gao
1e9e13aebb Proper handling of modpack loaders (#4940)
* fix handling modpack loader

* fix order

* increase timeout

* fix search erroring on non alphanumeric input for searching project id
2025-12-19 23:24:40 +00:00
Prospector
67835b04a8 changelog 2025-12-19 13:40:32 -08:00
Truman Gao
3f93041ca2 Improve editing project versions (#4933)
* add edit versions dropdown menu

* implement improved edit version with individual edit stages

* make changelog bigger

* update button styles

* remove hover button when hover on row

* bring editing versions back to project settings

* bring back gallery edit and upload in project page

* fix progress value

* fix admonition import

* fix v3 upload for modpacks

* fix modpack loader display for editing version and better open edit/create modal handling

* fix currentMember prop

* fix modpack loader displaying incorrectly

* fix max length

* fix version url after making an edit to version and fix delete

* small max height fix

* hide edit dependencies for modpack

* pnpm run fix

* fix import

* add tooltip

* update icons

* update copy and create version button style
2025-12-19 21:24:14 +00:00
Julian Vennen
0663b8adb0 Add missing file type enum values to openapi spec (#4936) 2025-12-19 21:11:47 +00:00
Truman Gao
1f48f5b5af Fix project dependencies search (#4932)
* add search on all project types except mod packs

* add search by ID

* fix placeholder

* rename to dependency select
2025-12-19 20:27:17 +00:00
Truman Gao
0268600044 Provide default when modpack doesn't specify loader (#4930)
* fix no modpack loader, default to minecraft loader

* use v2 create then modify with v3 for environment
2025-12-19 00:54:00 +01:00
François-Xavier Talbot
8fb38ba0f2 Remove tag="type" on PaymentRequestMetadata (#4931)
This would conflict with the flattened kind: PaymentRequestMetadataKind
enum, which itself is internally tagged with "type", leading to two
"type" fields being serialized, confusing the deserializer.

Deserialization would fail, be silenced in the stripe webhook and lead
to the incorrect region being assigned to a server.
2025-12-19 00:52:43 +01:00
Prospector
85c65e697d changelog 2025-12-18 13:37:51 -08:00
Truman Gao
563997e060 Project versions hot fixes (#4928)
* Fix everyone seeing managing gallery/version has moved alert

* fix loader picker disappear
2025-12-18 13:35:57 -08:00
Calum H.
2d5568ecec polish: qa changes for non-usd cards (#4926)
* polish: qa changes for non-usd cards

* fix: always show worth

* fix: padding
2025-12-18 21:29:32 +00:00
Prospector
a64c4201bb changelog 2025-12-18 12:41:08 -08:00
Prospector
51d5ed771c Add new versions blog post (#4925) 2025-12-18 12:39:18 -08:00
Prospector
539132a527 changelog 2025-12-18 12:24:35 -08:00
Truman Gao
9958600121 feat: managing project versions (#4811)
* start modal, working show modal

* add stages and implement MultiModalStage component

* add project versions context and add file button

* implement add files stage

* export interfaces

* move MultiStageModal to /base

* small update to file input

* add version types to api-client

* wrap version namespace under v3

* implement add details stage fields and loaders component

* start create MC versions stage

* implement changelog stage and bring width into a per stage concern

* implement loader picker with grouping

* improve grouping and sorting for loader picker

* use chips component

* small updaets

* fix loader icon color

* componentize mc version picker

* initial version of shift click to select range

* use newModal for markdown editor

* start add dependencies stage with search

* implement showing mod options in search

* componentize modselect and add version/dependency relation select

* hide version and dependency relation when no project selected

* fix project facet search

* implement api-client versions requests

* fix search api request facet type to be string

* fix new modal outer container scroll

* implement add dependency stage

* fix parse error

* add placeholders

* fix types

* update dependency row styles

* small change

* fix the types on manage versions to be correct with labrinth request bodies

* fix create version file parts

* use draft version ref in flow and implement proper file handlling

* use draft version ref for mc versions select

* implement reactive modal state and conditionally disabled next buttons

* ensure all data is using draftVersion ref

* remove shift click to select range since it sucks

* fix up add dependencies stage state/types

* small fixes

* implement adding dependencies connected to api calls and make adding dependencies work

* add final create version button config

* start create version backend call and bring versions table to project settings

* set add files stage width

* remove version file upload in project page

* small fix

* fix create version api call

* implement error handling

* implement mc versions search

* implement showing all mc versions

* small fix

* implement prefill data

* add success notification

* add cancel button

* add new dropzone file input

* run pnpm run fix

* add tailwind preset in ui package

* polish file version row

* fix modal widths

* hide added versions when no versions added

* implement add loaders stage

* implement small chips and small fixes

* implement grouping for all releases

* implement new all releases grouping

* implement better shift click for version select

* small fixes

* fix search input style

* delete versions provider and start project type inferring

* implement getting project type

* add versions empty state, add folder up icon and pnpm run fix

* implement create version in project versions table

* update side nav

* implement dynamic create version flow depending on project type and detected data

* add id to stages and fix calling setStage not working

* move added loaded out of loader picker

* remove selected and detected MC versions

* add loading message to dependency search and fix dependency type always being "required"

* fix components in ref

* fix width on dropdown

* implement toggle all mc versions based on state of last in range

* fix mc version text colour

* do proper clean up

* update loaders to use tag item

* update UI to use TagItem and better match styles

* handle detected data when setting primary file

* add progress bar

* hide progress bar for non-progress stage

* add loading state on submit

* properly cache dependencies projects/versions

* pnpm run fix

* add dragover show purple border on dropzone file input

* better handle added dependencies

* move versions in side nav

* implement adding file type

* fix api body format for file type

* implement working edit existing version
- working add/remove file
- working edit version details

* a step towards proper versions refresh

* add gallery to project settings

* actually figured out refresh versions

* move checklist into settings page

* remove editing version from version page and add button to versions table in project settings

* remove edit and delete buttons from gallery in project page

* add empty state messages for project page

* add default scroll bar styles

* implement support for new file types

* remove edit from dropdown in project page versions table

* redirect to settings page

* move changelog to row with actions

* fix overflow on added dependencies

* fix redirect

* update scroll styles

* implement add environment stage (create and modify version not persisting environment to backend)

* small style fixes

* small spacing fix

* small style fixes

* add a flag for loading dependency projects

* address PR comments

* fix modrinth ui imports

* use magic keys instead of window.addeventlistener

* add spacing in bottom of settings page

* useDebounceFn from vue

* fix inconsistent stroke

* persist scroll through

* fix remove button

* fix api fields

* fix version file dropdown: hide primary option in edit mode and fix setting initial value

* fix links in nags

* implement skipped field for skipping steps instead of mutating stages array's elements

* implement suggested dependencies components

* implement suggested dependencies api call

* refactor cached get project and get version calls

* always hide environments

* update links

* set scroll in 10ms

* update links

* fix links pt2

* fix shadow

* fix progress bar

* dont include mc versions in suggested versions finder

* fix text overflow styles

* use tooltip

* fix change version name api

* implement set environment api call

* delete unused vue pages

* implement detected environment, edit environment step, and fix showing loaders in details for no loader projects

* small fix

* no loaders project wrong check

* fix not having 'minecraft' loader for resource pack

* implement updating existing files file type

* move add minecraft loader outside try catch

* add datapack to have environment

* fix being able to select duplicate MC versions

* remove datapack project from environment

* fix version fetch

* fix having detected environment not properly skipping step

* only add detected data when primary file changes

* fix unknown environemtn

* implement gallery and versions have moved admonition

* update project page for creator view

* small copy update

* merge fixes

* pnpm run fix

* fix checkmark squished

* fix version type can be deselected

* refactor: DI context + better typed MultistageModal

* fix type import

* Misc QA fixes

* fix allowed file types with no project type

* implement new add files stage

* fix versiosn header with new pagination

* hide buttons when no files for add file stage

* use prettier formatter

* allow signature file types

* add detecting primary file

* fix progress bar in firefox

* fix environment not correctly being hidden/shown

* remove environment missing nag

* temp bring back environment page

* remove delete version action from project page

* replace "continue" next button label with actual next step

* fix types

* pnpm run fix

* move supplementary files alert up and update border radius style on dropzone

* copy updates

* small update on version num placeholder

* update placeholder

* make timeout on upload routes 2 minutes

* fix lint issues

* run pnpm intl:extract

---------

Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
2025-12-18 19:56:15 +00:00
aecsocket
9ad01723a2 Fix optional file type upload validation (#4924) 2025-12-18 19:18:05 +00:00
Prospector
8448bacae7 Update changelog 2025-12-18 11:16:36 -08:00
Prospector
c21e98a2a8 Update changelog 2025-12-18 11:15:06 -08:00
Prospector
5bbc3872f3 Revert "Use alt CDN URL when request header is passed (#4921)" (#4923)
This reverts commit 609e3896eb.
2025-12-18 18:40:27 +00:00
aecsocket
8d894541e8 Add affiliate code revenue analytics (#4883)
* Add affiliate code revenue analytics

* clean up some error handling

* Add conversions to affiliate code analytics

* Only include affiliate subscriptions which have an associated successful charge

* wip: affiliate code clicks

* affiliate code click ingest route

* Add affiliate code clicks to analytics

* add new cols
2025-12-18 18:02:49 +00:00
aecsocket
dc16a65b62 Improve support for non-USD Tremendous gift cards (#4887)
* Improve support for non-USD Tremendous gift cards

* add forex info to tremendous payout methods

* fix: partially fix DEV-535

* feat: wip

* eur/usd to usd/eur

* feat: better denom picking

* feat: qa changes

* fix: intl

---------

Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-12-18 18:02:29 +00:00
Calum H.
514c6f6e34 fix: muralpay iso mismatch (#4871)
* fix: deduplicate and use full code

* fix: subdivisions match muralpay
2025-12-18 02:08:47 +00:00
aecsocket
609e3896eb Use alt CDN URL when request header is passed (#4921)
* Use alt CDN URL when request header is passed

* Modify version routes to use alt CDN
2025-12-17 18:12:29 +00:00
Prospector
fd08dff1e7 Update changelog 2025-12-16 12:59:17 -08:00
Prospector
6425ab8c57 Add Java 25 setting 2025-12-16 12:47:05 -08:00
aecsocket
e123e51c66 Fix how processor arguments are generated in app (#4919) 2025-12-16 20:03:37 +00:00
Prospector
21fad12a21 Fix collection pages requiring auth (#4915) 2025-12-16 14:14:52 +00:00
Calum H.
924a77eb3f fix: temporarily disable vintl for all langs apart from en-US (#4911)
* fix: temporarily disable vintl apart from en_us

* fix: lint
2025-12-15 19:04:19 +00:00
aecsocket
7aaf99a0c8 Split logging utils into its own crate (#4852)
* Split logging utils into its own crate

* fix review comments

* remove anyhow from root

* make meilisearch less verbose
2025-12-12 02:09:57 +00:00
Prospector
91accd5578 Update app changelog + fix accordion issue 2025-12-11 16:19:51 -08:00
Prospector
147f19f11e lint 2025-12-11 16:09:20 -08:00
Prospector
73ff6df73c update changelog 2025-12-11 16:08:35 -08:00
Prospector
0de780b7c9 Make game versions update every 10 minutes via server-side route (#4892) 2025-12-11 16:05:31 -08:00
Prospector
f49f889536 Fix news row width (#4894)
* fix news row width

* lint
2025-12-11 16:05:19 -08:00
Prospector
b3f598aa1d Fix server content search (#4891)
* fix server content search

* wtf
2025-12-11 16:04:54 -08:00
Prospector
cd1b5dcd3d update changelog 2025-12-11 16:00:12 -08:00
Prospector
79b7d269b0 Throttle search to not spam requests (#4893)
* Throttle search to not spam requests

* lint
2025-12-11 21:03:10 +00:00
Prospector
40ac726930 Exclude node_modules from tailwind pattern to improve build time (#4890) 2025-12-11 19:04:28 +00:00
aecsocket
ddcc14d99f Add details to Mural API errors (#4886) 2025-12-11 12:49:59 +00:00
Prospector
3dd2de5f18 changelog 2025-12-09 18:18:26 -08:00
Prospector
0a8f489234 NormalPage component w/ Collections refactor (#4873)
* Refactor search page, migrate to /discover/

* Add NormalPage component for common layouts, refactor Collections page as an example, misc ui pkg cleanup

* intl:extract

* lint

* lint

* remove old components

* Refactor search page, migrate to /discover/

* Add NormalPage component for common layouts, refactor Collections page as an example, misc ui pkg cleanup

* intl:extract

* lint

* lint

* remove old components
2025-12-09 22:44:10 +00:00
Prospector
1d64b2e22a Refactor search page, migrate to /discover/ (#4862) 2025-12-09 14:25:45 -08:00
Calum H.
251e89fe5a fix: notice btns not matching colour of notice + gap issue (#4823)
* feat: improve notices

* fix: bottom gap for notices

* fix: lint

* fix: lint
2025-12-09 09:14:59 +00:00
Calum H.
4fbbc2b1cf feat: use utc during balance bar calcs (#4875) 2025-12-09 08:44:04 +00:00
Calum H.
d5b7ac3542 fix: setting states not persisting (#4872)
Closes: 4867
2025-12-08 23:29:52 +00:00
Prospector
fec395a4cf Revert "New translations from Crowdin (main) (#4815)" (#4878)
This reverts commit 16c0dadc4a.
2025-12-08 15:29:05 -08:00
Modrinth Bot
16c0dadc4a New translations from Crowdin (main) (#4815) 2025-12-08 21:53:44 +00:00
Calum H.
779092c0b7 feat: user details modal for moderators (#4764)
* feat: user details modal for moderators

* fix: casing
2025-12-08 21:50:38 +00:00
aecsocket
9aa06fbc26 Fix Mural payout status syncing (#4853)
* Fix Mural payout status syncing

* Make Mural payout code more resilient

* prepare sqlx

* fix test
2025-12-08 20:34:41 +00:00
Calum H.
cfd2977c21 feat: stable key for mods list (#4876) 2025-12-08 18:50:55 +00:00
Prospector
27fc0796a4 changelog 2025-12-08 10:24:47 -08:00
Calum H.
b1438bd460 fix: blocking await for jump back in (#4870)
* fix: loading state for jump back in

* fix: lint
2025-12-08 18:03:08 +00:00
Calum H.
267e0cb636 fix: license url not being removed when saving (#4874)
Closes: #4848
2025-12-08 17:55:29 +00:00
coolbot
d471ef6763 Update support contact bubble color in utils.ts (#4868)
Signed-off-by: coolbot <76798835+coolbot100s@users.noreply.github.com>
2025-12-08 06:51:11 +00:00
aecsocket
cea5cfa4ab Add new optional file types (#4854)
* Add new optional file types

* Fix build

* Add signature file type

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-12-06 23:45:10 +00:00
Prospector
56356e8260 changelog 2025-12-05 11:56:19 -08:00
Calum H.
41e4086973 feat: qa improvements for backups page (#4857)
* feat: fix backup action disabling logic

* feat: allow actions when backup is being created

* feat: qa fixes

* feat: backups empty state

* fix: lint

* intl:extract

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-12-05 01:48:34 +00:00
Calum H.
0f1f27d450 feat: dev-541 (#4858) 2025-12-05 01:34:05 +00:00
Calum H.
a558064f9d fix: add x-panel-version header (#4855) 2025-12-04 15:15:03 +01:00
Prospector
c421249767 changelog 2025-12-03 18:32:43 -08:00
Calum H.
8eff939039 feat: ws client & new backups frontend (#4813)
* feat: ws client

* feat: v1 backups endpoints

* feat: migrate backups page to api-client and new DI ctx

* feat: switch to ws client via api-client

* fix: disgust

* fix: stats

* fix: console

* feat: v0 backups api

* feat: migrate backups.vue to page system w/ components to ui pkgs

* feat: polish backups frontend

* feat: pending refactor for ws handling of backups

* fix: vue shit

* fix: cancel logic fix

* fix: qa issues

* fix: alignment issues for backups page

* fix: bar positioning

* feat: finish QA

* fix: icons

* fix: lint & i18n

* fix: clear comment

* lint

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-12-03 18:32:03 -08:00
Prospector
e3444a3456 changelog 2025-12-03 14:39:02 -08:00
Prospector
16a6f7b352 Modrinth Hosting rebrand (#4846)
* Modrinth Hosting rebranding

* fix capitalization issue

* fix issues
2025-12-03 22:15:36 +00:00
aecsocket
79c2633011 Fix slug/project ID collisions (#4844)
* wip: tool to create project with id

* fix

* fix id/slug collision for orgs
2025-12-03 00:30:18 +00:00
aecsocket
783aaa6553 Add revenue split to affiliate codes v2 (#4672)
* wip: affiliate payouts again

* Implement affiliate payout queue

* Deactivate subscription affiliations on cancellation

* Remove a test that never compiled in the first place

* Update sqlx cache

* address some PR comments

* more comments

* wip: handle refund charges

* cargo sqlx prepare

* Address PR comments

* cargo sqlx prepare
2025-12-02 00:01:24 +00:00
ddf51c9596 Bump application version
Some checks failed
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Successful in 42m38s
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
2025-11-29 00:19:47 +03:00
a63b6b27d5 Fix launcher GUI not loaded 2025-11-29 00:19:19 +03:00
Prospector
60e0953616 stringify errors 2025-11-28 12:11:39 -08:00
Prospector
f7c86f9fc9 update changelog 2025-11-28 11:39:32 -08:00
cac3b46652 Merge tag 'v0.10.21' into beta 2025-11-28 22:23:28 +03:00
aecsocket
fe684ab903 Change auth servers reachable check URL (#4830) 2025-11-27 19:38:26 +00:00
Calum H.
8592761493 fix: stale modpack permissions data on re-review (#4822) 2025-11-27 17:15:10 +00:00
aecsocket
dfe087df20 Enforce 2dp on payout withdrawals (#4829)
* fix mural withdraw amount

* Enforce 2dp on all payout logic
2025-11-27 10:03:34 +00:00
82119a9fc9 Bump application version
Some checks failed
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Successful in 37m53s
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
2025-11-27 05:09:45 +03:00
b9ec1b42dc Merge tag 'v0.10.20' into beta 2025-11-27 05:08:45 +03:00
7345fa401b Add patch file 2025-11-27 04:51:21 +03:00
aecsocket
be3208c5a1 Fix Docker Compose to match staging/prod environments (#4828) 2025-11-26 23:54:03 +00:00
Calum H.
b56f39ce07 fix: edit server icon issues (#4821) 2025-11-26 23:29:29 +00:00
aecsocket
0178fddc38 Install mod update dependencies automatically (#4800)
* Redownload version dependencies when updating a mod

* Fix update all button as well
2025-11-24 13:35:14 +00:00
aecsocket
31417a2aa1 more logging on sync payouts task (#4814) 2025-11-23 21:48:15 +01:00
Truman Gao
f333a75221 fix empty state for projects in "All" tab (#4801)
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-11-23 02:38:13 +00:00
aecsocket
bcf14a4c51 Fix downloading libraries for Forge 1.7.2 (#4808)
* wip: fix Forge 1.7.2 downloads

* Bump recursion limit
2025-11-21 22:45:34 +00:00
aecsocket
130c2863ab Fix exposing Docker Compose ports to broadcast addr (#4805) 2025-11-21 11:13:11 +00:00
Prospector
e59664426b changelog 2025-11-19 15:17:01 -08:00
aecsocket
2f0ef07944 Add logging and change limit of Mural payouts task (#4798) 2025-11-19 12:38:30 +00:00
Truman Gao
9af19d01e5 Fix modrinth+ firing ad requests on load (#4792) 2025-11-18 18:05:24 +00:00
François-Xavier Talbot
e837d9fa30 Add route to reprocess a refund charge's tax record (#4791) 2025-11-18 11:36:55 +00:00
aecsocket
93b79759c7 Add auth servers unreachable warning to app (#4774)
* Add auth servers unreachable warning to app

* Check auth status every 5 minutes

* Use admonition in auth server warning

* feat: tanstack

* Fix auth server reachability query

* Format

* intl extract

---------

Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
2025-11-17 18:41:52 +00:00
Modrinth Bot
4becb2a822 New translations from Crowdin (main) (#4787) 2025-11-17 07:45:40 +00:00
Calum H.
134a621d0d fix: use ref rather than direct val (#4785) 2025-11-16 22:36:11 +00:00
aecsocket
089cca60ce Fix PayPal SSO OAuth callback (#4758)
* Maybe fix PayPal SSO

* cargo sqlx prepare

* maybe works

* Attempt 2 of fixing

* Fix vue

* Try adding more logging to flow
2025-11-16 21:49:48 +00:00
Prospector
20484ed7aa fix timezone 2025-11-14 12:10:58 -08:00
Prospector
763a38812f changelog 2025-11-14 11:58:48 -08:00
Calum H.
7ccc32675b feat: start of cross platform page system (#4731)
* feat: abstract api-client DI into ui package

* feat: cross platform page system

* feat: tanstack as cross platform useAsyncData

* feat: archon servers routes + labrinth billing routes

* fix: dont use partial

* feat: migrate server list page to tanstack + api-client + re-enabled broken features!

* feat: migrate servers manage page to api-client before page system

* feat: migrate manage page to page system

* fix: type issues

* fix: upgrade wrapper bugs

* refactor: move state types into api-client

* feat: disable financial stuff on app frontend

* feat: finalize cross platform page system for now

* fix: lint

* fix: build issues

* feat: remove papaparse

* fix: lint

* fix: interface error

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-11-14 17:15:09 +00:00
Truman Gao
26feaf753a Fixes #4348 (#4773)
* also fixes spacing issue in collections card small width

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-11-13 23:51:08 +00:00
Prospector
94c0003c19 Fix a number of light mode issues and get rid of scrollbar jumping on menus (#4760)
* Fix DEV-466, Fixes #4692 as well as a bunch of other poor contrast and inconsistency issues in light mode. Adds shadows to buttons and makes scrollbar gutter stable.

* lintttt & only do scrollbar gutter on website

* try to fix following hydration issue

* try another clientonly approach

* fix home page link animation

* lint

* remove dropdown style from checkbox & improve shadow consistency

* liiiint
2025-11-13 23:21:43 +00:00
aecsocket
c27f787c91 Task to retroactively update Mural statuses (#4769)
* Task to retroactively update Mural statuses

* cargo sqlx prepare

* wip: add tests

* Prepare

* Fix up test

* start on muralpay mock

* Move mocking to muralpay crate
2025-11-13 18:16:41 +00:00
Calum H.
70e2138248 feat: base api-client impl (#4694)
* feat: base api-client impl

* fix: doc

* feat: start work on module stuff

* feat: migrate v2/v3 projects into module system

* fix: lint & README.md contributing

* refactor: remove utils old api client prototype

* fix: lint

* fix: api url issues

* fix: baseurl in error.vue

* fix: readme

* fix typo in readme

* Update apps/frontend/src/providers/api-client.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Calum H. <hendersoncal117@gmail.com>

* Update packages/api-client/src/features/verbose-logging.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Calum H. <hendersoncal117@gmail.com>

* Update packages/api-client/src/features/retry.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Calum H. <hendersoncal117@gmail.com>

---------

Signed-off-by: Calum H. <hendersoncal117@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-12 20:29:12 +00:00
Calum H.
590ba3ce55 fix: original startup settings values not being updated with new state we send to server (#4761) 2025-11-12 19:45:51 +00:00
Ksawier Wilczynski
29671347a0 fix: correct parameter name for create function in profile helper (#4744)
Co-authored-by: Panyu <48863527+PanyuDev@users.noreply.github.com>
2025-11-12 05:43:10 +00:00
Calum H.
386e6e50da refactor: move batch credit modal into default layout (#4767)
* refactor: move batch credit modal into default layout

* fix: spacing + spans rather than p
2025-11-12 04:14:11 +00:00
Calum H.
880ed21bcd fix: incorrect autocomplete for pardon_ip and ban_ip (#4763) 2025-11-12 04:01:25 +00:00
Calum H.
bbc31ef077 fix: z index issues for mobile nav (#4766)
* fix: z index issues for mobile nav

Closes: #4722

* fix: below modals

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-11-12 04:00:46 +00:00
Calum H.
9a13e977a0 fix: crash on charges.vue (#4765) 2025-11-12 04:00:39 +00:00
Modrinth Bot
a5602ff18c New translations from Crowdin (main) (#4749) 2025-11-11 23:11:36 +00:00
Prospector
5901c5a535 update changelog 2025-11-11 12:28:24 -08:00
Jonathan Romano
cca1dd7e37 Update openapi spec to fix invalid json (#4756)
Signed-off-by: Jonathan Romano <jonathan@luxaritas.com>
2025-11-11 02:00:26 +00:00
Prospector
127e01cc96 changelog 2025-11-10 11:58:39 -08:00
aecsocket
1dcb38cb57 Fix dependency installation not respecting mod loader (#4751)
* Fix dependency installation not respecting mod loader

* fix
2025-11-10 16:48:11 +00:00
aecsocket
98b4970680 Store method ID for payouts (#4752)
* Store method ID for payouts

* Fixes
2025-11-10 16:41:06 +00:00
aecsocket
9706f1597b Supporting documents for Mural payouts (#4721)
* wip: gotenberg

* Generate and provide supporting docs for Mural payouts

* Correct docs

* shear

* update cargo lock because r-a complains otherwise

* Remove local Gotenberg queue and use Redis instead

* Store platform_id in database correctly

* Address PR comments

* Fix up CI

* fix rebase

* Add timeout to default env vars
2025-11-08 23:27:31 +00:00
aecsocket
f8a5a77daa Expose test utils to Labrinth dependents (#4703)
* Expose test utils to Labrinth dependents

* Feature gate `labrinth::test`

* Unify db migrators

* Expose `NotificationBuilder::insert_many_deliveries`

* Add logging utils to common crate

* Remove unused console-subscriber layer

* fix CI
2025-11-08 20:26:24 +00:00
Prospector
1efdceacfd changelog 2025-11-07 21:06:54 -08:00
Calum H.
b998c71337 feat: add skript + mcfunction highlightjs support (#4739)
* feat: add skript + mcfunction highlightjs support

* fix: lint

* fix: dep

* lint

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-11-08 02:24:08 +00:00
Prospector
6a6adb3480 Updated changelog 2025-11-07 15:38:23 -08:00
Prospector
a694aeed32 Add frontend support for Geyser Extension plugin loader (#4735) 2025-11-07 19:55:16 +00:00
Prospector
8182b795de Fix resource pack projects with multiple loaders not finding a release in Download modal (#4734) 2025-11-07 19:54:59 +00:00
aecsocket
608ab988f0 Fetch more data for moderation endpoints (#4727)
* Moderation endpoints fetch ownership data

* fix up endpoint configs

* add some docs
2025-11-07 18:50:29 +00:00
Prospector
a261598e89 changelog 2025-11-07 09:26:51 -08:00
Prospector
11a1918a2e fix advanced rendering toggle on web with NewModal Closes #2284 (#4733) 2025-11-07 16:47:54 +00:00
Airyzz
67fb825937 Make major box shadows toggleable with Advanced rendering setting (#4712)
* Update App.vue

* Update App.vue

* tone down light mode shadows, disable with advanced rendering disabled

---------

Co-authored-by: Calum H. <contact@cal.engineer>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-11-07 16:35:55 +00:00
Prospector
4289f8b52d changelog 2025-11-07 08:01:12 -08:00
Prospector
fb1ba51a2b Revert "Reapply "fix: firefox backup download issues (#4679)" (#4683) (#4704)"
This reverts commit b11934054d.
2025-11-07 07:45:12 -08:00
aecsocket
cb47bc97c7 Logging hotfix for canceling Mural payout requests (#4730)
* Logging hotfix for canceling payout requests

* Remove Tombi CI step for now
2025-11-07 12:07:10 +01:00
Modrinth Bot
06e1bc9dd6 New translations from Crowdin (main) (#4548) 2025-11-07 10:36:06 +00:00
Truman Gao
af39a1769c Fixes on small frontend bugs (#4719)
* Account list is not scrollable
Fixes #4688

* Selecting Glitch in the log Screen
Fixes #4687 by explicitly defining the buffer

* When sorting or grouping your instance, the option you choose does not get saved
Fixes #4647

* use label prop to specify specific local storage for grid display state

* Implement persistent filters on mods page
Fixes #4517

* fix lint errors

* update schemastore links

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-11-07 07:56:00 +00:00
Calum H.
60ffa75653 feat: 2nd batch of withdraw QA changes (#4724)
* polish: increase gap between svg and text in empty state

* fix: use ts & change cancel btn style

* fix: btn style

* polish: new transaction page design

* fix: navstack match nested + csv download

* fix: lint & i18n

* Add tooltip to CSV download button + standard btn style

Signed-off-by: Calum H. <contact@cal.engineer>

* fix: lint & i18n

---------

Signed-off-by: Calum H. <contact@cal.engineer>
2025-11-06 21:55:07 +00:00
Jerozgen
7674433f88 Improve nags translation strings (#4693) 2025-11-06 10:37:37 +00:00
François-Xavier Talbot
7437a833ef Fix payout notifications (#4707)
* Add limit to payouts_values_notifications synchronizer

* Set payout notification threshold to $1

* Fix formatting

* Query cache
2025-11-05 19:43:59 +00:00
Prospector
1bad1a57b0 changelog 2025-11-04 18:29:18 -08:00
Prospector
3437387885 Fix fee amount for Tremendous PayPal (#4720) 2025-11-04 17:51:07 -08:00
aecsocket
23d098eee5 Fix error chain logging and withdrawal fees (#4718)
* Log Labrinth errors properly

* Tweak how we do Tremendous fees

* Fix maths for Tremendous fees
2025-11-04 17:50:54 -08:00
Prospector
4636372ff4 changelog 2025-11-04 16:13:51 -08:00
Prospector
4592786de8 Update withdraw blog post now that it's live. (#4715) 2025-11-04 16:12:11 -08:00
Calum H.
f054f39c5d polish: withdraw flow fixes (#4713)
* fix: negative value stuff

* fix: mobile responsiveness for modal min-w

* feat: better error handling on withdraw

* fix: empty state positioning + svg sizing

* fix: title case -> sentence case

* fix: re-add virtual visa under gift cards

* fix: hide <1% segments
2025-11-04 21:29:47 +00:00
aecsocket
6e47de06bb Address withdrawal QA changes (#4711)
* Add Mural to balance monitoring

* Add back Visa prepaid Tremendous cards

* cargo sqlx prepare
2025-11-04 16:40:15 +00:00
aecsocket
c38751a38a cargo sqlx prepare (#4710) 2025-11-04 01:34:39 +01:00
aecsocket
2d218d79c6 Mural fixes (#4709) 2025-11-04 01:12:30 +01:00
Prospector
5a41a35716 fix affiliate link mistake 2025-11-03 15:45:49 -08:00
Prospector
644554f1e9 changelog 2025-11-03 15:15:53 -08:00
Calum H.
3765a6ded8 feat: creator revenue page overhaul (#4204)
* feat: start on tax compliance

* feat: avarala1099 composable

* fix: shouldShow should be managed on the page itself

* refactor: move show logic to revenue page

* feat: security practices rather than info

* feat: withdraw page lock

* fix: empty modal bug & lint issues

* feat: hide behind feature flag

* Use standard admonition components, make casing consistent

* modal title

* lint

* feat: withdrawal check

* feat: tax cap on withdrawals warning

* feat: start on revenue page overhaul

* feat: segment generation for bar

* feat: tooltips and links

* fix: tooltip border

* feat: finish initial layout, start on withdraw modal

* feat: start on withdrawal limit stage

* feat: shade support for primary colors

* feat: start on withdraw details stage

* fix: convert swatches to hex

* feat: payout method/region dropdown temporarily using multiselect

* feat: fix modal open issues and use teleport dropdowns

* feat: hide transactions section if there are no transactions

* refactor: NavStack surfaces

* feat: new dropdown component

* feat: remove teleport dropdown modal in favour of new combobox component

* fix: lint

* refactor: dashboard sidebar layout

* feat: cleanup

* fix: niche bugs

* fix: ComboBox styling

* feat: first part of qa

* feat: animate flash rather than tooltip

* fix: lint

* feat: qa border gradient

* fix: seg hover flashes

* feat: i18n

* feat: i18n and final QA

* fix: lint

* feat: QA

* fix: lint

* fix: merge conflicts

* fix: intl

* fix: blue hover

* fix: transfers page

* feat: surface variables & gradients

* feat: text vars

* fix: lint

* fix: intl

* feat: stages

* fix: lint

* feat: region selection

* feat: method selection btns

* fix: flex col on transactions

* feat: hook up method selection to ctx

* feat: muralpay kyc stage info

* wip: muralpay integration

* Basic Mural Pay API bindings

* Fix clippy

* use dotenvy in muralpay example

* Refactor payout creation code

* wip: muralpay payout requests

* Mural Pay payouts work

* Fix clippy

* feat: progress

* fix: broken tax form stage logic

* polish: tax form stage and method selection stage layout

* add mural pay fees API

* Work on payout fee API

* Fees API for more payment methods

* Fix CI

* polish: muralpay qa

* refactor: clean up combobox component

* polish: change from critical -> warning admonition in MuralpayDetailsStage

* Temporarily disable Venmo and PayPal methods from frontend

* polish: clean up transaction component & page

* polish: navbar qa, text color-contrast in chips type buttonstyled, mb on rev/index.vue page

* fix: incorrectly using available balance as tax form withdraw limit after tax forms submitted

* wip: counterparties

* Start on counterparties and payment methods API

* polish: combobox component

* polish: fix broken scroll logic using a composable & web:fix

* fix: lint

* polish: various QA fixes

* feat: hook up with backend (wip)

* feat: draft muralpay rails dynamic logic

* polish: modify rails to support backend changes

* Mural Pay multiple methods when fetching

* Don't send supported_countries to frontend

* Mural Pay multiple methods when fetching

* Don't send supported_countries to frontend

* feat: fees & methods endpoint hookup

* chore: remove duplicates fix

* polish: qa changes + figma match

* Add countries to muralpay fiat methods

* Compile fix

* Add exchange rate info to fees endpoint

* Add fees to premium Tremendous options

* polish: i18n and better document type dropdown -> id input labels

* feat: tremendous

* fix: lint & i18n

* feat: reintroduce tin mismatch logic to index.vue

* polish: qa

* fix: i18n

* feat: remove teleport dropdown menu - combobox should be used

* fix: lint

* fix: jsdoc

* feat: checkbox for reward program terms

* Add delivery email field to Tremendous payouts

* Add Tremendous product category to payout methods

* Add bank details API to muralpay

* Fix CI

* Fix CI

* polish: qa changes

* feat: i18n pass

* feat: deduplicate methods endpoint & fix i18n issues

* chore: deduplicate i18n strings into common-messages.ts

* fix: lint

* fix: i18n

* feat: estimates

* polish: more QA

* Remove prepaid visa, compute fees properly for Tremendous methods

* Add more details to Tremendous errors

* feat: withdraw endpoint impl & internals refactor

* Add more details to Tremendous errors

* feat: completion stage

* Add fees to Mural

* feat: transactions page match figma

* fix: i18n

* polish: QA changes

* polish: qa

* Payout history route and bank details

* polish: autofill and requirements checks

* fix: i18n + lint

* fix: fiat rail fees

* polish: move scroll fade stuff into NewModal rather than just CreatorWithdrawModal

* feat: simplify action btn logic & tax form error

* fix: tax -> Tax form

* Re-add legacy PayPal/Venmo options for US

* feat: mobile responsiveness fixes for modal

* fix: responsiveness issues

* feat: navstack responsiveness

* fix: responsiveness

* move the mural bank details route

* fix: generated state cleanup & bank details input

* fix: lint & i18n

* Add utoipa support to payout endpoints

* address some PR comments

* polish: qa

* add CORS to new utoipa routes

* feat: legacy paypal/venmo stage

* polish: reset amount on back qa

* revert: navstack mr changes

* polish: loading indicator on method selection stage

* fix: paypal modal doesnt reopen after auth

* fix: lint & i18n

* fix: paypal flow

* polish: qa changes

* fix: gitignore

* polish: qa fixes

* fix: payouts_available in payouts.rs

* fix: bug when limit is zero

* polish: qa changes

* fix: qa stuff & muralpay sub-division fix

* Immediately approve mural payouts

* Add currency support to Tremendous payouts

* Currency forex

* add forex to tremendous fee request

* polish: qa & currency support for paypal tremendous

* polish: fx qa

* feat: demo mode flag

* fix: i18n & padding issues

* polish: qa changes

* fix: ml

* Add Mural balance to bank balance info

* polish: show warning for paypal international USD withdrawals + more currencies

* Add more Tremendous currencies support

* fix: colors on balance bars

* fix: empty states

* fix: pl-8 mobile issue

* fix: hide see all

* Transaction payouts available use the correct date

* Address my own review comment

* Address PR comments

* Change Mural withdrawal limit to 3k

* fix: empty state + paypal warning

* maybe fix tremendous gift cards

* Change how Mural minimum withdrawals are calculated

* Tweak min/max withdrawal values

* fix: segment brightness

* fix: min & max for muralpay & legacy paypal

* Fix some icon issues

* more issues

* fix user menu

* fix: remove + network

---------

Signed-off-by: Calum H. <contact@cal.engineer>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: aecsocket <aecsocket@tutanota.com>
Co-authored-by: Alejandro González <me@alegon.dev>
2025-11-03 15:15:25 -08:00
François-Xavier Talbot
92698e4bb5 Update tax change notification timings (#4706) 2025-11-03 22:15:16 +00:00
aecsocket
17f395ee55 Mural Pay integration (#4520)
* wip: muralpay integration

* Basic Mural Pay API bindings

* Fix clippy

* use dotenvy in muralpay example

* Refactor payout creation code

* wip: muralpay payout requests

* Mural Pay payouts work

* Fix clippy

* add mural pay fees API

* Work on payout fee API

* Fees API for more payment methods

* Fix CI

* Temporarily disable Venmo and PayPal methods from frontend

* wip: counterparties

* Start on counterparties and payment methods API

* Mural Pay multiple methods when fetching

* Don't send supported_countries to frontend

* Add countries to muralpay fiat methods

* Compile fix

* Add exchange rate info to fees endpoint

* Add fees to premium Tremendous options

* Add delivery email field to Tremendous payouts

* Add Tremendous product category to payout methods

* Add bank details API to muralpay

* Fix CI

* Fix CI

* Remove prepaid visa, compute fees properly for Tremendous methods

* Add more details to Tremendous errors

* Add fees to Mural

* Payout history route and bank details

* Re-add legacy PayPal/Venmo options for US

* move the mural bank details route

* Add utoipa support to payout endpoints

* address some PR comments

* add CORS to new utoipa routes

* Immediately approve mural payouts

* Add currency support to Tremendous payouts

* Currency forex

* add forex to tremendous fee request

* Add Mural balance to bank balance info

* Add more Tremendous currencies support

* Transaction payouts available use the correct date

* Address my own review comment

* Address PR comments

* Change Mural withdrawal limit to 3k

* maybe fix tremendous gift cards

* Change how Mural minimum withdrawals are calculated

* Tweak min/max withdrawal values

---------

Co-authored-by: Calum H. <contact@cal.engineer>
Co-authored-by: Alejandro González <me@alegon.dev>
2025-11-03 14:19:46 -08:00
Prospector
b11934054d Reapply "fix: firefox backup download issues (#4679)" (#4683) (#4704)
This reverts commit 4c1020d2ba.
2025-11-02 19:51:48 +00:00
Prospector
40cbe92dbc Affiliates frontend (#4380)
* Begin affiliates frontend

* Significant work on hooking up affiliates ui

* Clean up server nodes menu

* affiliates work

* update affiliate time

* oops

* fix local import

* fix local import x2

* remove line in dashboard

* lint
2025-11-02 19:32:18 +00:00
9139c23469 Remove unnecessary workflows 2025-11-02 10:08:03 +03:00
932f4ce662 Update README markdown language files
Some checks failed
/ typos (pull_request) Failing after 24s
/ tombi (pull_request) Successful in 21s
/ shear (pull_request) Has been cancelled
2025-11-02 10:05:22 +03:00
1fbd39c920 Update README markdown language files 2025-11-02 10:03:17 +03:00
27abe2b42f Upgrade JDK version
Some checks failed
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Successful in 40m21s
/ typos (pull_request) Failing after 1m5s
/ tombi (pull_request) Successful in 21s
/ shear (pull_request) Failing after 2m28s
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
2025-11-01 15:01:58 +03:00
ece15a97a0 Update tauri configurations and CI build file
Some checks failed
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Has been cancelled
2025-11-01 14:31:26 +03:00
97a9c24768 Merge tag 'v0.10.16' into beta 2025-11-01 14:14:52 +03:00
aecsocket
b7f0988399 Decouple project deletion from thread deletion (#4673)
* Decouple project deletion from thread deletion

* Allow a thread to exist without a project

* attempt 2

* Modify migration to set orphaned threads' mods to NULL instead of removing constraint entirely

* Use mod PAT for mod threads
2025-10-31 19:04:01 +00:00
Prospector
4c1020d2ba Revert "fix: firefox backup download issues (#4679)" (#4683)
This reverts commit c74460fffa.
2025-10-31 02:36:52 -07:00
thedarkcolour
00f9cf0e2c Fix inconsistent PAT display order (#4662)
* Fix inconsistent PAT display order
Closes #4661

* Fix side effect in computed property

* Fix lint

---------

Co-authored-by: Calum H. <contact@cal.engineer>
2025-10-30 23:28:18 +00:00
Prospector
1dd7e3bcdc add changelog 2025-10-30 16:05:31 -07:00
Prospector
3ac3122b31 Hide locked filter controls if they've been overridden (#4682) 2025-10-30 15:57:21 -07:00
Rayzeq
6b5f8a41e7 feat: split wrapper command on linux (#4427)
* feat: split wrapper command on linux

* feat: use code from #3900

* feat: also use shlex on Windows

* feat: add a version number to global settings

* feat(app): add settings v2, where wrapper command are split
2025-10-30 21:48:51 +00:00
Calum H.
8b39ba491a fix: keybind issues with gallery + moderation checklist (#4674) 2025-10-30 21:20:16 +00:00
Calum H.
c74460fffa fix: firefox backup download issues (#4679)
* fix: firefox backup download issues

* fix: lint

* fix: hide download button when downloading & disable overflow menu options
2025-10-30 21:20:08 +00:00
Alejandro González
5000c4067b fix(app-lib): stricter override file path validation (#4681) 2025-10-30 21:19:23 +00:00
Calum H.
af33950bbe fix: race condition for chart query param (#4677) 2025-10-30 19:19:44 +00:00
Calum H.
075331b26c fix: remove reply-to references in email templates (#4676) 2025-10-30 19:19:20 +00:00
Calum H.
f31b74f7fd fix: show hostname on modrinth servers 503 (#4678)
* fix: show hostname on modrinth servers 503

* fix: lint
2025-10-30 19:18:24 +00:00
aecsocket
bcc36362be Expose utilities for setting up the database (#4657)
* Expose utilities for setting up the database

* Expose migrator directly

* Make some test utils publicly accessible

* expose migrator

* more test fixture utils

* more test fixture utils

* more test fixture utils

* fix

* fix lint
2025-10-30 10:10:25 +00:00
Jerozgen
632b27dc21 Fix "Add friends" link (#4663) 2025-10-29 22:02:28 +00:00
Prospector
cf6f3736eb Update ads.txt (#4670) 2025-10-29 21:59:16 +00:00
Prospector
aaaef8f39e Fix double friends label, Closes #4655 (#4656)
* Fix double friends label, Closes #4655

* lint
2025-10-29 21:59:07 +00:00
Prospector
3f8dd1a79c changelog 2025-10-27 16:21:36 -07:00
Calum H.
363f47f269 feat: blog (#4653)
* feat: blog

* feat: creator withdraw overhaul blog

* fix: bullet points

* fix: title

* fix: blog

* feat: autoplay on scroll & fix encoding of videos

* fix: class on first video

* fix: authors + summary + title

* fix: title + summary

* fix: lint

* fix: rev page mp4

* update formatting + phrasing

* some more formatting changes

* unify hr colors

* update opening line

* update blog time

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-10-27 16:19:35 -07:00
Jerozgen
a0f23a2bca Fix normalized skins uploading to Mojang (#4646)
* Fix normalized skins uploading to Mojang

* Run app-frontend > fix
2025-10-26 13:53:56 +00:00
Jerozgen
08e316a2b2 Move skin preview directional light (#4649) 2025-10-26 12:56:46 +00:00
Prospector
9aaf5fb87e update changelog 2025-10-24 20:55:58 -07:00
Prospector
bcca66b12c Fix OLED colors (#4638)
* Make OLED theme proper dark again, shifting surface vars up one.

* Revert tertiary text color
2025-10-24 22:45:04 +00:00
Alejandro González
ccb24ce8eb chore(vscode): use Rust analyzer rustfmt for formatting (#4637) 2025-10-24 21:37:02 +00:00
Prospector
5dd6c804d0 fix padding issues (#4604) 2025-10-24 18:58:20 +00:00
aecsocket
ab886a5ea8 Fix CORS (#4610) 2025-10-24 18:27:44 +00:00
aecsocket
03b0eba695 Add utoipa Swagger UI support (#4602)
* Add utoipa Swagger UI support

* remove unused code

* remove unused code

* consistency with trailing slash
2025-10-24 14:44:50 +00:00
aecsocket
707ff2146b Update appropriate rows when removing a user (#4597)
* Update appropriate rows when removing a user

* Update sqlx cache

* Delete rows from payouts_values_notifications instead of make ghost user
2025-10-24 14:19:53 +00:00
Prospector
8d80433c2c Update 3-servers-bug.yml (#4607)
Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-10-22 18:15:41 -07:00
Prospector
a547f7a9b0 Update issue templates (#4606)
* Update 1-app-bug.yml

Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>

* update the rest of the templates

* Update issue template formatting further

* Disable blank issue + get rid of some contact links

* fix issue location id

* more updates

---------

Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-10-22 18:13:49 -07:00
Calum H.
f78fbe3215 fix: disable start button on backup restore/create (#4582)
* fix: CLAUDE.md

* fix: allowing start server on backup create/restore

---------

Signed-off-by: Calum H. <contact@cal.engineer>
2025-10-22 16:25:55 +00:00
François-Xavier Talbot
f375913c62 Adjust some values in tax-related tasks (#4598)
* Adjust some values for tax processing

* chore: query cache, clippy, fmt
2025-10-21 15:55:54 +00:00
François-Xavier Talbot
a4015d9df3 Fix v1 servers handling (#4596) 2025-10-21 06:40:10 +00:00
François-Xavier Talbot
977de0e18a Fix MaxMind (#4595)
* add maxmind to app data

* add back maxmind account id check
2025-10-21 00:24:47 +02:00
François-Xavier Talbot
c379e4b173 admin/credit: don't credit unprovisioned subscriptions (#4594)
* Remove pointless sorting

* Filter subscriptions by labrinth's provisioned state
2025-10-20 20:31:20 +00:00
François-Xavier Talbot
eeed4e572d Credit subscriptions (#4575)
* Implement subscription crediting

* chore: query cache, clippy, fmt

* Improve code, improve query for next open charge

* chore: query cache, clippy, fmt

* Move server ID copy button up

* Node + region crediting

* Make it less ugly

* chore: query cache, clippy, fmt

* Bugfixes

* Fix lint

* Adjust migration

* Adjust migration

* Remove billing change

* Move DEFAULT_CREDIT_EMAIL_MESSAGE to utils.ts

* Lint

* Merge

* bump clickhouse, disable validation

* tombi fmt

* Update cargo lock
2025-10-20 17:35:44 +00:00
François-Xavier Talbot
79502a19d6 bump clickhouse, disable validation (#4593)
* bump clickhouse, disable validation

* tombi fmt
2025-10-20 17:30:28 +00:00
François-Xavier Talbot
3dbfd69bdd Fix clickhouse (#4592) 2025-10-20 19:07:23 +02:00
Michael H.
19393a38bb fix(build): build on cargo.toml modifications 2025-10-20 18:59:02 +02:00
François-Xavier Talbot
859d7f57cf Downgrade CH dep (#4591) 2025-10-20 18:50:16 +02:00
aecsocket
24bec6baba Fix MaxMind (#4590) 2025-10-20 15:58:31 +00:00
Jerozgen
63d8f70e20 Fix friends texts (#4587) 2025-10-20 14:56:44 +00:00
François-Xavier Talbot
8a30b7978d Support ctoken_ in PATCH subscription (#4578) 2025-10-20 10:03:20 +00:00
Drew Chase
4a9f0b8a0e Include MAXIMIZED state flag in window state handling (#4566) 2025-10-20 01:00:11 +00:00
Calum H.
0e17427a58 fix: #4568 & i18n on user page (#4572)
* fix: #4568

* fix: lint
2025-10-20 00:23:06 +00:00
Prospector
ad3b5aec69 update changelog 2025-10-19 17:32:22 -07:00
François-Xavier Talbot
4b17eb5d35 Gotenberg/PDF gen implementation (#4574)
* Gotenberg/PDF gen implementation

* Security, PDF type enum, propagate client

* chore: query cache, clippy, fmt

* clippy fixes + tombi

* Update env example, add GOTENBERG_CALLBACK_URL

* Remove test code

* Fix .env, docker-compose

* Update purpose of payment

* Add internal networking guards to gotenberg webhooks

* Fix error

* Fix lint
2025-10-19 23:56:26 +00:00
Prospector
6a70acef25 Updated ad placeholder graphics, update Modrinth App sidebar to mockup designs (#4584)
* Update ad placeholders to new green graphic

* Remove rounded corners from app ad frame

* Improve web ad placeholder styling

* Revamp app sidebar to match mockups more closely, greatly improve friends UX, fix up context menus and typify shit

* only show overflow on hover

* lint

* intl:extract

* clean up the inline code in FriendsSection
2025-10-19 23:26:17 +00:00
Prospector
e58456eed4 Fix using the wrong icon for open folder on instance ctx menu (#4586) 2025-10-19 23:18:27 +00:00
Calum H.
12940fc207 fix: default subscription interval in servers upgrade modal wrapper (#4585) 2025-10-19 23:16:13 +00:00
François-Xavier Talbot
7796273529 Clearer error on TIN mismatch (#4579)
* Clearer error on TIN mismatch

* Remove ctoken code (how did that end up there)

* polish: frontend for TIN/SSN mismatch

* fix: lint

* polish: only banner + change text

* fix: logic

* fix: lint

---------

Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
2025-10-19 21:03:21 +00:00
7cc9d8183d fix: update.js top level awaiting
Some checks failed
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Successful in 36m27s
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
Crowdin (pull) / Pull translations from Crowdin (push) Has been skipped
2025-10-19 21:48:45 +03:00
231e95792e update README
Some checks failed
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Has been cancelled
2025-10-19 21:31:10 +03:00
905eae8403 cleanup patches 2025-10-19 21:08:52 +03:00
868fda1703 fix typo: remove shit ads after upstream 2025-10-19 21:08:02 +03:00
4b86c4ee8a refactor: minor changes in update.js 2025-10-19 21:06:03 +03:00
Michael H.
752f68124c fix: sync debian version with rust image 2025-10-19 18:11:41 +02:00
Calum H.
699a049c69 fix: medal upgrade for new payment methods (#4581) 2025-10-19 12:31:15 +00:00
8e720ccef5 update README 2025-10-19 07:19:05 +03:00
03b49284e1 ci: add more branches and tags
Some checks failed
AstralRinth App build / Build (x86_64-unknown-linux-gnu, ubuntu-latest) (push) Successful in 37m51s
AstralRinth App build / Build (x86_64-pc-windows-msvc, windows-latest) (push) Has been cancelled
2025-10-19 07:07:47 +03:00
ac6c26a5f9 Merge commit '75e3994c6e57c2d3353084188b21f706d844ffb3' into beta 2025-10-19 07:01:09 +03:00
cc963cfc40 Merge commit '7fa442fb28a2b9156690ff147206275163e7aec8' into beta 2025-10-19 06:50:50 +03:00
aecsocket
fa7d1d7942 Use new MaxMind env vars on Labrinth (#4573)
* Bring in modrinth-maxmind

* integrate modrinth-maxmind into labrinth

* Fix CI
2025-10-18 18:38:19 +00:00
Calum H.
d1ffed564d fix: #4567 (#4571) 2025-10-17 17:56:25 +00:00
Alejandro González
e719ae2f42 fix(daedalus-client): backport new Mojang MC version library patches from PrismLauncher (#4493)
While researching and fixing other issue, it caught my attention that we
are embedding a library patches JSON file from the PrismLauncher meta
repository. However, since we copied that file, a new revision of it was
published with patches that improve compatibility with Apple Silicon
macOS platforms.

These changes update such a file and, perhaps most importantly, add a
comment explaining the provenance and licensing of such a file.
2025-10-17 16:43:04 +00:00
François-Xavier Talbot
5db5bf4c4c Changes to handling of refunds in Anrok (#4556)
* Use negations, track transaction version/accounting time, use original charge accounting time in refunds

* query cache

* chore: query cache, clippy, fmt

* Fix tax drift calculation

* Fix migration

* Increase update_tax_transactions rate
2025-10-17 15:57:36 +00:00
Josiah Glosson
b23d3e674f Update Rust & Java dependencies (#4540)
* Update Java dependencies

* Baselint lint fixes

* Update Rust version

* Update actix-files 0.6.6 -> 0.6.8

* Update actix-http 3.11.0 -> 3.11.2

* Update actix-rt 2.10.0 -> 2.11.0

* Update async_zip 0.0.17 -> 0.0.18

* Update async-compression 0.4.27 -> 0.4.32

* Update async-trait 0.1.88 -> 0.1.89

* Update async-tungstenite 0.30.0 -> 0.31.0

* Update const_format 0.2.34 -> 0.2.35

* Update bitflags 2.9.1 -> 2.9.4

* Update bytemuck 1.23.1 -> 1.24.0

* Update typed-path 0.11.0 -> 0.12.0

* Update chrono 0.4.41 -> 0.4.42

* Update cidre 0.11.2 -> 0.11.3

* Update clap 4.5.43 -> 4.5.48

* Update data-url 0.3.1 -> 0.3.2

* Update discord-rich-presence 0.2.5 -> 1.0.0

* Update enumset 1.1.7 -> 1.1.10

* Update flate2 1.1.2 -> 1.1.4

* Update hyper 1.6.0 -> 1.7.0

* Update hyper-util 0.1.16 -> 0.1.17

* Update iana-time-zone 0.1.63 -> 0.1.64

* Update image 0.25.6 -> 0.25.8

* Update indexmap 2.10.0 -> 2.11.4

* Update json-patch 4.0.0 -> 4.1.0

* Update meilisearch-sdk 0.29.1 -> 0.30.0

* Update clickhouse 0.13.3 -> 0.14.0

* Fix some prettier things

* Update lettre 0.11.18 -> 0.11.19

* Update phf 0.12.1 -> 0.13.1

* Update png 0.17.16 -> 0.18.0

* Update quick-xml 0.38.1 -> 0.38.3

* Update redis 0.32.4 -> 0.32.7

* Update regex 1.11.1 -> 1.11.3

* Update reqwest 0.12.22 -> 0.12.23

* Update rust_decimal 1.37.2 -> 1.38.0

* Update rust-s3 0.35.1 -> 0.37.0

* Update serde 1.0.219 -> 1.0.228

* Update serde_bytes 0.11.17 -> 0.11.19

* Update serde_json 1.0.142 -> 1.0.145

* Update serde_with 3.14.0 -> 3.15.0

* Update sentry 0.42.0 -> 0.45.0 and sentry-actix 0.42.0 -> 0.45.0

* Update spdx 0.10.9 -> 0.12.0

* Update sysinfo 0.36.1 -> 0.37.2

* Update tauri 2.7.0 -> 2.8.5

* Update tauri-build 2.3.1 -> 2.4.1

* Update tauri-plugin-deep-link 2.4.1 -> 2.4.3

* Update tauri-plugin-dialog 2.3.2 -> 2.4.0

* Update tauri-plugin-http 2.5.1 -> 2.5.2

* Update tauri-plugin-opener 2.4.0 -> 2.5.0

* Update tauri-plugin-os 2.3.0 -> 2.3.1

* Update tauri-plugin-single-instance 2.3.2 -> 2.3.4

* Update tempfile 3.20.0 -> 3.23.0

* Update thiserror 2.0.12 -> 2.0.17

* Update tracing-subscriber 0.3.19 -> 0.3.20

* Update url 2.5.4 -> 2.5.7

* Update uuid 1.17.0 -> 1.18.1

* Update webp 0.3.0 -> 0.3.1

* Update whoami 1.6.0 -> 1.6.1

* Note that windows and windows-core can't be updated yet

* Update zbus 5.9.0 -> 5.11.0

* Update zip 4.3.0 -> 6.0.0

* Fix build

* Enforce rustls crypto provider

* Refresh Cargo.lock

* Update transitive dependencies

* Bump Gradle usage to Java 17

* Use ubuntu-latest consistently across workflows

* Fix lint

* Fix lint in Rust

* Update native-dialog 0.9.0 -> 0.9.2

* Update regex 1.11.3 -> 1.12.2

* Update reqwest 0.12.23 -> 0.12.24

* Update rust_decimal 1.38.0 -> 1.39.0

* Remaining lock-only updates

* chore: move TLS impl of some other dependencies to aws-lc-rs

The AWS bloatware "virus" expands by sheer force of widespread adoption
by the ecosystem... 🫣

* chore(fmt): run Tombi

---------

Co-authored-by: Alejandro González <me@alegon.dev>
2025-10-15 20:45:47 +00:00
Prospector
75e3994c6e update changelog 2025-10-15 11:58:01 -07:00
Alejandro González
71e28e1ea5 fix(app-lib): cache most Modrinth data for the intended time (#4558) 2025-10-15 18:40:47 +00:00
Alejandro González
6dbd1e5236 fix(labrinth): make orgs with a single user and only approved projects visible to non-logged-in people (#4557)
I made a typo on PR https://github.com/modrinth/code/pull/4426 by making
the corresponding SQL query filter by projects with an unexisting
`public` status, instead of `approved`. During my testing, I used the
`archived` status, so I didn't notice it back then.
2025-10-15 18:16:44 +00:00
Prospector
77afdb1cc4 add UI for changing user role (#4554) 2025-10-15 18:10:36 +00:00
Alejandro González
7fa442fb28 Reapply "refactor(app): reduce tech debt by eliminating wry fork" (#4555)
* Reapply "refactor(app): reduce tech debt by eliminating `wry` fork (#4500)"

This reverts commit 2535156dac.

* test: temporarily replace ad link by something with sound

* Revert "test: temporarily replace ad link by something with sound"

This reverts commit 74bb7eecb7cc7b17ccfd6b2e20c24eeec38ac363.

* Reapply "test: temporarily replace ad link by something with sound"

This reverts commit f1b0e9f2c4a30f789099048e98ffa91ff376f571.

* test: also disable ads init muting script for good measure

* Revert "test: also disable ads init muting script for good measure"

This reverts commit 4ac7a81e1780f13c976d033c420bfe1d5db9c298.

* Revert "Reapply "test: temporarily replace ad link by something with sound""

This reverts commit c5f1b9f242f5c7f56b40f21b586e8b484c7eb3c5.
2025-10-15 10:24:32 +00:00
Prospector
2535156dac Revert "refactor(app): reduce tech debt by eliminating wry fork (#4500)"
This reverts commit dbc64afe
2025-10-14 19:55:54 -07:00
Prospector
8972c9a198 update changelog 2025-10-14 18:41:47 -07:00
Prospector
03ed64c99f Remove "prepare backup" step (#4551)
* Remove "prepare backup" step

* fix post-approval.ts
2025-10-14 22:35:50 +00:00
aecsocket
4cd8ccd319 Taplo and typos in CI, TOML cleanup (#4510)
* Taplo and typos in CI

* Clean up Cargo.toml files

* Fix CI

* Fix CI

* Run typos in CI

* Loosen typos a bit

* Fix typos

* Fix taplo

* Switch to Tombi

* Fix Tombi errors

* Remove unused typos config

* Tombi fmt

* Remove extraneous cargo fmt

* fix typos
2025-10-12 20:18:38 +00:00
chaos
ea594ec27c chore: update openapi docs to include neoforge for forgeUpdates (#4545)
* chore: update openapi docs to include neoforge for forgeUpdates

* chore: add NeoForge parameter to forge_updates
2025-10-12 13:38:44 +00:00
François-Xavier Talbot
2a61916d1e Mark charges from stripe customers with no address as unresolvable (#4521) 2025-10-11 18:24:21 +00:00
aecsocket
e66b131a5d See available funds history and withdrawls in user payout history (#4537)
* Add GET /v3/payouts/history

* V3 backwards compat

* Sqlx prepare

* Include user ID in GET /v3/payout
2025-10-11 10:51:38 +00:00
François-Xavier Talbot
0c66fa3f12 Custom Emails (#4526)
* Dynamic email template

* Set lower cache expiry for templates

* Custom email route

* Fix subject line on custom emails

* chore: query cache, clippy, fmt

* Bugfixes

* Key-based caching on custom emails

* Sequentially process emails prone to causing cache stampede

* Fill variables in dynamic body + subject line

* Update apps/labrinth/src/queue/email/templates.rs

Co-authored-by: aecsocket <aecsocket@tutanota.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

* Update apps/labrinth/src/queue/email/templates.rs

Co-authored-by: aecsocket <aecsocket@tutanota.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

---------

Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>
Co-authored-by: aecsocket <aecsocket@tutanota.com>
2025-10-10 16:30:38 +00:00
aecsocket
aec49cff7c Include both analytics v1 and v2 in tree (#4527)
* Include both analytics v1 and v2 in tree

* fix sqlx cache

* fix tests
2025-10-10 14:58:19 +00:00
François-Xavier Talbot
c88bdda3e6 More flexible datetime parsing (#4533) 2025-10-09 20:01:07 +00:00
Prospector
1a72d55e2d changelog 2025-10-08 13:41:24 -07:00
Prospector
55eae7ec7e update ads.txt (#4525) 2025-10-08 19:33:34 +00:00
Jerozgen
351b3da337 Fix download tax form description (#4522) 2025-10-08 19:12:04 +00:00
Calum H.
9ee0626e8b feat: dynamic email template using markdown (#4515)
* feat: markdown dynamic email template

* fix: lint and remove debug statements

* fix: lint issues
2025-10-08 19:05:23 +00:00
Prospector
e9735bd9ba Revert "Analytics backend V2 (#4408)" (#4524)
This reverts commit 6919c8dea9.
2025-10-08 19:01:32 +00:00
Alejandro González
15a7815ec3 perf(Dockerfile): improve Docker cache mounts usage (#4507)
As described in
https://hackmd.io/jgkoQ24YRW6i0xWd73S64A#Using-Docker-cache-mounts,
cache mounts need to be used with a fairly specific syntax for caching
of previously build Rust artifacts to be as effective as it can be.
2025-10-08 16:03:15 +00:00
aecsocket
6919c8dea9 Analytics backend V2 (#4408)
* start with analytics v2

* the big ass SQL query™

* downloads and views analytics working

* Implement analytics bucketing API

* allow filtering by monetization

* Use a new format for project metrics and bucketing

* revenue API works

* Add country data to analytics API

* Add checks for number of slices and time slice resolution

* work on docs

* wip: fix tests and add docs

* Fix tests

* Fix tests

* Uncomment crates

* feat: frontend CLAUDE.md (#4433)

* Slight tweaks to time slicing logic

* More tweaks

* Fix error messages

* Fix sqlx cache

---------

Co-authored-by: Calum H. <contact@cal.engineer>
2025-10-07 22:01:10 +00:00
Calum H.
f32558cf97 feat: tax form download stage (#4513)
* feat: start on fix

* fix: withdraw btn

* fix: lint issues

* feat: start on download stage for tax form modal

* fix: use button rather than span

* fix: lint

* fix: lint issues

* feat: tax form notification email for users who didnt get chance to download

* feat: finish download stage for tax modal

* fix: lint & i18n

* fix: lint + svg cleanup

---------

Signed-off-by: Calum H. <contact@cal.engineer>
Co-authored-by: --global <--global>
2025-10-07 21:51:43 +00:00
Calum H.
ad705fa66f feat: introduce surface variables, text variables & shades (#4413)
* feat: surface variables & gradients

* feat: text vars

* fix: lint

* chore: remove L from surface vars

* fix: fully remove L from surface vars

---------

Co-authored-by: --global <--global>
2025-10-07 16:35:45 +00:00
Prospector
87f8773401 update changelog 2025-10-07 09:47:37 -07:00
Calum H.
3c578108de fix: allow payouts that go over the tax limit by prefilling form (#4478)
* feat: start on fix

* fix: withdraw btn

* fix: lint issues

* fix: use button rather than span

* fix: lint issues

---------

Co-authored-by: --global <--global>
2025-10-07 16:33:50 +00:00
Calum H.
cb5600ad45 feat: doc templating & cleanup of routes (#4411)
* feat: clean up route structure

* feat: install html-pdf-node-ts

* fea

* feat: use @ceereals/vue-pdf (react-pdf)

* feat: remove pdf

* feat: hide cc

* feat: shared template

* feat: payment statement document & redirect for emails

* feat: layout tweaks

* fix: lint issues

* fix: robots.txt

* feat: remove letterhead

* Delete .claude/settings.local.json

Signed-off-by: Calum H. <contact@cal.engineer>

---------

Signed-off-by: Calum H. <contact@cal.engineer>
2025-10-07 10:47:59 +00:00
Modrinth Bot
59e48ea2b1 New translations from Crowdin (main) (#4436) 2025-10-07 09:12:11 +00:00
Josiah Glosson
7658e1c653 Restart the app after updates if the updater didn't do it for us (#4511) 2025-10-06 22:20:09 +00:00
François-Xavier Talbot
9589e23118 Link customer ID to Anrok transaction (#4509)
* Mark transactions with unresolvable addresses as unresolved

* Add customer_name + customer_id to anrok transactions

* Increase rate of Anrok syn

* Remove timer from update_tax_transactions

* chore: query cache, clippy, fmt
2025-10-06 16:06:57 +00:00
Alejandro González
dbc64afe48 refactor(app): reduce tech debt by eliminating wry fork (#4500) 2025-10-05 22:22:36 +00:00
Prospector
7e682c22bb add 0.10.10 changelog 2025-10-04 17:14:01 -07:00
Alejandro González
fd80f1217d fix(app): make MC <1.12.2 downloadable again (#4494)
PR #4270 modified the internal `fetch` function used by the application
to download version artifacts in a way that 4xx HTTP errors also caused
an abnormal return, instead of just 5xx errors. That was a good change,
but it had the unintended side effect of exposing our faulty logic
elsewhere of trying to download non-native JAR library artifacts when
only native artifacts are appropriate, at least according to the
PrismLauncher source code I've read. Such a download always returned a
404 error, but because such error was considered successful, a dummy
library file was still created and things worked seemingly fine.

These changes bring the Modrinth App behavior in this regard more in
line with PrismLauncher's, avoiding downloading non-native artifacts for
dependencies that have native artifacts available. (Reference:
8b5e91920d/launcher/minecraft/Library.cpp (L163))

I've tested these changes to work successfully with a variety of old
vanilla and modded Minecraft versions.

Fixes #4464.
2025-10-04 21:27:41 +00:00
Alejandro González
d98394d8d5 chore: revert back to stable Rust toolchain (#4492)
PR #3960 reverted the Cranelift usage introduced in #4388 due to its
codegen not being up to standard when compiling some pieces of code
under some platforms. However, it didn't revert the switch to a nightly
Rust toolchain, which is now unnecessary, and produces unnecessary drift
between what's declared in the `rust-toolchain.toml` and the Docker
image manifests, causing inefficiencies.

These changes bring back the usage of stable Rust for the time being to
correct those inefficiencies.
2025-10-04 20:42:57 +00:00
aecsocket
e303655727 Fix using a private serde_with re-export (#4489) 2025-10-04 18:10:42 +00:00
Prospector
95de8977d4 add 0.10.9 changelog 2025-10-04 10:59:40 -07:00
Prospector
92e91a0606 Remove successful update notif, is unnecessary and a bit broken (#4487) 2025-10-04 17:22:32 +00:00
Alejandro González
98269842f3 tweak(path-util): addendum to #4482 (#4486)
* tweak(path-util): addendum to #4482

These changes improve on those introduced in #4482 in two ways:

- The serialization logic for `SafeRelativeUtf8UnixPathBuf` now more
  closely mirrors the deserialization checks, reducing the chance that a
  generated path will fail to deserialize. While unlikely in practice,
  catching such theoretical cases earlier improves the experience for
  users and developers.
- After deeper testing on a clean Windows 10 VM, I found that reserved
  device names can have both an extension and an alternate data stream
  appended, not just one or the other. These changes handle that case
  more gracefully.

* chore: fix typos, add tests

* fix(path-util): extend `SafeRelativeUtf8UnixPathBuf` contract to allow `.` components

While quite useless, they were accepted by previous app versions, the
`.mrpack` specification does not forbid them, and they do not pose
security issues, so accept them for backwards compatibility.
2025-10-04 16:10:01 +00:00
Alejandro González
ab6e9dd5d7 fix(app-lib, labrinth): stricter mrpack file path validation (#4482)
* fix(app-lib, labrinth): stricter mrpack file path validation

* chore: run `cargo fmt`

* tweak: reject reserved Windows device names in mrpacks too
2025-10-04 10:35:30 +00:00
François-Xavier Talbot
a13647b9e2 Negate refund amount (#4481) 2025-10-03 23:29:22 +00:00
aecsocket
2af7ecc077 Fix affiliate PUT API (#4456)
* Fix affiliate PUT API

* PR fixes

* wip: merge affiliate code endpoints
2025-10-03 14:24:15 +00:00
François-Xavier Talbot
bea0ba017c Fix interactive payments in non-USD currencies (#4476)
* Use price's currency rather than inferred stripe currency in PaymentIntent

* Correctly convert to stripe::Currency

* Include original currency code in error message
2025-10-03 13:26:06 +00:00
Emma Alexia
f874856452 Fix user deletion with new notifications_deliveries table for real (#4473)
Maybe this will work? I dunno but users are still saying they're getting errors deleting accs. In theory it shouldn't matter if the transaction all gets committed at the same time, though, right? I can't really test this so I would like someone to tell me whether this will actually make a difference.

Co-authored-by: François-X. T <fetch@ferrous.ch>
2025-10-03 13:03:02 +00:00
aecsocket
b96c5cd5ab Improve error logging and observability (#4443)
* Replace actix tracing with custom error tracing

* Fix logging

* wip: JSON logging

* Use LABRINTH_FORMAT to change to JSON output

* sqlx fix?

* CI fix

* Add tracing span info to HTTP requests

* Merge Result and Option error wrapping

* Add http.authorized to tracing
2025-10-03 13:02:20 +00:00
François-Xavier Talbot
7e84659249 Cleanup + fixes to index_billing/index_subscriptions (#4457)
* Parse refunds

* Cleanup index subscriptions/index billing

* chore: query cache, clippy, fmt
2025-10-03 13:01:52 +00:00
François-Xavier Talbot
24504cb94d Fix CI (#4477) 2025-10-03 12:35:43 +00:00
Prospector
6fe4235358 update changelog 2025-10-01 19:01:55 -07:00
Prospector
04f0f53104 Add russian banner, blog post translation, and unlist old blog post. Adjust banner colors in dark mode (#4468)
* Add russian banner, blog post translation, and unlist old blog post. Adjust banner colors in dark mode

* russia
2025-10-01 19:00:01 -07:00
Michael H.
c169b48228 Update SBOV post 2025-10-02 02:01:26 +02:00
Michael H.
beff2fcaa9 Standing By Our Values 2025-10-02 01:44:26 +02:00
François-Xavier Talbot
9315af9b20 Only skip attaching payment method when using ctoken (#4460) 2025-09-30 18:41:17 -07:00
Prospector
4d11dc821b prospector/russia-blogpost (#4459)
* Add blog post

* Add 451 handling

* lint
2025-09-30 17:40:34 -07:00
Kevin Zheng
8fd40f46c5 Update MOTD Parser package (#4455)
* chore(package): replace motd parser package with maintained version 

Signed-off-by: Kevin Zheng <dev@sfirew.com>

* changelog

* fix import

---------

Signed-off-by: Kevin Zheng <dev@sfirew.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-09-30 19:22:55 +00:00
Jerozgen
28e9f017e3 App update fixes (#4450) 2025-09-30 18:40:28 +00:00
François-Xavier Talbot
beb1bdb31f Skip synchronizing transactions to Anrok if missing payment intent ID (#4446)
* Skip succeeded txns with no payment platform ID

* chore: query cache, clippy, fmt
2025-09-30 14:36:41 +00:00
Alejandro González
895b040ad7 fix(labrinth): hide hidden orgs from user profiles (#4452)
This is a follow-up to PR #4426. I initially didn't consider the
organizations an user belongs to as worth hiding, but given that user
profiles can be public, I suppose there technically is a way to exploit
them for SEO abuse. Overall, it also seems more consistent to hide them
here too.
2025-09-30 14:30:44 +00:00
François-Xavier Talbot
54747aa628 Tweaks and fixes to background tasks (#4447)
* adjustments

* chore: query cache, clippy, fmt
2025-09-30 11:43:59 +00:00
Prospector
53c9699b46 changelog 2025-09-29 12:42:59 -07:00
Alejandro González
671fd22389 chore: cleanup unintended .sqlx folder at root of repository (#4445)
`cargo sqlx prepare` should be run in the directory of the crate that
contains the database queries instead, as that's what we're documenting
and have standarized on.
2025-09-29 18:46:39 +00:00
Josiah Glosson
bddc40e601 Readd MODRINTH_EXTERNAL_UPDATE_PROVIDER (#4444) 2025-09-29 18:17:23 +00:00
Emma Alexia
324ad65d7c Fix user deletion with new notification_deliveries table (#4437) 2025-09-29 18:04:22 +00:00
Prospector
7eace32d93 update time 2025-09-29 09:31:23 -07:00
Prospector
a5108ecc5d Update changelog 2025-09-29 09:31:07 -07:00
Josiah Glosson
a538b99c18 Reworked app update flow (#3960)
* Make theseus capable of logging messages from the `log` crate

* Move update checking entirely into JS and open a modal if an update is available

* Fix formatjs on Windows and run formatjs

* Add in the buttons and body

* Fix lint

* Show update size in modal

* Fix update not being rechecked if the update modal was directly dismissed

* Slight UI tweaks

* Fix lint

* Implement skipping the update

* Implement the Update Now button

* Implement updating at next exit

* Turn download progress into an error bar on failure

* Restore 5 minute update check instead of 30 seconds

* Fix PendingUpdateData being seen as a unit struct

* Fix lint

* Make CI also lint updater code

* feat: create AppearingProgressBar component

* feat: polish update available modal

* feat: add error handling

* Open changelog with tauri-plugin-opener

* Run intl:extract

* Update completion toasts (#3978)

* Use single LAUNCHER_USER_AGENT constant for all user agents

* Fix build on Mac

* Request the update size with HEAD instead of GET

* UI tweaks

* lint

* Fix lint

* fix: hide modal header & add "Hide update reminder" button w/ tooltip

* Run intl:extract

* fix: lint issues

* fix: merge issues

* notifications.js no longer exists

* Add metered network checking

* Add a timeout to macOS is_network_metered

* Fix tauri.conf.json

* vibe debugging

* Set a dispatch queue

* Have a popup that asks you if you'd like to disable automatic file downloads if you're on a metered network

* Move UpdateModal to modal package

* Fix lint

* Add a toggle for automatic downloads

* Fix type

Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Josiah Glosson <soujournme@gmail.com>

* Redo updating UI and experience

* lint

* fix unlistener issue

* remove unneeded translation keys

* Fix expose issue

* temp disable cranelift, tweak some messages

* change version back

* Clean up App.vue

* move toast to top right

* update reload icon

* Fixed the bug!!!!!!!!!!!!

* improve messages

* intl:extract

* Add liquid glass icon file

* not you!

* use dependency injection

* lint on apple icon

* Fix imports, move download size to button

* change update check back to 5 mins

* lint + move to providers

* intl:extract

---------

Signed-off-by: Cal H. <hendersoncal117@gmail.com>
Signed-off-by: Josiah Glosson <soujournme@gmail.com>
Co-authored-by: Calum <calum@modrinth.com>
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Cal H. <hendersoncal117@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
2025-09-29 15:28:31 +00:00
Jerozgen
f6f66a313f "Create" modal i18n capitalization (#4441) 2025-09-29 15:23:55 +00:00
Prospector
d5f756fd86 fix withdraw button looking disabled (#4440) 2025-09-29 02:20:23 +00:00
François-Xavier Talbot
b4eba5a0d5 Tax fixes (#4435)
* Only update the PaymentMethod ID if not using placeholder ID

* comment

* Create Anrok transactions for all charges

* Fix comment

* Prefer using payment method's address rather than customer address

* chore: query cache, clippy, fmt

* Retrieve stripe address from PM

* chore: query cache, clippy, fmt

* fmt

* bring back the query cache

* Better address retrieval for updating tax amounts, always update tax_last_updated

* chore: query cache, clippy, fmt

* Don't set PM in ctoken interactive session for new PIs
2025-09-28 21:13:48 +00:00
Calum H.
d418eaee12 feat: create modal limit alerting (#4429)
* draft: layout for alert

* feat: simplify

* feat: remove dummy data

* fix: lint and widths

* feat: use chips rather than dropdown select

* feat: remove gap from admonition header v body

* Revert "feat: remove gap from admonition header v body"

This reverts commit 46cce52799bc3ac24825a73ca4add18e0acad3c1.

* fix: niche fixes

* feat: update for new backend structure

* fix: i18n
2025-09-28 19:48:21 +00:00
aecsocket
f466470d06 Hard caps on creating projects/orgs/collections (#4430)
* implement backend limits on project creation

* implement collection, org creation hard caps

* Fix limit api

* Fix clippy

* Fix limits

* Update sqlx queries

* Address PR comments on user limit structure

* sqlx prepare and clippy

* fix test maybe
2025-09-28 10:01:00 +00:00
François-Xavier Talbot
3f55711f9e More billing fixes (#4431)
* Only update the PaymentMethod ID if not using placeholder ID

* comment

* Create Anrok transactions for all charges

* Fix comment

* Prefer using payment method's address rather than customer address

* chore: query cache, clippy, fmt

* Retrieve stripe address from PM

* chore: query cache, clippy, fmt

* fmt

* bring back the query cache
2025-09-27 22:37:30 +00:00
Alejandro González
bb9ce52c9d feat(labrinth): hide orgs without a purpose, re-enable organization creation (#4426)
* chore(labrinth): set `DELPHI_URL` to a valid default in `.env.local`

* feat(labrinth): make orgs not publicly visible until they meet some conditions

* Revert "Org disabled frontend (#4424)"

This reverts commit 2492b11ec0.

* changelog: update for re-enabling organization creation

* chore: run `sqlx prepare`

* chore(labrinth): tweak tests to work with new org changes

* tweak: apply @triphora's suggestion

Co-authored-by: Emma Alexia <emma@modrinth.com>
Signed-off-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>

* tweak: document `is_visible_organization` relationship with `Project#is_searchable`

---------

Signed-off-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Co-authored-by: Emma Alexia <emma@modrinth.com>
2025-09-26 15:42:53 +00:00
François-Xavier Talbot
14af3d0763 Billing fixes (#4422)
* Only update the PaymentMethod ID if not using placeholder ID

* comment

* Create Anrok transactions for all charges

* Fix comment

* Prefer using payment method's address rather than customer address

* chore: query cache, clippy, fmt
2025-09-26 15:39:47 +00:00
Prospector
d43451e398 update changelog 2025-09-25 19:09:53 -07:00
Prospector
2492b11ec0 Org disabled frontend (#4424) 2025-09-26 01:55:57 +00:00
François-Xavier Talbot
4228a193e9 Charge tax on products (#4361)
* Initial Anrok integration

* Query cache, fmt, clippy

* Fmt

* Use payment intent function in edit_subscription

* Attach Anrok client, use payments in index_billing

* Integrate Anrok with refunds

* Bug fixes

* More bugfixes

* Fix resubscriptions

* Medal promotion bugfixes

* Use stripe metadata constants everywhere

* Pre-fill values in products_tax_identifiers

* Cleanup billing route module

* Cleanup

* Email notification for tax charge

* Don't charge tax on users which haven't been notified of tax change

* Fix taxnotification.amount templates

* Update .env.docker-compose

* Update .env.local

* Clippy

* Fmt

* Query cache

* Periodically update tax amount on upcoming charges

* Fix queries

* Skip indexing tax amount on charges if no charges to process

* chore: query cache, clippy, fmt

* Fix a lot of things

* Remove test code

* chore: query cache, clippy, fmt

* Fix money formatting

* Fix conflicts

* Extra documentation, handle tax association properly

* Track loss in tax drift

* chore: query cache, clippy, fmt

* Add subscription.id variable

* chore: query cache, clippy, fmt

* chore: query cache, clippy, fmt
2025-09-25 11:29:29 +00:00
François-Xavier Talbot
47020f34b6 Tax compliance adjustments (#4414)
* tax compliance adjustments

* chore: query cache, clippy, fmt
2025-09-25 11:02:33 +00:00
Jerozgen
5c00cb06f1 "Submit for review" button translation (#4381)
* "Submit for review" button translation

* Fix invitation message in the code

* Run web:fix

* Run intl:extract

---------

Co-authored-by: Calum H. <contact@cal.engineer>
2025-09-25 09:31:41 +00:00
François-Xavier Talbot
e6edf07eae Fill variables for subject line (#4415) 2025-09-24 10:52:43 +00:00
Jerozgen
5d7bd3b177 Add IntelliJ project icon (#4412) 2025-09-23 19:17:02 +00:00
François-Xavier Talbot
71d63fbe17 Fix version upload for popular projects (#4410)
* Only notify users that exist

* chore: query cache, clippy, fmt
2025-09-22 15:12:17 -07:00
François-Xavier Talbot
f33efed91b Less emails per transactinos (#4406) 2025-09-22 19:40:59 +00:00
François-Xavier Talbot
d41b31c775 Fix track1099 (#4405)
* don't parse datetime

* fix import

* update comments
2025-09-22 18:08:22 +00:00
aecsocket
20281c4efc Allow users to manage their own affiliate codes (#4392)
* Allow users to manage their own affiliate codes

* Add a badge to restrict access to affiliate codes

* sqlx prepare and clippy
2025-09-22 16:54:09 +00:00
François-Xavier Talbot
afcdb1d0a1 more loggging (#4404) 2025-09-22 16:53:27 +00:00
Calum H.
f3060cd9b4 feat: email template for subscription price changes due to tax (#4386)
* feat: subscription tax change email

* feat: wording

* feat: subscription id var for support & finalize tax change email script
2025-09-22 16:36:50 +00:00
Modrinth Bot
1a1b9f54df New translations from Crowdin (main) (#4401) 2025-09-22 15:56:14 +00:00
Jerozgen
716f293e8e "Create a server" tooltip i18n fixes (#4402) 2025-09-22 15:56:06 +00:00
Prospector
f5825f1065 Changelog 2025-09-21 15:40:23 -07:00
Calum H.
5b44454e18 feat: temporary tax compliance impl (#4393)
* feat: temporary tax compliance impl

* fix: lint & intl

* Update banner, reload page on submit, and fix withdraw button disabled state

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-09-21 22:23:07 +00:00
Calum H.
b425c66832 fix: hide versions checkbox depending on what game versions are avail (#4396)
* fix: hide versions checkbox depending on what game versions are avail

* refactor: use set instead of map
2025-09-21 22:17:58 +00:00
teaSummer
0b8762cd0a fix(app): properly show all versions and notify loaders (#4395)
* fix(app): properly show all versions and notify loaders

* fix lint
2025-09-20 12:07:30 +00:00
Jerozgen
ff50964f25 Strip alpha from inner skin parts (#4373)
* Strip alpha from inner skin parts

* Notch transparency hack

* Apply suggestions from code review

Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Jerozgen <jerozgen@gmail.com>

* Enable `extern_crate_alloc` feature for `bytemuck`

---------

Signed-off-by: Jerozgen <jerozgen@gmail.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
2025-09-18 21:35:19 +00:00
aecsocket
36d0760a3e Use Nightly + Cranelift for dev, only fail on warnings in CI (#4388)
* Switch to nightly + cranelift

* Fail on warnings only in CI

* Fix check errors

* Don't use mold on Linux to fix CI

* Pin nightly toolchain and add default rustup components

* Fix another CI thing

* PR comment
2025-09-18 18:20:19 +00:00
aecsocket
4def0e8407 Initial affiliate codes implementation (#4382)
* Initial affiliate codes implementation

* some more docs to codes

* sqlx prepare

* Address PR comments

* Address more PR comments

* fix clippy

* Switch to using Json<T> for type-safe responses
2025-09-18 15:43:34 +00:00
François-Xavier Talbot
6da190ed01 New Creator Notifications (#4383)
* Some new notification types

* Fix error

* Use existing DB models rather than inline queries

* Fix template fillout

* Fix ModerationThreadMessageReceived

* Insert more notifications, fix some formatting

* chore: query cache, clippy, fmt

* chore: query cache, clippy, fmt

* Use outer transactions to insert notifications instead of creating a new one

* Join futures
2025-09-17 19:37:21 +00:00
Calum H.
8149618187 feat: introduce vue-email for templating with tailwind (#4358)
* feat: start on vue-email set up

* feat: email rendering and base template

* refactor: body slot only

* feat: templates

* fix: lint

* fix: build process

* fix: default import issue

* feat: continue making emails

* feat: update address

* feat: new templates

* feat: email temp page viewer

* fix: lint

* fix: reset password heading

* fix: lint

* fix: qa issues
2025-09-16 15:57:34 +00:00
François-Xavier Talbot
902d749293 [DO NOT MERGE] Email notification system (#4338)
* Migration

* Fixup db models

* Redis

* Stuff

* Switch PKs to BIGSERIALs, insert to notifications_deliveries when inserting notifications

* Queue, templates

* Query cache

* Fixes, fixtures

* Perf, cache template data & HTML bodies

* Notification type configuration, ResetPassword notification type

* Reset password

* Query cache

* Clippy + fmt

* Traces, fix typo, fix user email in ResetPassword

* send_email

* Models, db

* Remove dead code, adjust notification settings in migration

* Clippy fmt

* Delete dead code, fixes

* Fmt

* Update apps/labrinth/src/queue/email.rs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

* Remove old fixtures

* Unify email retry delay

* Fix type

* External notifications

* Remove `notifications_types_preference_restrictions`, as user notification preferences is out of scope for this PR

* Query cache, fmt, clippy

* Fix join in get_many_user_exposed_on_site

* Remove migration comment

* Query cache

* Update html body urls

* Remove comment

* Add paymentfailed.service variable to PaymentFailed notification variant

* Fix compile error

* Fix deleting notifications

* Update apps/labrinth/src/database/models/user_item.rs

Co-authored-by: Josiah Glosson <soujournme@gmail.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

* Update apps/labrinth/src/database/models/user_item.rs

Co-authored-by: Josiah Glosson <soujournme@gmail.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

* Update Cargo.toml

Co-authored-by: Josiah Glosson <soujournme@gmail.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

* Update apps/labrinth/migrations/20250902133943_notification-extension.sql

Co-authored-by: Josiah Glosson <soujournme@gmail.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

* Address review comments

* Fix compliation

* Update apps/labrinth/src/database/models/users_notifications_preferences_item.rs

Co-authored-by: Josiah Glosson <soujournme@gmail.com>
Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>

* Use strfmt to format emails

* Configurable Reply-To

* Configurable Reply-To

* Refactor for email background task

* Send some emails inline

* Fix account creation email check

* Revert "Use strfmt to format emails"

This reverts commit e0d6614afe51fa6349918377e953ba294c34ae0b.

* Reintroduce fill_template

* Set password reset email inline

* Process more emails per index

* clippy fmt

* Query cache

---------

Signed-off-by: François-Xavier Talbot <108630700+fetchfern@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Josiah Glosson <soujournme@gmail.com>
2025-09-15 19:02:29 +00:00
Jerozgen
1491642209 I18n home page fixes (#4369)
* Fix missing dots in descriptions

* Fix untranslatable "our own app"

* Make full-width main header

* Fix missing space
2025-09-15 15:10:34 +00:00
Prospector
7bc2c1dd4d make default layout translatable (#4378)
* make default layout translatable

* intl:extract

* fix lint
2025-09-15 07:49:31 +00:00
Modrinth Bot
9f11759292 New translations from Crowdin (main) (#4379) 2025-09-15 07:47:25 +00:00
Jerozgen
cef425b6be Support longer "Sort by" for i18n on home page (#4365) 2025-09-15 06:22:11 +00:00
François-Xavier Talbot
3fc55184a7 Support alternative read-replica PgPool (#4374)
* Add ReadOnlyPgPool

* Clippy, fmt
2025-09-14 15:44:52 +00:00
Alejandro González
67e090565e fix(labrinth): address email placeholder regression introduced in #4193 (#4371) 2025-09-12 22:26:05 +00:00
François-Xavier Talbot
d8d9720495 Only Fire Slack Webhook Once a Day (#4368)
* Only send webhook once per day

* pat clippy's back

* damn query cache
2025-09-11 23:38:22 +00:00
Alejandro González
9361acb78e fix(labrinth): proper page view ingest URL origin filtering (#4344) 2025-09-10 23:38:27 +00:00
François-Xavier Talbot
58aac642a9 Slack webhook for payout source threshold alerts (#4353)
* Slack webhook for payout alerts

* add PAYOUT_ALERT_SLACK_WEBHOOK to check_env_vars

* Fix commit

* Fix webhook format

* Add new env vars in .env.local

* Rename env vars, fire webhook on error

* Fix compilation

* Clippy

* Fix CI

* Add env vars to .env.docker-compose
2025-09-10 21:16:21 +00:00
Modrinth Bot
af3b829449 New translations from Crowdin (main) (#4300)
* New translations from Crowdin (main)

* feat: warning + slap beta tag

* fix: intl

* fix: intl

---------

Co-authored-by: IMB11 <contact@cal.engineer>
2025-09-09 15:55:26 +00:00
Prospector
567e31401d Hide germany when out of stock. Also, fixes wrapping issue with testing connection (#4356) 2025-09-08 22:35:27 +00:00
Prospector
b95ece04c4 fix titles being off when plan stage is absent (#4355) 2025-09-08 22:20:48 +00:00
Prospector
3dfd035b50 remove extra files 2025-09-08 14:57:14 -07:00
Prospector
01b19424cd Fix asia launch thumbnail 2025-09-08 14:54:21 -07:00
Prospector
cb3130f998 changelog 2025-09-08 14:45:09 -07:00
Prospector
4d3e1ade67 Modrinth Servers asia launch blog post (#4346)
* Add asia blog post

* remove medal callout since it's US-only.

* Update packages/blog/articles/modrinth-servers-southeast-asia.md

Co-authored-by: Cal H. <contact@cal.engineer>
Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>

* update blog post

* update blog post + servers marketing page

* update blog post time

---------

Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Cal H. <contact@cal.engineer>
2025-09-08 14:43:51 -07:00
Cal H.
1b33a3619f feat: seed rounding and string seeds (#4351)
* feat: seed rounding fix

* chore: remove comment
2025-09-08 16:24:08 +00:00
François-Xavier Talbot
ea607c1a04 Include Tremendous image_logo_url (#4349) 2025-09-08 12:34:51 +00:00
Prospector
fda06cfc60 Add frontend support for as-sin region (#4340) 2025-09-07 23:00:58 +00:00
Prospector
0d61945956 Updated changelog 2025-09-07 15:51:23 -07:00
Emma Alexia
c017038f71 Fix error when trying to delete user with uploaded images (#4295)
* Fix error when trying to delete user with uploaded images

`{"error":"database_error","description":"Database Error: Error while interacting with the database: error returned from database: update or delete on table \"users\" violates foreign key constraint \"uploaded_images_owner_id_fkey\" on table \"uploaded_images\""}`

* Update certain things to use Ghost instead of deleting entirely

* Fix mistake
2025-09-06 23:05:34 +00:00
Alejandro González
a323bf6c25 fix(app): make Modrinth account SSO logins from the app work (#4345) 2025-09-06 21:35:50 +00:00
Alejandro González
e2f07a7848 tweak(labrinth): create Clickhouse tables with a TTL for staging env (#4343)
* tweak(labrinth): create Clickhouse tables with a TTL for staging env

* chore: fix syntax error in Clickhouse DDL
2025-09-06 14:57:31 +00:00
François-Xavier Talbot
0511a14bd9 Fix tremendous balance check (#4337) 2025-09-04 12:28:22 +00:00
Prospector
8f8a4af9eb Update changelog 2025-09-03 15:35:40 -07:00
Prospector
9ed094a1e7 Update changelog 2025-09-03 15:35:31 -07:00
Prospector
aa6de3cc80 mod -> project in description settings (#4330) 2025-09-03 22:21:06 +00:00
Prospector
f5aece1fb1 Make it slightly clearer that the app is in beta (#4333)
* Make it slightly clearer that the app is in beta and add linux disclaimer. Also changed the way Modrinth App was being referred to as a regular noun instead of a proper noun

* i18n for app page

* update home page to use ~content
2025-09-03 22:13:23 +00:00
Prospector
79aa41fd7a awazing (#4336) 2025-09-03 21:07:26 +00:00
François-Xavier Talbot
bd918c7616 Move update_bank_balances to billing task, don't fail every provider if one fails (#4332) 2025-09-03 13:12:34 +00:00
Prospector
d23b925bb9 Fixed a few icons in settings shrinking on mobile (#4331)
* Fix some icons shrinking Fixes #2297

* more shrinkage

* fix typo
2025-09-03 10:12:07 +00:00
Prospector
8aaddb9d8a revert 2025-09-02 10:46:06 -07:00
Prospector
f48eaee336 Revert "Reset search when header button is clicked - Closes #1979 (#4309)"
This reverts commit 2e95a8a117.
2025-09-02 10:45:48 -07:00
Prospector
749fd32307 update changelog 2025-09-02 10:24:29 -07:00
Prospector
2e95a8a117 Reset search when header button is clicked - Closes #1979 (#4309) 2025-09-02 16:04:55 +00:00
Prospector
2194ae774c Force summaries to wrap in search results (#4310) 2025-09-02 16:04:44 +00:00
Prospector
052637d402 Fix file inputs on Gallery and Versions pages not being selectable with keyboard (#4312) 2025-09-02 16:04:28 +00:00
Prospector
c1a092e55c Make home page translatable, fix scrolling content animation timing (#4325)
* Make home page translatable, fix scrolling content animation timing

* intl:extract
2025-09-02 16:03:39 +00:00
Prospector
bd3342badf Update rendered html with new renderer settings from #4311 (#4324) 2025-09-02 16:01:02 +00:00
Prospector
d832ca1e5a Fix creator username overflow on project pages (#4323) 2025-09-02 03:18:03 +00:00
Prospector
5b7f025094 update changelog 2025-09-01 16:17:16 -07:00
Prospector
d0c67b368a Fix minor edge case where unknown is first but not only. (#4308) 2025-09-01 18:41:38 +00:00
Prospector
c43d359561 Disable fuzzy links to prevent unintended linkage when referring to files or version numbers that may appear like domains or IP addresses (#4311) 2025-09-01 18:18:46 +00:00
Prospector
8b2a89d4e0 Improve project page performance by removing unnecessary slow request for featured versions (#4322)
* Improve project page performance by removing unnecessary slow request for featured versions

* Allow existing featured versions users to continue using it with deprecation warning.
2025-09-01 18:00:29 +00:00
François-Xavier Talbot
8aede4e082 Revert decimal rounding order, fix profile settings (#4314)
* Revert rounding post subtraction in GET balance

* Switch to panic = "unwind" in release mode

* Use profile 'release-labrinth'

* Fix target path
2025-09-01 14:59:09 +00:00
coolbot
3d80201112 use correct message file (#4315) 2025-09-01 03:38:26 +00:00
Prospector
8d14f34994 update changelog 2025-08-31 17:08:59 -07:00
coolbot
6f34130633 Coolbot/reports remoderation environments (#4313)
* Update reports quick responses.

* Edit env messages, add post approval stage.

* Update moderation checklist and nags to account for environments overhaul

* intl fix
2025-08-31 23:53:07 +00:00
Prospector
5a699eec22 Fix certain buttons having the wrong focus effect in Firefox browsers 2025-08-31 15:48:14 -07:00
Prospector
9fa490aa6a update changelog 2025-08-31 11:45:23 -07:00
Prospector
d119b301d0 Add fix:frontend for a quicker frontend-only formatting (#4307) 2025-08-31 18:02:18 +00:00
Alejandro González
15c31f04a3 tweak(labrinth): skip versions with unsupported loader fields on project-wide fields change (#4305) 2025-08-31 17:59:22 +00:00
Prospector
48e5319134 handle edge case where versions have differing envs better + update changelog + lint 2025-08-31 10:31:49 -07:00
Prospector
8058993578 Improve accessibiltiy of env selector, improve mobile support, and message for those with no permission (#4304)
* Fix redirect from project ID

* improve fix

* improve accessibility of environment selector

* lint

* fix mobile accessibility of project settings and improve message for those without permission

* disable envs when multiple + lint
2025-08-31 10:23:21 -07:00
Prospector
28337c88f6 Fix redirect from project ID (#4298)
* Fix redirect from project ID

* improve fix

* lint
2025-08-31 10:22:38 -07:00
Emma Alexia
a6d08e9d50 Fix users getting a notification for private moderation messages (#4302) 2025-08-31 15:40:53 +00:00
Alejandro González
7943f77655 tweak(labrinth/auth): improve Modrinth auth callback error message (#4303) 2025-08-31 12:20:15 +00:00
Emma Alexia
dc4ef332f8 Clarify date timestamps in search docs (#4293)
Replaces #4206
2025-08-30 18:46:51 +00:00
Emma Alexia
652f2e241f Allow server cancellation from admin billing (#4294)
Also fixes an issue (jankily) where Modrinth+ shows as an unknown product
2025-08-30 18:46:20 +00:00
Emma Alexia
5fd27bcb65 Fix larger gallery image uploading (#4292)
This reconciles a couple of differences between the frontend and backend regarding gallery image uploads.

- Frontend: The frontend thought that the limit should be 500 MiB for gallery images. This is obviously not right. It has been updated to 5 MiB.
- Backend: The backend has been rejecting anything between 2 MiB and 5 MiB, but this is inconsistent with prior usage, where the limit used to be 5 MiB. It has been updated to allow anything under 5 MiB.

Fixes #4291
2025-08-29 20:05:02 +00:00
Josiah Glosson
8fa01b937d Small friends fixes (#4270)
* Ensure that fetch errors are properly propagated

* Handle user not found errors better in add_friend

* Cargo fmt

* Introduce new LabrinthError returnable by fetch_advanced

* Allow enter key to send a friend request
2025-08-29 14:08:26 +00:00
Alejandro González
8b98087936 fix(blog): resolve relative URLs in Markdown images and links with a fixed base (#4287)
These changes add a layered hook to the `markdown-it` renderer rules to
resolve `<img>` element `src` attributes and `<a>` element `href`
attributes to a path-absolute relative URL, to ensure that such URLs
always point to the same resource URL even when the URL the current
resource is being viewed from changes.

This fixes an issue with relative links and image source URLs being
broken when a blog post was watched from a URL that lacked a trailing
slash, as web browsers adjust the path relative URLs are resolved from
depending on whether such character is present, and we didn't account
for that.

While at it, I've rebuilt all the blog posts and their associated RSS
feed.
2025-08-29 13:44:03 +00:00
coolbot
7afe35a6cd fix incorrect "versions" to "version" (#4282) 2025-08-29 06:51:06 +00:00
Prospector
debaf1381c Fixed permissions issue and modpack issue with environment overhaul 2025-08-28 18:40:05 -07:00
Prospector
697468e910 update changelog + blog post date 2025-08-28 16:45:20 -07:00
Prospector
46c325f78a Envs v3 frontend (#4267)
* New envs frontend

* lint fix

* Add blog post, user-facing changes, dashboard warning, project page member warning, and migration reviewing. maybe some other misc stuff

* lint

* lint

* ignore .data in .prettierignore

* i18n as fuck

* fix proj page

* Improve news markdown rendering

* improve phrasing of initial paragraph

* Fix environments not reloading after save

* index.ts instead of underscored name

* shrink-0 back on these icons
2025-08-28 22:11:35 +00:00
z0
0ac42344e7 Made statusbar more "consistent" (#4218)
Co-authored-by: Cal H. <contact@cal.engineer>
2025-08-28 22:03:09 +00:00
Prospector
df261dad95 Add file lookup utility page (#4276)
* Add file lookup utility page

* Lint
2025-08-28 21:52:43 +00:00
Felix
d30643b5a0 Always enable "advanced" instance creation options (#4161)
* Update InstanceCreationModal.vue

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

* change checkbox label

* remove unused icon

* lint

---------

Signed-off-by: Felix <60808107+ItsFelix5@users.noreply.github.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-08-28 21:28:38 +00:00
Cal H.
ab95dcf951 refactor: move nags out of main project member header for perf (#4222) 2025-08-28 21:12:50 +00:00
François-Xavier Talbot
ab539a313f Add tax compliance form related fields to GET /payout (#4274)
* Add form fields to GET payout

* Fix TIN match status never being updated

* Fmt + clippy

* Remove unnecessary borrow
2025-08-28 09:36:31 +00:00
Juhan Oskar Hennoste
a2c07c92f8 Fix and unify version selection when installing mods and filtering (#4252)
* Fix and unify version selection when installing mods

* Update version list filters to match install version selection logic

* Fix lint issues

---------

Co-authored-by: Cal H. <contact@cal.engineer>
2025-08-27 13:47:39 +00:00
z0
0925abfd1c Initialize main window with visible: false to prevent white flash (#4177) 2025-08-26 10:43:38 +00:00
Cal H.
8cf42471a3 feat: Reintroduce crowdin synchronization. (#4178)
* feat: crowdin

* fix: preflight check

* fix: workflow

* fix: workflow

* fix: fail on preflight failure

* fix: crowdin config

* fix: ci

* fix: crowdin sources

* fix: crowdin config

* fix: crowdin pull

* fix: crowdin

* fix: crowdin issues

* fix: add-paths

* fix: move pr body to markdown template

* fix: lint & moderation package

* Update Crowdin link in pull request template

Signed-off-by: Cal H. <contact@cal.engineer>

* Update crowdin links

---------

Signed-off-by: Cal H. <contact@cal.engineer>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-08-25 21:50:01 +00:00
François-Xavier Talbot
006b19e3c9 Creator tax compliance (#4254)
* Initial implementation

* Remove test code

* Query cache

* Appease clippy

* Precise TIN/SSN

* Make tax threshold customizable via env variable

* Address review comments
2025-08-25 16:34:58 +00:00
Josiah Glosson
ca36d11570 More IDEA files (#4262)
* Add back gradle.xml

* Add back vcs.xml

* Add theseus modules and format xml files
2025-08-25 15:40:32 +00:00
Cal H.
c612c8b009 feat: replace medal server suspended/cancelled notice (#4261) 2025-08-25 13:04:17 +00:00
Cal H.
f9cf3d5ef9 Fix project type display in ModerationQueueCard (#4248)
Signed-off-by: Cal H. <hendersoncal117@gmail.com>
2025-08-24 16:11:23 +00:00
Josiah Glosson
e7d933411e Don't create an empty servers.dat on instance creation (#4242)
Instead of creating an empty servers.dat to watch, the app now non-recursively watches the profile's root directory
2025-08-22 21:10:04 +00:00
Cal H.
44cbbd9ed7 fix: remove client side sorting of files (#4240)
* fix: remove default sorting on files page

* fix: lint
2025-08-22 17:28:47 +00:00
Josiah Glosson
87dbb6dcbc Mark .editorconfig to use spaces for Rust code as the formatter does (#4235) 2025-08-21 08:03:56 +00:00
Prospector
3d1cafdcec Add medal blog post 2025-08-20 15:20:52 -07:00
Prospector
e114c7466e update changelog 2025-08-20 13:18:52 -07:00
Prospector
20059e6cf0 Update app ad 2025-08-20 12:33:00 -07:00
Prospector
6b10b4d30b changelog 2025-08-19 21:21:51 -07:00
Cal H.
a47dde972c fix: medal support in admin billing (#4232) 2025-08-19 22:51:07 +00:00
Prospector
e8b0c9df4c changelog 2025-08-19 13:54:26 -07:00
Cal H.
b8bc2c4cb6 fix: dont auth on empty plan query (#4231) 2025-08-19 13:53:36 -07:00
Cal H.
328500d381 fix: mobile responsiveness (hacky) (#4230) 2025-08-19 20:39:05 +00:00
Prospector
f56672fb68 update changelog + enable medal 2025-08-19 11:03:33 -07:00
Prospector
d3459e4b12 Medal promo v2 (#4220)
* Revert "Revert "feat: medal promotion on servers page (#4117)""

This reverts commit 2e6cff7efc.

* Revert "Revert "update changelog""

This reverts commit b2ff2d8737.

* Revert "Revert "turn off medal promo""

This reverts commit eaa4b44a16.

* Revert "Revert "Revert "turn off medal promo"""

This reverts commit 76d0ef03e7.

* Revert "Revert "fix medal thing showing up for everyone""

This reverts commit ee8c47adcb.

* New medal colors

* Update medal server listings

* Upgrade modal enhancements & more medal consistency

* undo app promo changes

* Only apply medal promo with flag on

* remove unneessary files

* lint

* disable medal flag
2025-08-19 17:39:09 +00:00
Cal H.
07703e49ef fix: broken jump right in for worlds (#4227)
* fix: broken jump right in for worlds

* revert: Worlds.vue change
2025-08-19 17:19:03 +00:00
Josiah Glosson
08011161c8 Clean up .gitignore to not ignore required IntelliJ files and not have redundant entries (#4228) 2025-08-19 17:14:20 +00:00
kolioaris
9b29694907 Update index.vue (#4224)
Signed-off-by: kolioaris <111509679+kolioaris@users.noreply.github.com>
2025-08-19 15:21:52 +00:00
Josiah Glosson
805c0b86a5 Fix IPC on Forge 1.17.1 - 1.20.1 (#4187)
* Reapply "Implement a more robust IPC system between the launcher and client (#4159)"

This reverts commit e25d726da4.

* Put game JAR and theseus JAR ahead of other JARs in classpath

* Fix 1.17-1.20 Forge by forcefully removing Multi-Release manifest entry

* Fix formatting

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-08-18 20:32:17 +00:00
Josiah Glosson
d19bf82cb1 Fix IntelliJ import (#4214) 2025-08-18 20:13:12 +00:00
Prospector
2e6cff7efc Revert "feat: medal promotion on servers page (#4117)"
This reverts commit 14eac461be.
2025-08-18 12:26:11 -07:00
Prospector
b2ff2d8737 Revert "update changelog"
This reverts commit 490b994d7b.
2025-08-18 12:26:11 -07:00
Prospector
eaa4b44a16 Revert "turn off medal promo"
This reverts commit 518f7adafb.
2025-08-18 12:26:10 -07:00
Prospector
76d0ef03e7 Revert "Revert "turn off medal promo""
This reverts commit 235717b01c.
2025-08-18 12:26:10 -07:00
Prospector
ee8c47adcb Revert "fix medal thing showing up for everyone"
This reverts commit 5d3ca3ba02.
2025-08-18 12:24:33 -07:00
Prospector
5d3ca3ba02 fix medal thing showing up for everyone 2025-08-18 12:23:48 -07:00
Prospector
235717b01c Revert "turn off medal promo"
This reverts commit 518f7adafb.
2025-08-18 11:48:47 -07:00
Prospector
518f7adafb turn off medal promo 2025-08-18 11:47:38 -07:00
Prospector
490b994d7b update changelog 2025-08-18 11:20:13 -07:00
Cal H.
14eac461be feat: medal promotion on servers page (#4117)
* feat: medal promotion on servers page

* feat: medal server card

* fix: styling changes

* fix: colors for dark mode only

* fix: light mode medal promotion

* feat: finish server card layout

* feat: countdown on server panel

* fix: lint

* feat: use same gradient as promo

* fix: scale for medal bg

* fix: border around server icon

* feat: medal subscr expiry date stuff

* feat: progress on plans within the modal

* feat: finalize plan modal stage

* fix: unused scss

* feat: remove buttons from cards

* feat: upgrade button opens modal on server panel

* feat: billing endpoint

* fix: lint issues

* fix: lint issues

* fix: lint issues

* feat: better handling of downgrades + existing plan checks

* feat: update medal url

* feat: proration visual in modal

* feat: standardize upgrade modal into ServersUpgradeModalWrapper

* feat: replace upgrade PurchaseModal with ServersUpgradeModalWrapper

* feat: allow server region

* fix: lint

* fix: lint

* fix: medal frontend completion

* fix: lint issues

* feat: ad

* fix: hover tooltip + orange new server sparkle

* feat: ad

* fix: lint issues new eslint

* feat: match ad

* feat: support for ?dry=true

* fix: lint isuses

* fix: lint issues

* fix: TeleportDropdownMenu imports

* fix: hash nav issues

* feat: clarify confirm changes btn

* fix: lint issues

* fix: "Using new payment method"

* fix: lint

* fix: re-add -mt-2

---------

Signed-off-by: Cal H. <hendersoncal117@gmail.com>
2025-08-18 17:59:19 +00:00
Prospector
9af1391e0e update changelog 2025-08-18 09:07:21 -07:00
Cal H.
bcfa6941e4 fix: Teleport Dropdown/OverflowMenu imports (#4211)
* fix: Teleport Dropdown/OverflowMenu imports

* fix: lint
2025-08-18 13:50:58 +00:00
Cal H.
5ffe14f058 fix: undefined functions/properties across frontend (#4210)
* fix: notification mark as read

* revert: composition API change

* fix: categories

* feat: enable vue/no-undef-properties in 'warn' mode.

* fix: app undefined properties

* revert: ss block

* fix: eslint-disable for [version].vue
2025-08-18 11:46:58 +00:00
Prospector
166d14e7e1 update changelog 2025-08-17 15:32:33 -07:00
François-Xavier Talbot
b03d754a57 Dry query param, cleanup (#4176)
Co-authored-by: Cal H. <hendersoncal117@gmail.com>
2025-08-17 11:50:51 +00:00
Prospector
674f29959d Simplify css var setup to remove conflicts, overrides, and duplicates (#4170)
* remove "experimental" color vars, remove conflicting styles from frontend-specific css

* lint

---------

Co-authored-by: Cal H. <hendersoncal117@gmail.com>
2025-08-17 11:34:21 +00:00
Cal H.
3e735b99eb feat: frontend explicit imports + error page fix (#4184)
* feat: frontend explicit imports

* fix: error handling

* fix: dashboard missing import

* fix: error page issues

* fix: exclude RouterView

* feat: fix lint issues

* fix: lint issues

* fix: import issues

* add getVersionLink

* make articles.json use tabs on generation so it doesn't have to be reformatted

* fix: lint issues

---------

Signed-off-by: Cal H. <hendersoncal117@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
2025-08-17 11:15:49 +00:00
ThatGravyBoat
74d2d85cb5 fix: wsrv param rename (#4202) 2025-08-17 10:47:29 +00:00
1576 changed files with 207381 additions and 32364 deletions

View File

@@ -1,9 +1,6 @@
# Windows has stack overflows when calling from Tauri, so we increase the default stack size used by the compiler
[target.'cfg(windows)']
rustflags = ["-C", "link-args=/STACK:16777220", "--cfg", "tokio_unstable"]
rustflags = ["-C", "link-args=/STACK:16777220"]
[target.x86_64-pc-windows-msvc]
linker = "rust-lld"
[build]
rustflags = ["--cfg", "tokio_unstable"]

View File

@@ -13,13 +13,13 @@ max_line_length = 100
indent_size = 2
max_line_length = off
[*.toml]
indent_size = 2
[*.json]
[*.{toml,json}]
indent_size = 2
# YAML requires space indentation by spec
[*.{yml,yaml}]
indent_size = 2
indent_style = space
[*.rs]
indent_style = space

View File

@@ -0,0 +1,63 @@
name: 👥 Bug with Modrinth Servers
description: For issues with a Modrinth Servers product.
labels: [servers]
type: 'bug'
body:
- type: checkboxes
attributes:
label: Please confirm the following.
options:
- label: I checked the [existing issues](https://github.com/modrinth/code/issues?q=is%3Aissue) for duplicate problems
required: true
- label: I have tried resolving the issue using the [support portal](https://support.modrinth.com)
required: true
- type: dropdown
id: issue-location
attributes:
label: Is this an issue in the control panel or with the Minecraft server itself?
options:
- Control panel (on Modrinth.com)
- Minecraft server
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on? (if a panel issue)
multiple: true
options:
- N/A
- Chrome (including Arc, Brave, Opera, Vivaldi)
- Microsoft Edge
- Firefox
- Safari
- Other (please specify)
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is. Include screenshots if applicable.
validations:
required: false
- type: textarea
attributes:
label: Steps to reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
validations:
required: false
- type: textarea
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: Add any other context about the problem here.
validations:
required: false

View File

@@ -1,14 +1,8 @@
blank_issues_enabled: true
blank_issues_enabled: false
contact_links:
- name: 🫶 Support Portal
about: Get support using through our portal.
- name: 🫶 Support portal
about: Get support using through our support website.
url: https://support.modrinth.com
- name: 💬 Chat
- name: 💬 Chat on Discord
about: Join our Discord server to chat about Modrinth.
url: https://discord.modrinth.com
- name: 🛣️ Roadmap
about: View our Roadmap. Please do not open issues for items on our roadmap.
url: https://roadmap.modrinth.com
- name: 📚 Documentation
about: Useful documentation about Modrinth's API
url: https://docs.modrinth.com

View File

@@ -0,0 +1,72 @@
---
applyTo: '**/*.vue'
---
You are given a Nuxt/Vue single-file component (.vue). Your task is to convert every hard-coded natural-language string in the <template> into our localization system using @vintl/vintl-nuxt (which wraps FormatJS).
Please follow these rules precisely:
1. Identify translatable strings
- Scan the <template> for all user-visible strings (inner text, alt attributes, placeholders, button labels, etc.). Do not extract dynamic expressions (like {{ user.name }}) or HTML tags. Only extract static human-readable text.
- There may be strings within the <script> block, e.g dropdown option labels, notifications etc.
2. Create message definitions
- In the <script setup> block, import `defineMessage` or `defineMessages` from `@vintl/vintl`.
- For each extracted string, define a message with a unique `id` (use a descriptive prefix based on the component path, e.g. `auth.welcome.long-title`) and a `defaultMessage` equal to the original English string.
Example:
const messages = defineMessages({
welcomeTitle: { id: 'auth.welcome.title', defaultMessage: 'Welcome' },
welcomeDescription: { id: 'auth.welcome.description', defaultMessage: 'Youre now part of the community…' },
})
3. Handle variables and ICU formats
- Replace dynamic parts with ICU placeholders: "Hello, ${user.name}!" → `{name}` and defaultMessage: 'Hello, {name}!'
- For numbers/dates/times, use ICU/FormatJS options (e.g., currency): `{price, number, ::currency/USD}`
- For plurals/selects, use ICU: `'{count, plural, one {# message} other {# messages}}'`
4. Rich-text messages (links/markup)
- In `defaultMessage`, wrap link/markup ranges with tags, e.g.:
"By creating an account, you agree to our <terms-link>Terms</terms-link> and <privacy-link>Privacy Policy</privacy-link>."
- Render rich-text messages with `<IntlFormatted>` from `@vintl/vintl/components` and map tags via `values`:
<IntlFormatted
:message="messages.tosLabel"
:values="{
'terms-link': (chunks) => <NuxtLink to='/terms'>{chunks}</NuxtLink>,
'privacy-link': (chunks) => <NuxtLink to='/privacy'>{chunks}</NuxtLink>,
}"
/>
- For simple emphasis: `'Welcome to <strong>Modrinth</strong>!'` and map `'strong': (c) => <strong>{c}</strong>`
5. Formatting in templates
- Import and use `useVIntl()`; prefer `formatMessage` for simple strings:
`const { formatMessage } = useVIntl()`
`<button>{{ formatMessage(messages.welcomeTitle) }}</button>`
- Vue methods like `$formatMessage`, `$formatNumber`, `$formatDate` are also available if needed.
6. Naming conventions and id stability
- Make `id`s descriptive and stable (e.g., `error.generic.default.title`). Group related messages with `defineMessages`.
7. Avoid Vue/ICU delimiter collisions
- If an ICU placeholder would end right before `}}` in a Vue template, insert a space so it becomes `} }` to avoid parsing issues.
8. Update imports and remove literals
- Ensure imports for `defineMessage`/`defineMessages`, `useVIntl`, and `<IntlFormatted>` are present. Replace all hard-coded strings with `formatMessage(...)` or `<IntlFormatted>` and remove the literals.
9. Preserve functionality
- Do not change logic, layout, reactivity, or bindings—only refactor strings into i18n.
Use existing patterns from our codebase:
- Variables/plurals: see `apps/frontend/src/pages/frog.vue`
- Rich-text link tags: see `apps/frontend/src/pages/auth/welcome.vue` and `apps/frontend/src/error.vue`
When you finish, there should be no hard-coded English strings left in the template—everything comes from `formatMessage` or `<IntlFormatted>`.

4
.github/templates/crowdin-pr.md vendored Normal file
View File

@@ -0,0 +1,4 @@
This pull request is created according to the `.github/workflows/i18n-pull.yml` file.
- 🌐 [Contribute to translations on Crowdin](https://translate.modrinth.com/)
- 🔄 [Dispatch this workflow again to update this PR](https://github.com/Modrinth/code/actions/workflows/i18n-pull.yml)

View File

@@ -4,9 +4,14 @@ on:
push:
branches:
- main
- master
- prod
- release
- beta
- feature*
tags:
- 'v*'
- release-*
- beta-*
paths:
- .github/workflows/astralrinth-build.yml
- 'apps/app/**'
@@ -95,8 +100,8 @@ jobs:
libayatana-appindicator3-dev \
librsvg2-dev \
xdg-utils \
openjdk-11-jdk
openjdk-17-jdk
- name: ⚙️ Set application environment
shell: bash
run: |
@@ -138,7 +143,7 @@ jobs:
if: matrix.platform == 'windows-latest'
shell: pwsh
run: |
$env:JAVA_HOME = "$env:JAVA_HOME_11_X64"
$env:JAVA_HOME = "$env:JAVA_HOME_17_X64"
pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json --verbose --bundles 'nsis'
env:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}

17
.gitignore vendored
View File

@@ -9,7 +9,6 @@ tmp
node_modules
# IDEs and editors
/.idea
.project
.classpath
.c9/
@@ -24,6 +23,14 @@ node_modules
!.vscode/launch.json
!.vscode/extensions.json
# IDE - IntelliJ
.idea/*
!.idea/code.iml
!.idea/gradle.xml
!.idea/icon.svg
!.idea/modules.xml
!.idea/vcs.xml
# misc
/.sass-cache
/connect.lock
@@ -56,8 +63,8 @@ generated
# app testing dir
app-playground-data/*
# soley because i need the PORT to be 3002 due to WSL stuff
.env
apps/frontend/.env
.astro
.claude
# labrinth demo fixtures
apps/labrinth/fixtures/demo

20
.idea/code.iml generated Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/apps/daedalus_client/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/packages/daedalus/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/apps/app-playground/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/apps/app/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/apps/labrinth/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/apps/labrinth/tests" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/packages/app-lib/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/packages/ariadne/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/packages/path-util/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

17
.idea/gradle.xml generated Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1"/>
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$/packages/app-lib/java"/>
<option name="gradleJvm" value="#JAVA_HOME"/>
<option name="modules">
<set>
<option value="$PROJECT_DIR$/packages/app-lib/java"/>
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

4
.idea/icon.svg generated Normal file
View File

@@ -0,0 +1,4 @@
<svg width="512" height="514" viewBox="0 0 512 514" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M503.16 323.56C514.55 281.47 515.32 235.91 503.2 190.76C466.57 54.2299 326.04 -26.8001 189.33 9.77991C83.8101 38.0199 11.3899 128.07 0.689941 230.47H43.99C54.29 147.33 113.74 74.7298 199.75 51.7098C306.05 23.2598 415.13 80.6699 453.17 181.38L411.03 192.65C391.64 145.8 352.57 111.45 306.3 96.8198L298.56 140.66C335.09 154.13 364.72 184.5 375.56 224.91C391.36 283.8 361.94 344.14 308.56 369.17L320.09 412.16C390.25 383.21 432.4 310.3 422.43 235.14L464.41 223.91C468.91 252.62 467.35 281.16 460.55 308.07L503.16 323.56Z" fill="#00af5c"/>
<path d="M321.99 504.22C185.27 540.8 44.7501 459.77 8.11011 323.24C3.84011 307.31 1.17 291.33 0 275.46H43.27C44.36 287.37 46.4699 299.35 49.6799 311.29C53.0399 323.8 57.45 335.75 62.79 347.07L101.38 323.92C98.1299 316.42 95.39 308.6 93.21 300.47C69.17 210.87 122.41 118.77 212.13 94.7601C229.13 90.2101 246.23 88.4401 262.93 89.1501L255.19 133C244.73 133.05 234.11 134.42 223.53 137.25C157.31 154.98 118.01 222.95 135.75 289.09C136.85 293.16 138.13 297.13 139.59 300.99L188.94 271.38L174.07 231.95L220.67 184.08L279.57 171.39L296.62 192.38L269.47 219.88L245.79 227.33L228.87 244.72L237.16 267.79C237.16 267.79 253.95 285.63 253.98 285.64L277.7 279.33L294.58 260.79L331.44 249.12L342.42 273.82L304.39 320.45L240.66 340.63L212.08 308.81L162.26 338.7C187.8 367.78 226.2 383.93 266.01 380.56L277.54 423.55C218.13 431.41 160.1 406.82 124.05 361.64L85.6399 384.68C136.25 451.17 223.84 484.11 309.61 461.16C371.35 444.64 419.4 402.56 445.42 349.38L488.06 364.88C457.17 431.16 398.22 483.82 321.99 504.22Z" fill="#00af5c"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

15
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/code.iml"
filepath="$PROJECT_DIR$/.idea/code.iml"/>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/theseus.iml"
filepath="$PROJECT_DIR$/.idea/modules/theseus.iml"/>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/theseus.main.iml"
filepath="$PROJECT_DIR$/.idea/modules/theseus.main.iml"/>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/theseus.test.iml"
filepath="$PROJECT_DIR$/.idea/modules/theseus.test.iml"/>
</modules>
</component>
</project>

14
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CommitMessageInspectionProfile">
<profile version="1.0">
<inspection_tool class="CommitFormat" enabled="true" level="WARNING"
enabled_by_default="true"/>
<inspection_tool class="CommitNamingConvention" enabled="true" level="WARNING"
enabled_by_default="true"/>
</profile>
</component>
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git"/>
</component>
</project>

20
.vscode/settings.json vendored
View File

@@ -11,5 +11,23 @@
"source.fixAll.eslint": "explicit",
"source.organizeImports": "always"
},
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
}
}

63
CLAUDE.md Normal file
View File

@@ -0,0 +1,63 @@
# Architecture
Use TAB instead of spaces.
## Frontend
There are two similar frontends in the Modrinth monorepo, the website (apps/frontend) and the app frontend (apps/app-frontend).
Both use Tailwind v3, and their respective configs can be seen at `tailwind.config.ts` and `tailwind.config.js` respectively.
Both utilize shared and common components from `@modrinth/ui` which can be found at `packages/ui`, and stylings from `@modrinth/assets` which can be found at `packages/assets`.
Both can utilize icons from `@modrinth/assets`, which are automatically generated based on what's available within the `icons` folder of the `packages/assets` directory. You can see the generated icons list in `generated-icons.ts`.
Both have access to our dependency injection framework, examples as seen in `packages/ui/src/providers/`. Ideally any state which is shared between a page and it's subpages should be shared using this dependency injection framework.
### Website (apps/frontend)
Before a pull request can be opened for the website, `pnpm web:fix` and `pnpm web:intl:extract` must be run, otherwise CI will fail.
To run a development version of the frontend, you must first copy over the relevant `.env` template file (prod, staging or local, usually prod) within the `apps/frontend` folder into `apps/frontend/.env`. Then you can run the frontend by running `pnpm web:dev` in the root folder.
### App Frontend (apps/app-frontend)
Before a pull request can be opened for the website, you must CD into the `app-frontend` folder; `pnpm fix` and `pnpm intl:extract` must be run, otherwise CI will fail.
To run a development version of the app frontend, you must first copy over the relevant `.env` template file (prod, staging or local, usually prod) within `packages/app-lib` into `packages/app-lib/.env`. Then you must run the app itself by running `pnpm app:dev` in the root folder.
### Localization
Refer to `.github/instructions/i18n-convert.instructions.md` if the user asks you to perform any i18n conversion work on a component, set of components, pages or sets of pages.
## Labrinth
Labrinth is the backend API service for Modrinth.
### Testing
Before a pull request can be opened, run `cargo clippy -p labrinth --all-targets` and make sure there are ZERO warnings, otherwise CI will fail.
Use `cargo test -p labrinth --all-targets` to test your changes. All tests must pass, otherwise CI will fail.
To prepare the sqlx cache, cd into `apps/labrinth` and run `cargo sqlx prepare`. Make sure to NEVER run `cargo sqlx prepare --workspace`.
Read the root `docker-compose.yml` to see what running services are available while developing. Use `docker exec` to access these services.
When the user refers to "performing pre-PR checks", do the following:
- Run clippy as described above
- DO NOT run tests unless explicitly requested (they take a long time)
- Prepare the sqlx cache
### Clickhouse
Use `docker exec labrinth-clickhouse clickhouse-client` to access the Clickhouse instance. We use the `staging_ariadne` database to store data in testing.
### Postgres
Use `docker exec labrinth-postgres psql -U labrinth -d labrinth -c "SELECT 1"` to access the PostgreSQL instance, replacing the `SELECT 1` with your query.
# Guidelines
- Do not create new non-source code files (e.g. Bash scripts, SQL scripts) unless explicitly prompted to.

View File

@@ -8,6 +8,10 @@ For detailed information, consult each package's COPYING.md, LICENSE.txt, or LIC
The use of Modrinth branding elements, including but not limited to the wrench-in-labyrinth logo, the landing image, and any variations thereof, is strictly prohibited without explicit written permission from Rinth, Inc. This includes trademarks, logos, or other branding elements.
All rights reserved. © 2020-2024 Rinth, Inc.
> All rights reserved. © 2020-2024 Rinth, Inc.
This includes, but may not be limited to, the following files:
- .idea/icon.svg
If you fork this repository, you must remove all Modrinth branding assets from your fork.

3925
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,160 +1,189 @@
[workspace]
resolver = "2"
members = [
"apps/app",
"apps/app-playground",
"apps/daedalus_client",
"apps/labrinth",
"packages/app-lib",
"packages/ariadne",
"packages/daedalus",
"apps/app",
"apps/app-playground",
"apps/daedalus_client",
"apps/labrinth",
"packages/app-lib",
"packages/ariadne",
"packages/daedalus",
"packages/modrinth-log",
"packages/modrinth-maxmind",
"packages/modrinth-util",
"packages/path-util",
]
[workspace.package]
edition = "2024"
rust-version = "1.90.0"
repository = "https://github.com/modrinth/code"
[workspace.dependencies]
actix-cors = "0.7.1"
actix-files = "0.6.6"
actix-http = "3.11.0"
actix-files = "0.6.8"
actix-http = "3.11.2"
actix-multipart = "0.7.2"
actix-rt = "2.10.0"
actix-rt = "2.11.0"
actix-web = "4.11.0"
actix-web-prom = "0.10.0"
actix-ws = "0.3.0"
arc-swap = "1.7.1"
argon2 = { version = "0.5.3", features = ["std"] }
ariadne = { path = "packages/ariadne" }
async_zip = "0.0.17"
async-compression = { version = "0.4.27", default-features = false }
async-compression = { version = "0.4.32", default-features = false }
async-recursion = "1.1.1"
async-stripe = { version = "0.41.0", default-features = false, features = [
"runtime-tokio-hyper-rustls",
"runtime-tokio-hyper-rustls",
] }
async-trait = "0.1.89"
async-tungstenite = { version = "0.31.0", default-features = false, features = [
"futures-03-sink"
] }
async-trait = "0.1.88"
async-tungstenite = { version = "0.30.0", default-features = false, features = ["futures-03-sink"] }
async-walkdir = "2.1.0"
async_zip = "0.0.18"
base64 = "0.22.1"
bitflags = "2.9.1"
bytemuck = "1.23.1"
bitflags = "2.9.4"
bytemuck = "1.24.0"
bytes = "1.10.1"
censor = "0.3.0"
chardetng = "0.1.17"
chrono = "0.4.41"
clap = "4.5.43"
clickhouse = "0.13.3"
chrono = "0.4.42"
cidre = { version = "0.11.3", default-features = false, features = [
"macos_15_0"
] }
clap = "4.5.48"
clickhouse = "0.14.0"
color-eyre = "0.6.5"
color-thief = "0.2.2"
console-subscriber = "0.4.1"
const_format = "0.2.34"
daedalus = { path = "packages/daedalus" }
dashmap = "6.1.0"
data-url = "0.3.1"
data-url = "0.3.2"
deadpool-redis = "0.22.0"
derive_more = "2.0.1"
directories = "6.0.0"
dirs = "6.0.0"
discord-rich-presence = "0.2.5"
discord-rich-presence = "1.0.0"
dotenv-build = "0.1.1"
dotenvy = "0.15.7"
dunce = "1.0.5"
either = "1.15.0"
encoding_rs = "0.8.35"
enumset = "1.1.7"
flate2 = "1.1.2"
enumset = "1.1.10"
eyre = "0.6.12"
flate2 = "1.1.4"
fs4 = { version = "0.13.1", default-features = false }
futures = { version = "0.3.31", default-features = false }
futures = "0.3.31"
futures-util = "0.3.31"
hashlink = "0.10.0"
heck = "0.5.0"
hex = "0.4.3"
hickory-resolver = "0.25.2"
hmac = "0.12.1"
hyper = "1.6.0"
hyper = "1.7.0"
hyper-rustls = { version = "0.27.7", default-features = false, features = [
"http1",
"native-tokio",
"ring",
"tls12",
"aws-lc-rs",
"http1",
"native-tokio",
"tls12",
] }
hyper-util = "0.1.16"
iana-time-zone = "0.1.63"
image = { version = "0.25.6", default-features = false, features = ["rayon"] }
indexmap = "2.10.0"
hyper-util = "0.1.17"
iana-time-zone = "0.1.64"
image = { version = "0.25.8", default-features = false, features = ["rayon"] }
indexmap = "2.11.4"
indicatif = "0.18.0"
itertools = "0.14.0"
jemalloc_pprof = "0.8.1"
json-patch = { version = "4.0.0", default-features = false }
lettre = { version = "0.11.18", default-features = false, features = [
"builder",
"hostname",
"pool",
"ring",
"rustls",
"rustls-native-certs",
"smtp-transport",
json-patch = { version = "4.1.0", default-features = false }
lettre = { version = "0.11.19", default-features = false, features = [
"aws-lc-rs",
"builder",
"hostname",
"pool",
"rustls",
"rustls-native-certs",
"smtp-transport",
"tokio1",
"tokio1-rustls",
] }
maxminddb = "0.26.0"
meilisearch-sdk = { version = "0.29.1", default-features = false }
meilisearch-sdk = { version = "0.30.0", default-features = false }
modrinth-log = { path = "packages/modrinth-log" }
modrinth-maxmind = { path = "packages/modrinth-maxmind" }
modrinth-util = { path = "packages/modrinth-util" }
muralpay = { path = "packages/muralpay" }
murmur2 = "0.1.0"
native-dialog = "0.9.0"
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"
paste = "1.0.15"
phf = { version = "0.12.1", features = ["macros"] }
png = "0.17.16"
path-util = { path = "packages/path-util" }
phf = { version = "0.13.1", features = ["macros"] }
png = "0.18.0"
prometheus = "0.14.0"
quartz_nbt = "0.2.9"
quick-xml = "0.38.1"
rand = "=0.8.5" # Locked on 0.8 until argon2 and p256 update to 0.9
rand_chacha = "=0.3.1" # Locked on 0.3 until we can update rand to 0.9
redis = "0.32.4"
regex = "1.11.1"
reqwest = { version = "0.12.22", default-features = false }
quick-xml = "0.38.3"
rand = "=0.8.5" # Locked on 0.8 until argon2 and p256 update to 0.9
rand_chacha = "=0.3.1" # Locked on 0.3 until we can update rand to 0.9
redis = "0.32.7"
regex = "1.12.2"
reqwest = { version = "0.12.24", default-features = false }
rgb = "0.8.52"
rust_decimal = { version = "1.37.2", features = ["serde-with-float", "serde-with-str"] }
rust_decimal = { version = "1.39.0", features = [
"serde-with-float",
"serde-with-str"
] }
rust_iso3166 = "0.1.14"
rust-s3 = { version = "0.35.1", default-features = false, features = [
"fail-on-err",
"tags",
"tokio-rustls-tls",
rust-s3 = { version = "0.37.0", default-features = false, features = [
"fail-on-err",
"tags",
"tokio-rustls-tls",
] }
rustls = "0.23.32"
rusty-money = "0.4.1"
sentry = { version = "0.42.0", default-features = false, features = [
"backtrace",
"contexts",
"debug-images",
"panic",
"reqwest",
"rustls",
secrecy = "0.10.3"
sentry = { version = "0.45.0", default-features = false, features = [
"backtrace",
"contexts",
"debug-images",
"panic",
"reqwest",
"rustls",
] }
sentry-actix = "0.42.0"
serde = "1.0.219"
serde_bytes = "0.11.17"
sentry-actix = "0.45.0"
serde = "1.0.228"
serde_bytes = "0.11.19"
serde_cbor = "0.11.2"
serde_ini = "0.2.0"
serde_json = "1.0.142"
serde_with = "3.14.0"
serde-xml-rs = "0.8.1" # Also an XML (de)serializer, consider dropping yaserde in favor of this
serde_json = "1.0.145"
serde_with = "3.15.0"
serde-xml-rs = "0.8.1" # Also an XML (de)serializer, consider dropping yaserde in favor of this
sha1 = "0.10.6"
sha1_smol = { version = "1.0.1", features = ["std"] }
sha2 = "0.10.9"
spdx = "0.10.9"
shlex = "1.3.0"
spdx = "0.12.0"
sqlx = { version = "0.8.6", default-features = false }
sysinfo = { version = "0.36.1", default-features = false }
strum = "0.27.2"
sysinfo = { version = "0.37.2", default-features = false }
tar = "0.4.44"
tauri = "2.7.0"
tauri-build = "2.3.1"
tauri-plugin-deep-link = "2.4.1"
tauri-plugin-dialog = "2.3.2"
tauri-plugin-http = "2.5.1"
tauri-plugin-opener = "2.4.0"
tauri-plugin-os = "2.3.0"
tauri-plugin-single-instance = "2.3.2"
tauri = "2.8.5"
tauri-build = "2.4.1"
tauri-plugin-deep-link = "2.4.3"
tauri-plugin-dialog = "2.4.0"
tauri-plugin-http = "2.5.2"
tauri-plugin-opener = "2.5.0"
tauri-plugin-os = "2.3.1"
tauri-plugin-single-instance = "2.3.4"
tauri-plugin-updater = { version = "2.9.0", default-features = false, features = [
"rustls-tls",
"zip",
"rustls-tls",
"zip",
] }
tauri-plugin-window-state = "2.4.0"
tempfile = "3.20.0"
tempfile = "3.23.0"
theseus = { path = "packages/app-lib" }
thiserror = "2.0.12"
thiserror = "2.0.17"
tikv-jemalloc-ctl = "0.6.0"
tikv-jemallocator = "0.6.0"
tokio = "1.47.1"
@@ -162,23 +191,32 @@ tokio-stream = "0.1.17"
tokio-util = "0.7.16"
totp-rs = "5.7.0"
tracing = "0.1.41"
tracing-actix-web = "0.7.19"
tracing-actix-web = { version = "0.7.19", default-features = false }
tracing-ecs = "0.5.0"
tracing-error = "0.2.1"
tracing-subscriber = "0.3.19"
url = "2.5.4"
tracing-subscriber = "0.3.20"
typed-path = "0.12.0"
url = "2.5.7"
urlencoding = "2.1.3"
uuid = "1.17.0"
utoipa = { version = "5.4.0", features = ["actix_extras", "chrono", "decimal"] }
utoipa-actix-web = { version = "0.1.2" }
utoipa-swagger-ui = { version = "9.0.2", features = ["actix-web", "vendored"] }
uuid = "1.18.1"
validator = "0.20.0"
webp = { version = "0.3.0", default-features = false }
whoami = "1.6.0"
webp = { version = "0.3.1", default-features = false }
webview2-com = "0.38.0" # Should be updated in lockstep with wry
whoami = "1.6.1"
windows = "=0.61.3" # Locked on 0.61 until we can update windows-core to 0.62
windows-core = "=0.61.2" # Locked on 0.61 until webview2-com updates to 0.62
winreg = "0.55.0"
woothee = "0.13.0"
yaserde = "0.12.0"
zip = { version = "4.3.0", default-features = false, features = [
"bzip2",
"deflate",
"deflate64",
"zstd",
zbus = "5.11.0"
zip = { version = "6.0.0", default-features = false, features = [
"bzip2",
"deflate",
"deflate64",
"zstd",
] }
zxcvbn = "3.1.0"
@@ -213,23 +251,23 @@ redundant_clone = "warn"
redundant_feature_names = "warn"
redundant_type_annotations = "warn"
todo = "warn"
too_many_arguments = "allow"
uninlined_format_args = "warn"
unnested_or_patterns = "warn"
wildcard_dependencies = "warn"
[workspace.lints.rust]
# Turn warnings into errors by default
warnings = "deny"
[patch.crates-io]
wry = { git = "https://github.com/modrinth/wry", rev = "f2ce0b0" }
[profile.dev.package.sqlx-macros]
opt-level = 3
# Optimize for speed and reduce size on release builds
[profile.release]
opt-level = "s" # Optimize for binary size
strip = true # Remove debug symbols
lto = true # Enables link to optimizations
panic = "abort" # Strip expensive panic clean-up logic
codegen-units = 1 # Compile crates one after another so the compiler can optimize better
opt-level = "s" # Optimize for binary size
strip = true # Remove debug symbols
lto = true # Enables link to optimizations
panic = "abort" # Strip expensive panic clean-up logic
codegen-units = 1 # Compile crates one after another so the compiler can optimize better
[profile.dev.package.sqlx-macros]
opt-level = 3
# Specific profile for labrinth production builds
[profile.release-labrinth]
inherits = "release"
panic = "unwind" # Don't exit the whole app on panic in production

View File

@@ -16,19 +16,13 @@
# About Project
## **AstralRinth • Empowering Your Minecraft Adventure**
## **AstralRinth • Empowering Your Minecraft Experience**
Welcome to **AstralRinth (AR)** — a powerful fork of Modrinth, reimagined to enhance your Minecraft journey. Whether you're a GUI enthusiast or a developer building with Modrinths API, **Theseus Core** is your launchpad into a new era of Minecraft gameplay.
- *Recently, improved integration with the Git Astralium API has been added.*
**AstralRinth** — a powerful fork of Modrinth, reimagined to enhance your Minecraft journey. Whether you're a GUI enthusiast or a developer building with Modrinths API, **Theseus Core** is your launchpad into a new era of Minecraft gameplay.
## **About the Software**
**AstralRinth** is a dedicated branch of the Theseus project, focused on **offline authentication**, offering you more flexibility and control. Play Minecraft without the need for constant online verification — a user-first approach to modern modded gaming.
## **AR • Unlocking Minecraft's Boundless Horizon**
This unique fork introduces a **free trial Minecraft experience**, bypassing license checks while maintaining rich functionality. Currently includes:
**AstralRinth** is a dedicated branch of the Modrinth (a.k.a Theseus) project, focused on **offline authentication**, offering you more flexibility and control. Play Minecraft without the need for constant online verification — a user-first approach to modern modded gaming.
---
@@ -43,8 +37,8 @@ To install the launcher:
| Extension | OS | Notes |
| --------- | ------- | --------------------------------------------------------------------- |
| `.msi` | Windows | Supported on all recent Windows versions |
| `.dmg` | macOS | Works on Ventura, Sonoma, Sequoia _(may also support older versions)_ |
| `.msi` | Windows | Supported on all recent Windows versions (10/11) |
| `.dmg` | macOS | Works on Ventura, Sonoma, Sequoia, Tahoe _(may also support older versions)_ |
| `.deb` | Linux | Basic support; compatibility may vary by distribution |
### Installation Warnings
@@ -70,7 +64,7 @@ Avoid using builds with these prefixes — they may be unstable or experimental:
- No ads in the entire launcher.
- Custom `.svg` vector icons for a distinct UI.
- Improved compatibility with both licensed and pirate accounts.
- Use **official microsoft accounts** or **offline/pirate accounts** — login won't break.
- Use **official microsoft accounts** or **offline/pirate accounts**.
- Supports license-free access for testing or personal use.
- No dependence on official authentication services.
- Discord Rich Presence integration:
@@ -82,7 +76,9 @@ Avoid using builds with these prefixes — they may be unstable or experimental:
- Built-in update alerts for new versions posted on Git Astralium.
- Automatic download and installation capabilities.
- Database migration fixes, when error occurred (Interactive Mode) (Modrinth issue)
- ElyBy skin system integration (AuthLib / Java)
- Ely.by full integration
- The official account skin system is managed by ely.by
- Offline accounts must install AuthLib through the instance settings
---
@@ -90,15 +86,15 @@ Avoid using builds with these prefixes — they may be unstable or experimental:
To begin using AstralRinth:
1. **Download Your OS Version**
1. **Download Latest Release**
- Go to the [releases page](https://git.astralium.su/didirus/AstralRinth/releases)
- [How to choose a file](#downloadable-file-extensions)
- [How to choose a release](#installation-warnings)
2. **Log In**
2. **Log in or create new offline account**
- Use your official Mojang/Microsoft account, or test using a non-licensed account.
- Use your official Microsoft account (MSA), or test using a non-licensed account (Offline).
3. **Launch Minecraft**
- Start Minecraft from the launcher.
@@ -119,5 +115,5 @@ To begin using AstralRinth:
If you'd like to support development, you can donate via the following crypto wallets:
- BTC (Telegram): 14g6asNYzcUoaQtB8B2QGKabgEvn55wfLj
- TONCOIN (Telegram): UQAqUJ2_hVBI6k_gPyfp_jd-1K0OS61nIFPZuJWN9BwGAvKe
- Toncoin (TON): UQA5pGOJhIz9UAVEOh5t2ur1QVbNr_FC1eq9bOb3GwTgaiqk
- USDT (TON): UQA5pGOJhIz9UAVEOh5t2ur1QVbNr_FC1eq9bOb3GwTgaiqk

19
_typos.toml Normal file
View File

@@ -0,0 +1,19 @@
[files]
extend-exclude = [
"**/src/locales/",
"apps/frontend/",
"patches/",
"packages/utils/",
"packages/ui/",
"packages/blog/",
# contains licenses like `CC-BY-ND-4.0`
"packages/moderation/src/data/stages/license.ts",
# contains payment card IDs like `IY1VMST1MOXS` which are flagged
"apps/labrinth/src/queue/payouts/mod.rs",
]
[default.extend-words]
# Terms Of Use in `tou-link`
tou = "tou"
# Google Ad Manager
gam = "gam"

View File

@@ -13,11 +13,13 @@
"test": "vue-tsc --noEmit"
},
"dependencies": {
"@geometrically/minecraft-motd-parser": "^1.1.4",
"@modrinth/api-client": "workspace:^",
"@modrinth/assets": "workspace:*",
"@modrinth/ui": "workspace:*",
"@modrinth/utils": "workspace:*",
"@sentry/vue": "^8.27.0",
"@sfirew/minecraft-motd-parser": "^1.1.6",
"@tanstack/vue-query": "^5.90.7",
"@tauri-apps/api": "^2.5.0",
"@tauri-apps/plugin-dialog": "^2.2.1",
"@tauri-apps/plugin-http": "^2.5.0",
@@ -41,9 +43,9 @@
"vue-virtual-scroller": "v2.0.0-beta.8"
},
"devDependencies": {
"@modrinth/tooling-config": "workspace:*",
"@eslint/compat": "^1.1.1",
"@formatjs/cli": "^6.2.12",
"@modrinth/tooling-config": "workspace:*",
"@nuxt/eslint-config": "^0.5.6",
"@taijased/vue-render-tracker": "^1.0.7",
"@vitejs/plugin-vue": "^5.0.4",
@@ -56,6 +58,7 @@
"tailwindcss": "^3.4.4",
"typescript": "^5.5.4",
"vite": "^5.4.6",
"vue-component-type-helpers": "^3.1.8",
"vue-tsc": "^2.1.6"
},
"packageManager": "pnpm@9.4.0",

View File

@@ -1,9 +1,11 @@
<script setup>
import { AuthFeature, PanelVersionFeature, TauriModrinthClient } from '@modrinth/api-client'
import {
ArrowBigUpDashIcon,
ChangeSkinIcon,
CompassIcon,
DownloadIcon,
ExternalIcon,
HomeIcon,
LeftArrowIcon,
LibraryIcon,
@@ -14,69 +16,87 @@ import {
NewspaperIcon,
NotepadTextIcon,
PlusIcon,
RefreshCwIcon,
RestoreIcon,
RightArrowIcon,
ServerIcon,
SettingsIcon,
UserIcon,
WorldIcon,
XIcon,
} from '@modrinth/assets'
import {
Admonition,
Avatar,
Button,
ButtonStyled,
commonMessages,
NewsArticleCard,
NotificationPanel,
OverflowMenu,
ProgressSpinner,
provideModrinthClient,
provideNotificationManager,
providePageContext,
useDebugLogger,
} from '@modrinth/ui'
import { useLoading, useTheming } from '@/store/state'
// import ModrinthAppLogo from '@/assets/modrinth_app.svg?component'
import AccountsCard from '@/components/ui/AccountsCard.vue'
import InstanceCreationModal from '@/components/ui/InstanceCreationModal.vue'
import { get, set } from '@/helpers/settings.ts'
import Breadcrumbs from '@/components/ui/Breadcrumbs.vue'
import RunningAppBar from '@/components/ui/RunningAppBar.vue'
import SplashScreen from '@/components/ui/SplashScreen.vue'
import ErrorModal from '@/components/ui/ErrorModal.vue'
import ModrinthLoadingIndicator from '@/components/LoadingIndicatorBar.vue'
import { command_listener, warning_listener } from '@/helpers/events.js'
import { type } from '@tauri-apps/plugin-os'
import { debugAnalytics, initAnalytics, optOutAnalytics, trackEvent } from '@/helpers/analytics'
import { getCurrentWindow } from '@tauri-apps/api/window'
import { renderString } from '@modrinth/utils'
import { useQuery } from '@tanstack/vue-query'
import { getVersion } from '@tauri-apps/api/app'
import { invoke } from '@tauri-apps/api/core'
import { getCurrentWindow } from '@tauri-apps/api/window'
import { openUrl } from '@tauri-apps/plugin-opener'
import { type } from '@tauri-apps/plugin-os'
import { saveWindowState, StateFlags } from '@tauri-apps/plugin-window-state'
import { defineMessages, useVIntl } from '@vintl/vintl'
import { $fetch } from 'ofetch'
import { computed, onMounted, onUnmounted, provide, ref, watch } from 'vue'
import { computed, onMounted, onUnmounted, provide, ref } from 'vue'
import { RouterView, useRoute, useRouter } from 'vue-router'
import ModrinthLoadingIndicator from '@/components/LoadingIndicatorBar.vue'
import AccountsCard from '@/components/ui/AccountsCard.vue'
import Breadcrumbs from '@/components/ui/Breadcrumbs.vue'
import ErrorModal from '@/components/ui/ErrorModal.vue'
import FriendsList from '@/components/ui/friends/FriendsList.vue'
import IncompatibilityWarningModal from '@/components/ui/install_flow/IncompatibilityWarningModal.vue'
import InstallConfirmModal from '@/components/ui/install_flow/InstallConfirmModal.vue'
import { useInstall } from '@/store/install.js'
import { get_opening_command, initialize_state } from '@/helpers/state'
import { useFetch } from '@/helpers/fetch.js'
import NavButton from '@/components/ui/NavButton.vue'
import { cancelLogin, get as getCreds, login, logout } from '@/helpers/mr_auth.js'
import { get_user } from '@/helpers/cache.js'
import ModInstallModal from '@/components/ui/install_flow/ModInstallModal.vue'
import InstanceCreationModal from '@/components/ui/InstanceCreationModal.vue'
import AppSettingsModal from '@/components/ui/modal/AppSettingsModal.vue'
import AuthGrantFlowWaitModal from '@/components/ui/modal/AuthGrantFlowWaitModal.vue'
import ModInstallModal from '@/components/ui/install_flow/ModInstallModal.vue'
import NavButton from '@/components/ui/NavButton.vue'
import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue'
import RunningAppBar from '@/components/ui/RunningAppBar.vue'
import SplashScreen from '@/components/ui/SplashScreen.vue'
import URLConfirmModal from '@/components/ui/URLConfirmModal.vue'
import { useCheckDisableMouseover } from '@/composables/macCssFix.js'
import { debugAnalytics, initAnalytics, optOutAnalytics, trackEvent } from '@/helpers/analytics'
import { check_reachable } from '@/helpers/auth.js'
import { get_user } from '@/helpers/cache.js'
import { command_listener, warning_listener } from '@/helpers/events.js'
import { useFetch } from '@/helpers/fetch.js'
import { cancelLogin, get as getCreds, login, logout } from '@/helpers/mr_auth.ts'
import { list } from '@/helpers/profile.js'
import { getOS, isDev } from '@/helpers/utils.js'
import { get as getSettings, set as setSettings } from '@/helpers/settings.ts'
import { get_opening_command, initialize_state } from '@/helpers/state'
import {
getOS,
isDev
} from '@/helpers/utils.js'
import {
provideAppUpdateDownloadProgress
} from '@/providers/download-progress.ts'
import { useError } from '@/store/error.js'
import { useInstall } from '@/store/install.js'
import { useLoading, useTheming } from '@/store/state'
import { create_profile_and_install_from_file } from './helpers/pack'
import { generateSkinPreviews } from './helpers/rendering/batch-skin-renderer'
import { get_available_capes, get_available_skins } from './helpers/skins'
import { AppNotificationManager } from './providers/app-notifications'
// [AR] Feature
// [AR] Imports
import { get, set } from '@/helpers/settings.ts'
import { getRemote, updateState } from '@/helpers/update.js'
const themeStore = useTheming()
@@ -85,6 +105,20 @@ const notificationManager = new AppNotificationManager()
provideNotificationManager(notificationManager)
const { handleError, addNotification } = notificationManager
const tauriApiClient = new TauriModrinthClient({
userAgent: `modrinth/theseus/${getVersion()} (support@modrinth.com)`,
features: [
new AuthFeature({
token: async () => (await getCreds()).session,
}),
new PanelVersionFeature(),
],
})
provideModrinthClient(tauriApiClient)
providePageContext({
hierarchicalSidebarAvailable: ref(true),
showAds: ref(false),
})
const news = ref([])
const availableSurvey = ref(false)
@@ -109,23 +143,76 @@ const criticalErrorMessage = ref()
const isMaximized = ref(false)
const authUnreachableDebug = useDebugLogger('AuthReachableChecker')
const authServerQuery = useQuery({
queryKey: ['authServerReachability'],
queryFn: async () => {
await check_reachable()
authUnreachableDebug('Auth servers are reachable')
return true
},
refetchInterval: 5 * 60 * 1000, // 5 minutes
retry: false,
refetchOnWindowFocus: false,
})
const authUnreachable = computed(() => {
if (authServerQuery.isError.value && !authServerQuery.isLoading.value) {
console.warn('Failed to reach auth servers', authServerQuery.error.value)
return true
}
return false
})
onMounted(async () => {
await useCheckDisableMouseover()
await getRemote(false) // [AR] Check for updates
await useCheckDisableMouseover()
await getRemote(false) // [AR] Check for updates
document.querySelector('body').addEventListener('click', handleClick)
document.querySelector('body').addEventListener('auxclick', handleAuxClick)
})
onUnmounted(() => {
onUnmounted(async () => {
document.querySelector('body').removeEventListener('click', handleClick)
document.querySelector('body').removeEventListener('auxclick', handleAuxClick)
})
async function setupApp() {
const settings = await get()
const { formatMessage } = useVIntl()
const messages = defineMessages({
updateInstalledToastTitle: {
id: 'app.update.complete-toast.title',
defaultMessage: 'Version {version} was successfully installed!',
},
updateInstalledToastText: {
id: 'app.update.complete-toast.text',
defaultMessage: 'Click here to view the changelog.',
},
reloadToUpdate: {
id: 'app.update.reload-to-update',
defaultMessage: 'Reload to install update',
},
downloadUpdate: {
id: 'app.update.download-update',
defaultMessage: 'Download update',
},
downloadingUpdate: {
id: 'app.update.downloading-update',
defaultMessage: 'Downloading update ({percent}%)',
},
authUnreachableHeader: {
id: 'app.auth-servers.unreachable.header',
defaultMessage: 'Cannot reach authentication servers',
},
authUnreachableBody: {
id: 'app.auth-servers.unreachable.body',
defaultMessage:
'Minecraft authentication servers may be down right now. Check your internet connection and try again later.',
},
})
// [AR] Patched
async function setupApp() {
// [AR] Patched
const settings = await get()
settings.personalized_ads = false
settings.telemetry = false
await set(settings)
@@ -143,7 +230,8 @@ async function setupApp() {
toggle_sidebar,
developer_mode,
feature_flags,
} = await get()
pending_update_toast_for_version,
} = await getSettings()
if (default_page === 'Library') {
await router.push('/library')
@@ -170,17 +258,16 @@ async function setupApp() {
isMaximized.value = await getCurrentWindow().isMaximized()
})
// initAnalytics()
if (!telemetry) {
// [AR] Patched
if (!telemetry) {
console.info("[AR] • Telemetry disabled by default (Hard patched).")
optOutAnalytics()
}
if (!personalized_ads) {
console.info("[AR] • Personalized ads disabled by default (Hard patched).")
}
if (dev) debugAnalytics()
trackEvent('Launched', { version, dev, onboarded })
if (dev) debugAnalytics()
trackEvent('Launched', { version, dev, onboarded })
if (!dev) document.addEventListener('contextmenu', (event) => event.preventDefault())
@@ -199,23 +286,22 @@ async function setupApp() {
}),
)
/// [AR] Patch
// useFetch(
// `https://api.modrinth.com/appCriticalAnnouncement.json?version=${version}`,
// 'criticalAnnouncements',
// true,
// )
// .then((response) => response.json())
// .then((res) => {
// if (res && res.header && res.body) {
// criticalErrorMessage.value = res
// }
// })
// .catch(() => {
// console.log(
// `No critical announcement found at https://api.modrinth.com/appCriticalAnnouncement.json?version=${version}`,
// )
// })
useFetch(
`https://api.modrinth.com/appCriticalAnnouncement.json?version=${version}`,
'criticalAnnouncements',
true,
)
.then((response) => response.json())
.then((res) => {
if (res && res.header && res.body) {
criticalErrorMessage.value = res
}
})
.catch(() => {
console.log(
`No critical announcement found at https://api.modrinth.com/appCriticalAnnouncement.json?version=${version}`,
)
})
useFetch(`https://modrinth.com/news/feed/articles.json`, 'news', true)
.then((response) => response.json())
@@ -236,7 +322,6 @@ async function setupApp() {
})
get_opening_command().then(handleCommand)
// checkUpdates()
fetchCredentials()
try {
@@ -247,6 +332,12 @@ async function setupApp() {
console.warn('Failed to generate skin previews in app setup.', error)
}
if (pending_update_toast_for_version !== null) {
const settings = await getSettings()
settings.pending_update_toast_for_version = null
await setSettings(settings)
}
if (osType === 'windows') {
await processPendingSurveys()
} else {
@@ -276,7 +367,11 @@ const handleClose = async () => {
const router = useRouter()
router.afterEach((to, from, failure) => {
trackEvent('PageView', { path: to.path, fromPath: from.path, failed: failure })
trackEvent('PageView', {
path: to.path,
fromPath: from.path,
failed: failure,
})
})
const route = useRoute()
@@ -300,7 +395,7 @@ async function fetchCredentials() {
if (creds && creds.user_id) {
creds.user = await get_user(creds.user_id).catch(handleError)
}
credentials.value = creds
credentials.value = creds ?? null
}
async function signIn() {
@@ -347,19 +442,6 @@ const forceSidebar = computed(
() => route.path.startsWith('/browse') || route.path.startsWith('/project'),
)
const sidebarVisible = computed(() => sidebarToggled.value || forceSidebar.value)
// const showAd = computed(() => !(!sidebarVisible.value || hasPlus.value))
// watch(
// showAd,
// () => {
// if (!showAd.value) {
// hide_ads_window(true)
// } else {
// init_ads_window(true)
// }
// },
// { immediate: true },
// )
onMounted(() => {
invoke('show_window')
@@ -392,18 +474,10 @@ async function handleCommand(e) {
}
}
// const updateAvailable = ref(false)
// async function checkUpdates() {
// const update = await check()
// updateAvailable.value = !!update
// setTimeout(
// () => {
// checkUpdates()
// },
// 5 * 1000 * 60,
// )
// }
const appUpdateDownload = {
progress: ref(0),
version: ref(),
}
function handleClick(e) {
let target = e.target
@@ -478,24 +552,20 @@ async function openSurvey() {
onOpen: () => console.info('Opened user survey'),
onClose: () => {
console.info('Closed user survey')
// show_ads_window()
},
onSubmit: () => console.info('Active user survey submitted'),
}
try {
// hide_ads_window()
if (window.Tally?.openPopup) {
console.info(`Opening Tally popup for user survey (form ID: ${formId})`)
dismissSurvey()
window.Tally.openPopup(formId, popupOptions)
} else {
console.warn('Tally script not yet loaded')
// show_ads_window()
}
} catch (e) {
console.error('Error opening Tally popup:', e)
// show_ads_window()
}
console.info(`Found user survey to show with tally_id: ${formId}`)
@@ -549,12 +619,18 @@ async function processPendingSurveys() {
console.info('No user survey to show')
}
}
provideAppUpdateDownloadProgress(appUpdateDownload) // [AR Note] If delete this shit line -> SettingsModal will not work.
</script>
<template>
<SplashScreen v-if="!stateFailed" ref="splashScreen" data-tauri-drag-region />
<div id="teleports"></div>
<div v-if="stateInitialized" class="app-grid-layout experimental-styles-within relative">
<div
v-if="stateInitialized"
class="app-grid-layout experimental-styles-within relative"
:class="{ 'disable-advanced-rendering': !themeStore.advancedRendering }"
>
<Suspense>
<AppSettingsModal ref="settingsModal" />
</Suspense>
@@ -573,6 +649,13 @@ async function processPendingSurveys() {
<NavButton v-if="themeStore.featureFlags.worlds_tab" v-tooltip.right="'Worlds'" to="/worlds">
<WorldIcon />
</NavButton>
<NavButton
v-if="themeStore.featureFlags.servers_in_app"
v-tooltip.right="'Servers'"
to="/hosting/manage"
>
<ServerIcon />
</NavButton>
<NavButton
v-tooltip.right="'Discover content'"
to="/browse/modpack"
@@ -596,7 +679,7 @@ async function processPendingSurveys() {
>
<LibraryIcon />
</NavButton>
<div class="h-px w-6 mx-auto my-2 bg-button-bg"></div>
<div class="h-px w-6 mx-auto my-2 bg-surface-5"></div>
<suspense>
<QuickInstanceSwitcher />
</suspense>
@@ -608,48 +691,99 @@ async function processPendingSurveys() {
<PlusIcon />
</NavButton>
<div class="flex flex-grow"></div>
<!-- <NavButton v-if="updateAvailable" v-tooltip.right="'Install update'" :to="() => restartApp()">
<DownloadIcon />
</NavButton> -->
<Transition name="nav-button-animated">
<div
v-if="
availableUpdate &&
updateToastDismissed &&
!restarting &&
(finishedDownloading || metered)
"
>
<NavButton
v-tooltip.right="
formatMessage(
finishedDownloading
? messages.reloadToUpdate
: downloadProgress === 0
? messages.downloadUpdate
: messages.downloadingUpdate,
{
percent: downloadPercent,
},
)
"
:to="
finishedDownloading
? installUpdate
: downloadProgress > 0 && downloadProgress < 1
? showUpdateToast
: downloadAvailableUpdate
"
>
<ProgressSpinner
v-if="downloadProgress > 0 && downloadProgress < 1"
class="text-brand"
:progress="downloadProgress"
/>
<RefreshCwIcon v-else-if="finishedDownloading" class="text-brand" />
<DownloadIcon v-else class="text-brand" />
</NavButton>
</div>
</Transition>
<template v-if="updateState">
<NavButton class="neon-icon pulse" v-tooltip.right="'Settings'" :to="() => $refs.settingsModal.show()">
<SettingsIcon />
</NavButton>
<NavButton
class="neon-icon pulse"
v-tooltip.right="formatMessage(commonMessages.settingsLabel)"
:to="() => $refs.settingsModal.show()">
<SettingsIcon />
</NavButton>
</template>
<template v-else>
<NavButton v-tooltip.right="'Settings'" :to="() => $refs.settingsModal.show()">
<SettingsIcon />
</NavButton>
<NavButton
v-tooltip.right="formatMessage(commonMessages.settingsLabel)"
:to="() => $refs.settingsModal.show()">
<SettingsIcon />
</NavButton>
</template>
<ButtonStyled v-if="credentials" type="transparent" circular>
<OverflowMenu
:options="[
{
id: 'sign-out',
action: () => logOut(),
color: 'danger',
},
]"
direction="left"
>
<Avatar
:src="credentials.user.avatar_url"
:alt="credentials.user.username"
size="32px"
circle
/>
<template #sign-out> <LogOutIcon /> Sign out </template>
</OverflowMenu>
</ButtonStyled>
<NavButton v-else v-tooltip.right="'Sign in'" :to="() => signIn()">
<LogInIcon />
<template #label>Sign in</template>
<OverflowMenu
v-if="credentials"
v-tooltip.right="`Modrinth account`"
class="w-12 h-12 text-primary rounded-full flex items-center justify-center text-2xl transition-all bg-transparent hover:bg-button-bg hover:text-contrast border-0 cursor-pointer"
:options="[
{
id: 'view-profile',
action: () => openUrl('https://modrinth.com/user/' + credentials.user.username),
},
{
id: 'sign-out',
action: () => logOut(),
color: 'danger',
},
]"
placement="right-end"
>
<Avatar :src="credentials.user.avatar_url" alt="" size="32px" circle />
<template #view-profile>
<UserIcon />
<span class="inline-flex items-center gap-1">
Signed in as
<span class="inline-flex items-center gap-1 text-contrast font-semibold">
<Avatar :src="credentials.user.avatar_url" alt="" size="20px" circle />
{{ credentials.user.username }}
</span>
</span>
<ExternalIcon />
</template>
<template #sign-out> <LogOutIcon /> Sign out </template>
</OverflowMenu>
<NavButton v-else v-tooltip.right="'Sign in to a Modrinth account'" :to="() => signIn()">
<LogInIcon class="text-brand" />
</NavButton>
</div>
<div data-tauri-drag-region class="app-grid-statusbar bg-bg-raised h-[--top-bar-height] flex">
<div data-tauri-drag-region class="flex p-3">
<!-- <ModrinthAppLogo class="h-full w-auto text-contrast pointer-events-none" /> -->
<div class="flex items-center gap-1 ml-3">
<div data-tauri-drag-region class="flex items-center gap-1 ml-3">
<button
class="cursor-pointer p-0 m-0 text-contrast border-none outline-none bg-button-bg rounded-full flex items-center justify-center w-6 h-6 hover:brightness-75 transition-all"
@click="router.back()"
@@ -665,7 +799,7 @@ async function processPendingSurveys() {
</div>
<Breadcrumbs class="pt-[2px]" />
</div>
<section class="flex ml-auto items-center">
<section data-tauri-drag-region class="flex ml-auto items-center">
<ButtonStyled
v-if="!forceSidebar && themeStore.toggleSidebar"
:type="sidebarToggled ? 'standard' : 'transparent'"
@@ -706,7 +840,10 @@ async function processPendingSurveys() {
<div
v-if="stateInitialized"
class="app-contents experimental-styles-within"
:class="{ 'sidebar-enabled': sidebarVisible }"
:class="{
'sidebar-enabled': sidebarVisible,
'disable-advanced-rendering': !themeStore.advancedRendering,
}"
>
<div class="app-viewport flex-grow router-view">
<transition name="popup-survey">
@@ -754,16 +891,25 @@ async function processPendingSurveys() {
width: 'calc(100% - var(--right-bar-width))',
}"
></div>
<div
<Admonition
v-if="criticalErrorMessage"
class="m-6 mb-0 flex flex-col border-red bg-bg-red rounded-2xl border-2 border-solid p-4 gap-1 font-semibold text-contrast"
type="critical"
:header="criticalErrorMessage.header"
class="m-6 mb-0"
>
<h1 class="m-0 text-lg font-extrabold">{{ criticalErrorMessage.header }}</h1>
<div
class="markdown-body text-primary"
v-html="renderString(criticalErrorMessage.body ?? '')"
></div>
</div>
</Admonition>
<Admonition
v-if="authUnreachable"
type="warning"
:header="formatMessage(messages.authUnreachableHeader)"
class="m-6 mb-0"
>
{{ formatMessage(messages.authUnreachableBody) }}
</Admonition>
<RouterView v-slot="{ Component }">
<template v-if="Component">
<Suspense @pending="loading.startLoading()" @resolve="loading.stopLoading()">
@@ -782,20 +928,26 @@ async function processPendingSurveys() {
>
<div id="sidebar-teleport-target" class="sidebar-teleport-content"></div>
<div class="sidebar-default-content" :class="{ 'sidebar-enabled': sidebarVisible }">
<div class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid">
<h3 class="text-lg m-0">Playing as</h3>
<div
class="p-4 pr-1 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid"
>
<h3 class="text-base text-primary font-medium m-0">Playing as</h3>
<suspense>
<AccountsCard ref="accounts" mode="small" />
</suspense>
</div>
<div class="p-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid">
<div class="py-4 border-0 border-b-[1px] border-[--brand-gradient-border] border-solid">
<suspense>
<FriendsList :credentials="credentials" :sign-in="() => signIn()" />
<FriendsList
:credentials="credentials"
:sign-in="() => signIn()"
:refresh-credentials="fetchCredentials"
/>
</suspense>
</div>
<div v-if="news && news.length > 0" class="pt-4 flex flex-col items-center">
<h3 class="px-4 text-lg m-0 text-left w-full">News</h3>
<div class="px-4 pt-2 space-y-4 flex flex-col items-center w-full">
<div v-if="news && news.length > 0" class="p-4 pr-1 flex flex-col items-center">
<h3 class="text-base mb-4 text-primary font-medium m-0 text-left w-full">News</h3>
<div class="space-y-4 flex flex-col items-center w-full">
<NewsArticleCard
v-for="(item, index) in news"
:key="`news-${index}`"
@@ -810,16 +962,6 @@ async function processPendingSurveys() {
</div>
</div>
</div>
<template v-if="showAd">
<a
href="https://modrinth.plus?app"
class="absolute bottom-[250px] w-full flex justify-center items-center gap-1 px-4 py-3 text-purple font-medium hover:underline z-10"
target="_blank"
>
<ArrowBigUpDashIcon class="text-2xl" /> Upgrade to Modrinth+
</a>
<!-- <PromotionWrapper /> -->
</template>
</div>
</div>
<URLConfirmModal ref="urlModal" />
@@ -833,7 +975,6 @@ async function processPendingSurveys() {
<style lang="scss" scoped>
@import '../../../packages/assets/styles/neon-icon.scss';
@import '../../../packages/assets/styles/neon-text.scss';
.window-controls {
z-index: 20;
display: none;
@@ -926,10 +1067,6 @@ async function processPendingSurveys() {
grid-area: status;
}
[data-tauri-drag-region] {
-webkit-app-region: drag;
}
[data-tauri-drag-region-exclude] {
-webkit-app-region: no-drag;
}
@@ -972,24 +1109,9 @@ async function processPendingSurveys() {
--color-divider-dark: var(--brand-gradient-border);
}
// .app-sidebar::after {
// content: '';
// position: absolute;
// bottom: 250px;
// left: 0;
// right: 0;
// height: 5rem;
// background: var(--brand-gradient-fade-out-color);
// pointer-events: none;
// }
// .app-sidebar.has-plus::after {
// display: none;
// }
.app-sidebar::before {
content: '';
box-shadow: -15px 0 15px -15px rgba(0, 0, 0, 0.2) inset;
box-shadow: -15px 0 15px -15px rgba(0, 0, 0, 0.1) inset;
top: 0;
bottom: 0;
left: -2rem;
@@ -1014,9 +1136,10 @@ async function processPendingSurveys() {
right: calc(-1 * var(--left-bar-width));
bottom: calc(-1 * var(--left-bar-width));
border-radius: var(--radius-xl);
box-shadow:
1px 1px 15px rgba(0, 0, 0, 0.2) inset,
inset 1px 1px 1px rgba(255, 255, 255, 0.23);
box-shadow: 1px 1px 15px rgba(0, 0, 0, 0.1) inset;
border-color: var(--surface-5);
border-width: 1px;
border-style: solid;
pointer-events: none;
}
@@ -1051,6 +1174,84 @@ async function processPendingSurveys() {
opacity: 0;
transform: translateY(10rem) scale(0.8) scaleY(1.6);
}
.toast-enter-active {
transition: opacity 0.25s linear;
}
.toast-enter-from,
.toast-leave-to {
opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
.toast-enter-active,
.nav-button-animated-enter-active {
transition: all 0.5s cubic-bezier(0.15, 1.4, 0.64, 0.96);
}
.toast-leave-active,
.nav-button-animated-leave-active {
transition: all 0.25s ease;
}
.toast-enter-from {
scale: 0.5;
translate: 0 -10rem;
opacity: 0;
}
.toast-leave-to {
scale: 0.96;
translate: 20rem 0;
opacity: 0;
}
.nav-button-animated-enter-active {
position: relative;
}
.nav-button-animated-enter-active::before {
content: '';
inset: 0;
border-radius: 100vw;
background-color: var(--color-brand-highlight);
position: absolute;
animation: pop 0.5s ease-in forwards;
opacity: 0;
}
@keyframes pop {
0% {
scale: 0.5;
}
50% {
opacity: 0.5;
}
100% {
scale: 1.5;
}
}
.nav-button-animated-enter-from {
scale: 0.5;
translate: -2rem 0;
opacity: 0;
}
.nav-button-animated-leave-to {
scale: 0.75;
opacity: 0;
}
.fade-enter-active {
transition: 0.25s ease-in-out;
}
.fade-enter-from {
opacity: 0;
}
}
</style>
<style>
.mac {

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:serif="http://www.serif.com/" version="1.1" viewBox="0 0 1793 199">
<g>
<g id="Layer_1">
<g id="green" fill="var(--color-brand)">
<path d="M1184.1,166.6c-8,0-15.6-1-22.9-3.1s-13.1-4.6-17.4-7.6l8.5-16.9c4.3,2.7,9.4,5,15.3,6.8,5.9,1.8,11.9,2.7,17.8,2.7s12.1-.9,15.2-2.8c3.1-1.9,4.7-4.5,4.7-7.7s-1.1-4.6-3.2-6c-2.1-1.4-4.9-2.4-8.4-3.1-3.4-.7-7.3-1.4-11.5-2-4.2-.6-8.4-1.4-12.6-2.4-4.2-1-8-2.5-11.5-4.5-3.4-2-6.2-4.6-8.4-7.9-2.1-3.3-3.2-7.7-3.2-13.2s1.7-11.3,5.2-15.8c3.4-4.5,8.3-7.9,14.5-10.3,6.2-2.4,13.6-3.7,22.2-3.7s12.9.7,19.4,2.1c6.5,1.4,11.9,3.4,16.2,6.1l-8.5,16.9c-4.5-2.7-9.1-4.6-13.6-5.6-4.6-1-9.1-1.5-13.6-1.5-6.8,0-11.8,1-15,3-3.3,2-4.9,4.6-4.9,7.7s1.1,5,3.2,6.4c2.1,1.4,4.9,2.6,8.4,3.4,3.4.8,7.3,1.5,11.5,2,4.2.5,8.4,1.3,12.6,2.4,4.2,1.1,8,2.5,11.5,4.4,3.5,1.8,6.3,4.4,8.5,7.7,2.1,3.3,3.2,7.7,3.2,13s-1.8,11.1-5.3,15.5c-3.5,4.4-8.5,7.8-14.9,10.2-6.4,2.4-14.1,3.7-23,3.7Z"/>
<path d="M1291.1,166.6c-10.6,0-19.8-2.1-27.7-6.3-7.9-4.2-14-10-18.3-17.4-4.3-7.4-6.5-15.7-6.5-25.1s2.1-17.9,6.3-25.2c4.2-7.3,10-13,17.5-17.2,7.4-4.2,15.9-6.2,25.4-6.2s17.5,2,24.8,6.1c7.2,4,12.9,9.7,17.1,17.1,4.2,7.4,6.2,16,6.2,26s0,2,0,3.2c0,1.2-.2,2.3-.3,3.4h-79.3v-14.8h67.5l-8.7,4.6c.1-5.5-1-10.3-3.4-14.4-2.4-4.2-5.6-7.4-9.7-9.8-4.1-2.4-8.8-3.6-14.2-3.6s-10.2,1.2-14.3,3.6c-4.1,2.4-7.3,5.7-9.6,9.9-2.3,4.2-3.5,9.2-3.5,14.9v3.6c0,5.7,1.3,10.7,3.9,15.1,2.6,4.4,6.3,7.8,11,10.2,4.7,2.4,10.2,3.6,16.4,3.6s10.2-.8,14.4-2.5c4.3-1.7,8.1-4.3,11.4-7.8l11.9,13.7c-4.3,5-9.6,8.8-16.1,11.5-6.5,2.7-13.9,4-22.2,4Z"/>
<path d="M1357.2,165.3v-95.1h21.2v26.2l-2.5-7.7c2.8-6.4,7.3-11.3,13.4-14.6,6.1-3.3,13.7-5,22.9-5v21.2c-1-.2-1.8-.4-2.7-.4-.8,0-1.7,0-2.5,0-8.4,0-15.1,2.5-20.1,7.4-5,4.9-7.5,12.3-7.5,22v46.1h-22.3Z"/>
<path d="M1460,165.3l-40.8-95.1h23.2l35.1,83.9h-11.4l36.3-83.9h21.4l-40.8,95.1h-23Z"/>
<path d="M1579.6,166.6c-10.6,0-19.8-2.1-27.7-6.3-7.9-4.2-14-10-18.3-17.4-4.3-7.4-6.5-15.7-6.5-25.1s2.1-17.9,6.3-25.2c4.2-7.3,10-13,17.5-17.2,7.4-4.2,15.9-6.2,25.4-6.2s17.5,2,24.8,6.1c7.2,4,12.9,9.7,17.1,17.1,4.2,7.4,6.2,16,6.2,26s0,2,0,3.2c0,1.2-.2,2.3-.3,3.4h-79.3v-14.8h67.5l-8.7,4.6c.1-5.5-1-10.3-3.4-14.4-2.4-4.2-5.6-7.4-9.7-9.8-4.1-2.4-8.8-3.6-14.2-3.6s-10.2,1.2-14.3,3.6c-4.1,2.4-7.3,5.7-9.6,9.9-2.3,4.2-3.5,9.2-3.5,14.9v3.6c0,5.7,1.3,10.7,3.9,15.1,2.6,4.4,6.3,7.8,11,10.2,4.7,2.4,10.2,3.6,16.4,3.6s10.2-.8,14.4-2.5c4.3-1.7,8.1-4.3,11.4-7.8l11.9,13.7c-4.3,5-9.6,8.8-16.1,11.5-6.5,2.7-13.9,4-22.2,4Z"/>
<path d="M1645.7,165.3v-95.1h21.2v26.2l-2.5-7.7c2.8-6.4,7.3-11.3,13.4-14.6,6.1-3.3,13.7-5,22.9-5v21.2c-1-.2-1.8-.4-2.7-.4-.8,0-1.7,0-2.5,0-8.4,0-15.1,2.5-20.1,7.4-5,4.9-7.5,12.3-7.5,22v46.1h-22.3Z"/>
<path d="M1749.9,166.6c-8,0-15.6-1-22.9-3.1s-13.1-4.6-17.4-7.6l8.5-16.9c4.3,2.7,9.4,5,15.3,6.8,5.9,1.8,11.9,2.7,17.8,2.7s12.1-.9,15.2-2.8c3.1-1.9,4.7-4.5,4.7-7.7s-1.1-4.6-3.2-6c-2.1-1.4-4.9-2.4-8.4-3.1-3.4-.7-7.3-1.4-11.5-2-4.2-.6-8.4-1.4-12.6-2.4-4.2-1-8-2.5-11.5-4.5-3.4-2-6.2-4.6-8.4-7.9-2.1-3.3-3.2-7.7-3.2-13.2s1.7-11.3,5.2-15.8c3.4-4.5,8.3-7.9,14.5-10.3,6.2-2.4,13.6-3.7,22.2-3.7s12.9.7,19.4,2.1c6.5,1.4,11.9,3.4,16.2,6.1l-8.5,16.9c-4.5-2.7-9.1-4.6-13.6-5.6-4.6-1-9.1-1.5-13.6-1.5-6.8,0-11.8,1-15,3-3.3,2-4.9,4.6-4.9,7.7s1.1,5,3.2,6.4c2.1,1.4,4.9,2.6,8.4,3.4,3.4.8,7.3,1.5,11.5,2,4.2.5,8.4,1.3,12.6,2.4,4.2,1.1,8,2.5,11.5,4.4,3.5,1.8,6.3,4.4,8.5,7.7,2.1,3.3,3.2,7.7,3.2,13s-1.8,11.1-5.3,15.5c-3.5,4.4-8.5,7.8-14.9,10.2-6.4,2.4-14.1,3.7-23,3.7Z"/>
<g>
<path d="M9.8,143l63.4-38.1-5.8-15.3,18.1-18.6,22.9-4.9,6.6,8.2-10.6,10.7-9.2,2.9-6.6,6.8,3.2,9,6.5,6.9,9.2-2.5,6.6-7.2,14.3-4.5,4.3,9.6-14.8,18.1-24.8,7.8-11.1-12.4-63.6,38.2c-3-3.9-6.5-9.4-8.8-14.7ZM192.8,65.4l-50.4,13.6c2.8,7.4,3.7,11.7,4.5,16.5l50.3-13.6c-.8-5.4-2.2-10.8-4.4-16.5Z" fill-rule="evenodd"/>
<path d="M17.3,106.5c3.6,42.1,38.9,75.2,82,75.2s60.7-18.9,74-46.3l16.4,5.7c-15.8,34.1-50.3,57.9-90.4,57.9S3.6,158.2,0,106.5h17.3ZM.3,89.4C5.3,39.2,47.8,0,99.3,0s99.5,44.6,99.5,99.5-1.1,17.4-3.3,25.5l-16.3-5.7c1.6-6.5,2.4-13.1,2.4-19.8,0-45.4-36.9-82.3-82.3-82.3S22.6,48.7,17.6,89.4H.3Z" fill-rule="evenodd"/>
<path d="M99,51.6c-26.4,0-47.9,21.5-47.9,48s21.5,48,48,48,2.7,0,4-.2l4.8,16.8c-2.9.4-5.8.6-8.8.6-36,0-65.2-29.2-65.2-65.2S63.1,34.4,99,34.4s1.8,0,2.7,0l-2.7,17.1ZM118.6,37.4c26.4,8.3,45.6,33,45.6,62.2s-16.4,50.2-39.8,60l-4.8-16.7c16.2-7.7,27.4-24.2,27.4-43.3s-13-38.1-31.1-44.9l2.7-17.2Z" fill-rule="evenodd"/>
</g>
</g>
<g id="black" fill="currentColor">
<path d="M354.8,69.2c12,0,21.7,3.4,28.6,10.4,7,7.2,10.6,17.5,10.6,31.5v54.8h-22.4v-51.9c0-8.4-1.8-14.7-5.5-19-3.8-4.1-8.9-6.3-15.9-6.3s-13.6,2.5-18.1,7.3c-4.5,5-6.8,12.2-6.8,21.3v48.5h-22.4v-51.9c0-8.4-1.8-14.7-5.5-19-3.8-4.1-8.9-6.3-15.9-6.3s-13.6,2.5-18.1,7.3c-4.5,4.8-6.8,12-6.8,21.3v48.5h-22.4v-95.6h21.3v12.2c3.6-4.3,8.1-7.5,13.4-9.8,5.4-2.3,11.3-3.4,17.9-3.4s13.6,1.3,19.2,3.9c5.5,2.9,9.8,6.8,13.1,12,3.9-5,8.9-8.9,15.2-11.8,6.3-2.7,13.1-4.1,20.6-4.1ZM466,167.2c-9.7,0-18.4-2.1-26.1-6.3-7.6-4-13.8-10.1-18.1-17.5-4.5-7.3-6.6-15.7-6.6-25.2s2.1-17.9,6.6-25.2c4.3-7.4,10.6-13.4,18.1-17.4,7.7-4.1,16.5-6.3,26.1-6.3s18.6,2.1,26.3,6.3c7.7,4.1,13.8,10,18.3,17.4,4.3,7.3,6.4,15.7,6.4,25.2s-2.1,17.9-6.4,25.2c-4.5,7.5-10.6,13.4-18.3,17.5-7.7,4.1-16.5,6.3-26.3,6.3h0ZM466,148c8.2,0,15-2.7,20.4-8.2,5.4-5.5,8.1-12.7,8.1-21.7s-2.7-16.1-8.1-21.7c-5.4-5.5-12.2-8.2-20.4-8.2s-15,2.7-20.2,8.2c-5.4,5.5-8.1,12.7-8.1,21.7s2.7,16.1,8.1,21.7c5.2,5.5,12,8.2,20.2,8.2ZM631.5,33.1v132.8h-21.5v-12.3c-3.7,4.4-8.3,7.9-13.6,10.2-5.5,2.3-11.5,3.4-18.1,3.4s-17.4-2-24.7-6.1c-7.3-4.1-13.2-9.8-17.4-17.4-4.1-7.3-6.3-15.9-6.3-25.6s2.1-18.3,6.3-25.6c4.1-7.3,10-13.1,17.4-17.2,7.3-4.1,15.6-6.1,24.7-6.1s12.2,1.1,17.4,3.2c5.2,2.1,9.8,5.4,13.4,9.7v-49h22.4ZM581.1,148c5.4,0,10.2-1.3,14.5-3.8,4.3-2.3,7.7-5.9,10.2-10.4,2.5-4.5,3.8-9.8,3.8-15.7s-1.3-11.3-3.8-15.7c-2.5-4.5-5.9-8.1-10.2-10.6-4.3-2.3-9.1-3.6-14.5-3.6s-10.2,1.3-14.5,3.6c-4.3,2.5-7.7,6.1-10.2,10.6-2.5,4.5-3.8,9.8-3.8,15.7s1.3,11.3,3.8,15.7c2.5,4.5,5.9,8.1,10.2,10.4,4.3,2.5,9.1,3.8,14.5,3.8ZM681.6,84.3c6.4-10,17.7-15,34-15v21.3c-1.7-.3-3.4-.5-5.2-.5-8.8,0-15.6,2.5-20.4,7.5-4.8,5.2-7.3,12.5-7.3,22v46.4h-22.4v-95.6h21.3v14h0ZM734.1,70.3h22.4v95.6h-22.4v-95.6ZM745.4,54.6c-4.1,0-7.5-1.3-10.2-3.9-2.7-2.4-4.2-5.9-4.1-9.5,0-3.8,1.4-7,4.1-9.7,2.7-2.5,6.1-3.8,10.2-3.8s7.5,1.3,10.2,3.6c2.7,2.5,4.1,5.5,4.1,9.3s-1.3,7.2-3.9,9.8c-2.7,2.7-6.3,4.1-10.4,4.1ZM839.5,69.2c12,0,21.7,3.6,29,10.6,7.3,7,10.9,17.5,10.9,31.3v54.8h-22.4v-51.9c0-8.4-2-14.7-5.9-19-3.9-4.1-9.5-6.3-16.8-6.3s-14.7,2.5-19.5,7.3c-4.8,5-7.2,12.2-7.2,21.5v48.3h-22.4v-95.6h21.3v12.3c3.8-4.5,8.4-7.7,14-10,5.5-2.3,12-3.4,19-3.4ZM964.8,160.7c-2.8,2.2-6,3.9-9.5,4.8-3.9,1.1-7.9,1.6-12,1.6-10.6,0-18.6-2.7-24.3-8.2-5.7-5.5-8.6-13.4-8.6-24v-46h-15.7v-17.9h15.7v-21.8h22.4v21.8h25.6v17.9h-25.6v45.5c0,4.7,1.1,8.2,3.4,10.6,2.3,2.5,5.5,3.8,9.8,3.8s9.1-1.3,12.5-3.9l6.3,15.9ZM1036.9,69.2c12,0,21.7,3.6,29,10.6,7.3,7,10.9,17.5,10.9,31.3v54.8h-22.4v-51.9c0-8.4-2-14.7-5.9-19-3.9-4.1-9.5-6.3-16.8-6.3s-14.7,2.5-19.5,7.3c-4.8,5-7.2,12.2-7.2,21.5v48.3h-22.4V33.1h22.4v48.3c3.8-3.9,8.2-7,13.8-9.1,5.4-2,11.5-3,18.1-3Z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -2,6 +2,8 @@
@tailwind components;
@tailwind utilities;
@import '@modrinth/ui/src/styles/tailwind-utilities.css';
@font-face {
font-family: 'bundled-minecraft-font-mrapp';
font-style: normal;

View File

@@ -12,6 +12,7 @@ import {
} from '@modrinth/assets'
import { Button, DropdownSelect, injectNotificationManager } from '@modrinth/ui'
import { formatCategoryHeader } from '@modrinth/utils'
import { useStorage } from '@vueuse/core'
import dayjs from 'dayjs'
import { computed, ref } from 'vue'
@@ -121,40 +122,50 @@ const handleOptionsClick = async (args) => {
}
}
const state = useStorage(
`${props.label}-grid-display-state`,
{
group: 'Group',
sortBy: 'Name',
},
localStorage,
{ mergeDefaults: true },
)
const search = ref('')
const group = ref('Group')
const sortBy = ref('Name')
const filteredResults = computed(() => {
const { group = 'Group', sortBy = 'Name' } = state.value
const instances = props.instances.filter((instance) => {
return instance.name.toLowerCase().includes(search.value.toLowerCase())
})
if (sortBy.value === 'Name') {
if (sortBy === 'Name') {
instances.sort((a, b) => {
return a.name.localeCompare(b.name)
})
}
if (sortBy.value === 'Game version') {
if (sortBy === 'Game version') {
instances.sort((a, b) => {
return a.game_version.localeCompare(b.game_version, undefined, { numeric: true })
})
}
if (sortBy.value === 'Last played') {
if (sortBy === 'Last played') {
instances.sort((a, b) => {
return dayjs(b.last_played ?? 0).diff(dayjs(a.last_played ?? 0))
})
}
if (sortBy.value === 'Date created') {
if (sortBy === 'Date created') {
instances.sort((a, b) => {
return dayjs(b.date_created).diff(dayjs(a.date_created))
})
}
if (sortBy.value === 'Date modified') {
if (sortBy === 'Date modified') {
instances.sort((a, b) => {
return dayjs(b.date_modified).diff(dayjs(a.date_modified))
})
@@ -162,7 +173,7 @@ const filteredResults = computed(() => {
const instanceMap = new Map()
if (group.value === 'Loader') {
if (group === 'Loader') {
instances.forEach((instance) => {
const loader = formatCategoryHeader(instance.loader)
if (!instanceMap.has(loader)) {
@@ -171,7 +182,7 @@ const filteredResults = computed(() => {
instanceMap.get(loader).push(instance)
})
} else if (group.value === 'Game version') {
} else if (group === 'Game version') {
instances.forEach((instance) => {
if (!instanceMap.has(instance.game_version)) {
instanceMap.set(instance.game_version, [])
@@ -179,7 +190,7 @@ const filteredResults = computed(() => {
instanceMap.get(instance.game_version).push(instance)
})
} else if (group.value === 'Group') {
} else if (group === 'Group') {
instances.forEach((instance) => {
if (instance.groups.length === 0) {
instance.groups.push('None')
@@ -199,7 +210,7 @@ const filteredResults = computed(() => {
// For 'name', we intuitively expect the sorting to apply to the name of the group first, not just the name of the instance
// ie: Category A should come before B, even if the first instance in B comes before the first instance in A
if (sortBy.value === 'Name') {
if (sortBy === 'Name') {
const sortedEntries = [...instanceMap.entries()].sort((a, b) => {
// None should always be first
if (a[0] === 'None' && b[0] !== 'None') {
@@ -217,7 +228,7 @@ const filteredResults = computed(() => {
}
// default sorting would do 1.20.4 < 1.8.9 because 2 < 8
// localeCompare with numeric=true puts 1.8.9 < 1.20.4 because 8 < 20
if (group.value === 'Game version') {
if (group === 'Game version') {
const sortedEntries = [...instanceMap.entries()].sort((a, b) => {
return a[0].localeCompare(b[0], undefined, { numeric: true })
})
@@ -241,7 +252,7 @@ const filteredResults = computed(() => {
</div>
<DropdownSelect
v-slot="{ selected }"
v-model="sortBy"
v-model="state.sortBy"
name="Sort Dropdown"
class="max-w-[16rem]"
:options="['Name', 'Last played', 'Date created', 'Date modified', 'Game version']"
@@ -252,7 +263,7 @@ const filteredResults = computed(() => {
</DropdownSelect>
<DropdownSelect
v-slot="{ selected }"
v-model="group"
v-model="state.group"
class="max-w-[16rem]"
name="Group Dropdown"
:options="['Group', 'Loader', 'Game version', 'None']"

View File

@@ -571,12 +571,12 @@ onUnmounted(() => {
z-index: 11;
gap: 0.5rem;
padding: 1rem;
border: 1px solid var(--color-button-bg);
border: 1px solid var(--color-divider);
width: max-content;
user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
max-height: 98vh;
max-height: calc(100vh - 300px);
overflow-y: auto;
&::-webkit-scrollbar-track {
@@ -673,7 +673,7 @@ onUnmounted(() => {
text-align: left;
&.expanded {
border: 1px solid var(--color-button-bg);
border: 1px solid var(--color-divider);
padding: 1rem;
}
}

View File

@@ -24,7 +24,7 @@
</template>
<script setup>
import { onBeforeUnmount, onMounted, ref } from 'vue'
import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue'
const emit = defineEmits(['menu-closed', 'option-clicked'])
@@ -40,22 +40,27 @@ defineExpose({
item.value = passedItem
options.value = passedOptions
const menuWidth = contextMenu.value.clientWidth
const menuHeight = contextMenu.value.clientHeight
if (menuWidth + event.pageX >= window.innerWidth) {
left.value = event.pageX - menuWidth + 2 + 'px'
} else {
left.value = event.pageX - 2 + 'px'
}
if (menuHeight + event.pageY >= window.innerHeight) {
top.value = event.pageY - menuHeight + 2 + 'px'
} else {
top.value = event.pageY - 2 + 'px'
}
// show to get dimensions
shown.value = true
// then, adjust position if overflowing
nextTick(() => {
const menuWidth = contextMenu.value?.clientWidth || 200
const menuHeight = contextMenu.value?.clientHeight || 100
const minFromEdge = 10
if (event.pageX + menuWidth + minFromEdge >= window.innerWidth) {
left.value = Math.max(minFromEdge, event.pageX - menuWidth - minFromEdge) + 'px'
} else {
left.value = event.pageX + minFromEdge + 'px'
}
if (event.pageY + menuHeight + minFromEdge >= window.innerHeight) {
top.value = Math.max(minFromEdge, event.pageY - menuHeight - minFromEdge) + 'px'
} else {
top.value = event.pageY + minFromEdge + 'px'
}
})
},
})
@@ -114,7 +119,7 @@ onBeforeUnmount(() => {
background-color: var(--color-raised-bg);
border-radius: var(--radius-md);
box-shadow: var(--shadow-floating);
border: 1px solid var(--color-button-bg);
border: 1px solid var(--color-divider);
margin: 0;
position: fixed;
z-index: 1000000;
@@ -158,7 +163,7 @@ onBeforeUnmount(() => {
}
.divider {
border: 1px solid var(--color-button-bg);
border: 1px solid var(--color-divider);
margin: var(--gap-sm);
pointer-events: none;
}

View File

@@ -19,7 +19,7 @@ import { install } from '@/helpers/profile.js'
import { cancel_directory_change } from '@/helpers/settings.ts'
import { handleSevereError } from '@/store/error.js'
// [AR] Feature
// [AR] Imports
import { applyMigrationFix } from '@/helpers/utils.js'
import { restartApp } from '@/helpers/utils.js'
@@ -29,7 +29,6 @@ const errorModal = ref()
const error = ref()
const closable = ref(true)
const errorCollapsed = ref(false)
const language = ref('en')
const migrationFixSuccess = ref(null) // null | true | false
const migrationFixCallbackModel = ref()
@@ -79,7 +78,7 @@ defineExpose({
supportLink.value = 'https://support.modrinth.com'
metadata.value.profilePath = context.profilePath
} else if (source === 'state_init') {
title.value = 'Error initializing Modrinth App'
title.value = 'Error initializing AstralRinth App'
errorType.value = 'state_init'
supportLink.value = 'https://support.modrinth.com'
} else {
@@ -158,10 +157,6 @@ async function copyToClipboard(text) {
}, 3000)
}
function toggleLanguage() {
language.value = language.value === 'en' ? 'ru' : 'en'
}
async function onApplyMigrationFix(eol) {
console.log(`[AR] • Attempting to apply migration ${eol.toUpperCase()} fix`)
try {
@@ -191,7 +186,7 @@ async function onApplyMigrationFix(eol) {
<template v-if="metadata.network">
<h3>Network issues</h3>
<p>
It looks like there were issues with the Modrinth App connecting to Microsoft's
It looks like there were issues with the AstralRinth App connecting to Microsoft's
servers. This is often the result of a poor connection, so we recommend trying again
to see if it works. If issues continue to persist, follow the steps in
<a
@@ -205,7 +200,7 @@ async function onApplyMigrationFix(eol) {
<template v-else-if="metadata.hostsFile">
<h3>Network issues</h3>
<p>
The Modrinth App tried to connect to Microsoft / Xbox / Minecraft services, but the
The AstralRinth App tried to connect to Microsoft / Xbox / Minecraft services, but the
remote server rejected the connection. This may indicate that these services are
blocked by the hosts file. Please visit
<a
@@ -244,7 +239,7 @@ async function onApplyMigrationFix(eol) {
<template v-if="metadata.readOnly">
<h3>Change directory permissions</h3>
<p>
It looks like the Modrinth App is unable to write to the directory you selected.
It looks like the AstralRinth App is unable to write to the directory you selected.
Please adjust the permissions of the directory and try again or cancel the directory
change.
</p>
@@ -258,7 +253,7 @@ async function onApplyMigrationFix(eol) {
</template>
<template v-else>
<p>
The Modrinth App is unable to migrate to the new directory you selected. Please
The AstralRinth App is unable to migrate to the new directory you selected. Please
contact support for help or cancel the directory change.
</p>
</template>
@@ -288,7 +283,7 @@ async function onApplyMigrationFix(eol) {
</div>
<template v-else-if="errorType === 'state_init'">
<p>
Modrinth App failed to load correctly. This may be because of a corrupted file, or
AstralRinth App failed to load correctly. This may be because of a corrupted file, or
because the app is missing crucial files.
</p>
<p>You may be able to fix it through one of the following ways:</p>
@@ -298,7 +293,7 @@ async function onApplyMigrationFix(eol) {
</ul>
</template>
<template v-else-if="errorType === 'no_loader_version'">
<p>The Modrinth App failed to find the loader version for this instance.</p>
<p>The AstralRinth App failed to find the loader version for this instance.</p>
<p>To resolve this, you need to repair the instance. Click the button below to do so.</p>
<div class="cta-button">
<button class="btn btn-primary" :disabled="loadingRepair" @click="repairInstance">
@@ -351,70 +346,40 @@ async function onApplyMigrationFix(eol) {
</Collapsible>
</div>
<template v-if="errorType === 'state_init'">
<div class="notice">
<div class="flex justify-between items-center">
<h3 v-if="language === 'en'" class="notice__title"> Migration Issue Important Notice </h3>
<h3 v-if="language === 'ru'" class="notice__title"> Проблема миграции Важное уведомление </h3>
<ButtonStyled>
<button @click="toggleLanguage">
{{ language === 'en' ? '📖 Русский' : '📖 English' }}
</button>
</ButtonStyled>
</div>
<p v-if="language === 'en'" class="notice__text">
We're experiencing an issue with our database migration system due to differences in how different operating systems handle line endings. This might cause problems with our app's functionality.
</p>
<p v-if="language === 'en'" class="notice__text">
<strong>What's happening?</strong> When we build our app, we use a system that checks the integrity of our database migrations. However, this system can get confused when it encounters different line endings (like CRLF vs LF) used by different operating systems. This can lead to errors and make our app unusable.
</p>
<p v-if="language === 'en'" class="notice__text">
<strong>Why is this happening?</strong> This issue is caused by a combination of factors, including different operating systems handling line endings differently, Git's line ending conversion settings, and our app's build process.
</p>
<p v-if="language === 'en'" class="notice__text">
<strong>What are we doing about it?</strong> We're working to resolve this issue and ensure that our app works smoothly for all users. In the meantime, we apologize for any inconvenience this might cause and appreciate your patience and understanding.
</p>
<p v-if="language === 'ru'" class="notice__text">
Мы сталкиваемся с проблемой в нашей системе миграции базы данных из-за различий в том, как разные операционные системы обрабатывают окончания строк. Это может вызвать проблемы с функциональностью нашего приложения.
</p>
<p v-if="language === 'ru'" class="notice__text">
<strong>Что происходит?</strong> Когда мы строим наше приложение, мы используем систему, которая проверяет целостность наших миграций базы данных. Однако эта система может сбиваться, когда сталкивается с различными окончаниями строк (например, CRLF против LF), используемыми разными операционными системами. Это может привести к ошибкам и сделать наше приложение неработоспособным.
</p>
<p v-if="language === 'ru'" class="notice__text">
<strong>Почему это происходит?</strong> Эта проблема вызвана сочетанием факторов, включая различную обработку окончаний строк разными операционными системами, настройки преобразования окончаний строк в Git и процесс сборки нашего приложения.
</p>
<p v-if="language === 'ru'" class="notice__text">
<strong>Что мы с этим делаем?</strong> Мы работаем над решением этой проблемы и обеспечением бесперебойной работы нашего приложения для всех пользователей. В это время мы извиняемся за возможные неудобства и благодарим вас за терпение и понимание.
</p>
</div>
<h2 class="text-lg font-bold text-contrast">
<template v-if="language === 'en'">Possible fix in real time:</template>
<template v-if="language === 'ru'">Возможное исправление в реальном времени:</template>
</h2>
<h2> Migration Issue Important Notice</h2>
<p>We've detected a problem with our database migration system caused by inconsistent line endings between operating systems (Windows vs. macOS/Linux). This may affect app stability.</p>
<p><strong>Whats happening?</strong> Our migration validator misreads modified migrations when line endings differ (CRLF ↔ LF), which can make the app unusable.</p>
<p><strong>Why?</strong> Gits automatic line-ending conversions and OS differences can cause these inconsistencies during builds.</p>
<p><strong>Whats next?</strong> Were working on a permanent fix. In the meantime, you can apply one of the quick fixes below depending on your system.</p>
<h3>Do I need to apply a fix now?</h3>
<div>
<p class="notice__text">
If you're encountering an error while applying migrations, such as "Error while applying migrations: migration XXXXXXXXXX was previously applied but has been modified", or a similar issue with migration, the following actions might help:
</p>
<p>If none of the above steps help, you can try saving a copy of the file <code>app.db</code> to a safe location, such as <code>%appdata%\Roaming\AstralRinthApp</code>
on Windows or <code>~/Library/Application Support/AstralRinthApp</code> on macOS, then deleting the original file and letting the app re-create the database file.
Note that this may cause data loss inside the app, so make sure to back up your launcher data before applying this fixes.
</p>
</div>
<div class="flex justify-between">
<ol class="flex flex-col gap-3">
<li>
<ButtonStyled class="neon-button neon">
<button
:title="language === 'en'
? 'Convert all line endings in migration files to LF (Unix-style: \\n)'
: 'Преобразовать все окончания строк в файлах миграций в LF (Unix-стиль: \\n)'"
aria-label="LF"
title="Convert all line endings in migration files to LF (Unix-style: \\n)"
@click="onApplyMigrationFix('lf')"
>
{{ language === 'en' ? 'Apply LF Migration Fix' : 'Применить исправление миграции LF' }}
Apply fix for Unix like systems (Debian, Ubuntu, macOS and others)
</button>
</ButtonStyled>
</li>
<li>
<ButtonStyled class="neon-button neon">
<button
:title="language === 'en'
? 'Convert all line endings in migration files to CRLF (Windows-style: \\r\\n)'
: 'Преобразовать все окончания строк в файлах миграций в CRLF (Windows-стиль: \\r\\n)'"
aria-label="CRLF"
title="Convert all line endings in migration files to CRLF (Windows-style: \\r\\n)"
@click="onApplyMigrationFix('crlf')"
>
{{ language === 'en' ? 'Apply CRLF Migration Fix' : 'Применить исправление миграции CRLF' }}
Apply fix for Windows
</button>
</ButtonStyled>
</li>
@@ -426,37 +391,25 @@ async function onApplyMigrationFix(eol) {
</ModalWrapper>
<ModalWrapper
ref="migrationFixCallbackModel"
:header="language === 'en'
? '💡 Migration fix report'
: '💡 Отчет об исправлении миграции'"
header="💡 Migration fix report"
:closable="closable">
<div class="modal-body">
<h2 class="text-lg font-bold text-contrast space-y-2">
<template v-if="migrationFixSuccess === true">
<p class="flex items-center gap-2 neon-text">
{{ language === 'en'
? 'The migration fix has been applied successfully. Please restart the launcher and try to log in to the game :)'
: 'Исправление миграции успешно применено. Пожалуйста, перезапустите лаунчер и попробуйте снова авторизоваться в игре :)' }}
The migration fix has been applied successfully. Please restart the launcher and try to log in to the game :)
</p>
<p class="mt-2 text-sm neon-text">
{{ language === 'en'
? 'If the problem persists, please try the other fix.'
: 'Если проблема сохраняется, пожалуйста, попробуйте другой способ.' }}
If the problem persists, please try the other fix.
</p>
</template>
<template v-else-if="migrationFixSuccess === false">
<p class="flex items-center gap-2 neon-text">
{{ language === 'en'
? 'The migration fix failed or had no effect.'
: 'Исправление миграции не было успешно применено или не имело эффекта.' }}
The migration fix failed or had no effect.
</p>
<p class="mt-2 text-sm neon-text">
{{ language === 'en'
? 'If the problem persists, please try the other fix.'
: 'Если проблема сохраняется, пожалуйста, попробуйте другой способ.' }}
If the problem persists, please try the other fix.
</p>
</template>
</h2>
@@ -479,6 +432,13 @@ async function onApplyMigrationFix(eol) {
@import '../../../../../packages/assets/styles/neon-button.scss';
@import '../../../../../packages/assets/styles/neon-text.scss';
code {
background: linear-gradient(90deg, #005eff, #00cfff);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
}
.cta-button {
display: flex;
align-items: center;

View File

@@ -34,7 +34,7 @@
</div>
<div class="input-row">
<p class="input-label">Game version</p>
<div class="versions">
<div class="flex gap-4 items-center">
<multiselect
v-model="game_version"
class="selector"
@@ -45,19 +45,14 @@
open-direction="top"
:show-labels="false"
/>
<Checkbox
v-if="showAdvanced"
v-model="showSnapshots"
class="filter-checkbox"
label="Include snapshots"
/>
<Checkbox v-model="showSnapshots" class="shrink-0" label="Show all versions" />
</div>
</div>
<div v-if="showAdvanced && loader !== 'vanilla'" class="input-row">
<div v-if="loader !== 'vanilla'" class="input-row">
<p class="input-label">Loader version</p>
<Chips v-model="loader_version" :items="['stable', 'latest', 'other']" />
</div>
<div v-if="showAdvanced && loader_version === 'other' && loader !== 'vanilla'">
<div v-if="loader_version === 'other' && loader !== 'vanilla'">
<div v-if="game_version" class="input-row">
<p class="input-label">Select version</p>
<multiselect
@@ -75,10 +70,6 @@
</div>
</div>
<div class="input-group push-right">
<Button @click="toggle_advanced">
<CodeIcon />
{{ showAdvanced ? 'Hide advanced' : 'Show advanced' }}
</Button>
<Button @click="hide()">
<XIcon />
Cancel
@@ -110,7 +101,7 @@
placeholder="Path to launcher"
@change="setPath"
/>
<Button class="r-btn" @click="() => (selectedLauncherPath = '')">
<Button class="r-btn" @click="() => (selectedProfileType.path = '')">
<XIcon />
</Button>
</div>
@@ -207,7 +198,6 @@
<script setup>
import {
CodeIcon,
FolderOpenIcon,
FolderSearchIcon,
InfoIcon,
@@ -247,7 +237,6 @@ const loader_version = ref('stable')
const specified_loader_version = ref('')
const icon = ref(null)
const display_icon = ref(null)
const showAdvanced = ref(false)
const creating = ref(false)
const showSnapshots = ref(false)
const creationType = ref('custom')
@@ -259,7 +248,6 @@ defineExpose({
specified_loader_version.value = ''
profile_name.value = ''
creating.value = false
showAdvanced.value = false
showSnapshots.value = false
loader.value = 'vanilla'
loader_version.value = 'stable'
@@ -434,10 +422,6 @@ const selectable_versions = computed(() => {
return []
})
const toggle_advanced = () => {
showAdvanced.value = !showAdvanced.value
}
const openFile = async () => {
const newProject = await open({ multiple: false })
if (!newProject) return
@@ -579,12 +563,6 @@ const next = async () => {
font-style: italic;
}
.versions {
display: flex;
flex-direction: row;
gap: 1rem;
}
:deep(button.checkbox) {
border: none;
}

View File

@@ -6,6 +6,7 @@
:class="{
'router-link-active': isPrimary && isPrimary(route),
'subpage-active': isSubpage && isSubpage(route),
disabled: disabled,
}"
class="w-12 h-12 text-primary rounded-full flex items-center justify-center text-2xl transition-all bg-transparent hover:bg-button-bg hover:text-contrast"
>
@@ -15,6 +16,7 @@
v-else
v-bind="$attrs"
class="button-animation border-none text-primary cursor-pointer w-12 h-12 rounded-full flex items-center justify-center text-2xl transition-all bg-transparent hover:bg-button-bg hover:text-contrast"
:disabled="disabled"
@click="to"
>
<slot />
@@ -29,12 +31,18 @@ const route = useRoute()
type RouteFunction = (route: RouteLocationNormalizedLoaded) => boolean
defineProps<{
to: (() => void) | string
isPrimary?: RouteFunction
isSubpage?: RouteFunction
highlightOverride?: boolean
}>()
withDefaults(
defineProps<{
to: (() => void) | string
isPrimary?: RouteFunction
isSubpage?: RouteFunction
highlightOverride?: boolean
disabled?: boolean
}>(),
{
disabled: false,
},
)
defineOptions({
inheritAttrs: false,

View File

@@ -1,6 +1,12 @@
<template>
<div class="progress-bar">
<div class="progress-bar__fill" :style="{ width: `${progress}%` }"></div>
<div
class="progress-bar__fill"
:style="{
width: `${progress}%`,
'background-color': error ? 'var(--color-red)' : 'var(--color-brand)',
}"
></div>
</div>
</template>
@@ -13,6 +19,10 @@ defineProps({
return value >= 0 && value <= 100
},
},
error: {
type: Boolean,
default: false,
},
})
</script>
@@ -27,7 +37,6 @@ defineProps({
.progress-bar__fill {
height: 100%;
background-color: var(--color-brand);
transition: width 0.3s;
}
</style>

View File

@@ -69,7 +69,7 @@ onUnmounted(() => {
<SpinnerIcon class="animate-spin w-4 h-4" />
</div>
</NavButton>
<div v-if="recentInstances.length > 0" class="h-px w-6 mx-auto my-2 bg-button-bg"></div>
<div v-if="recentInstances.length > 0" class="h-px w-6 mx-auto my-2 bg-divider"></div>
</template>
<style scoped lang="scss"></style>

View File

@@ -177,8 +177,8 @@ const currentLoadingBars = ref([])
const refreshInfo = async () => {
const currentLoadingBarCount = currentLoadingBars.value.length
currentLoadingBars.value = Object.values(await progress_bars_list().catch(handleError)).map(
(x) => {
currentLoadingBars.value = Object.values(await progress_bars_list().catch(handleError))
.map((x) => {
if (x.bar_type.type === 'java_download') {
x.title = 'Downloading Java ' + x.bar_type.version
}
@@ -190,8 +190,8 @@ const refreshInfo = async () => {
}
return x
},
)
})
.filter((bar) => bar?.bar_type?.type !== 'launcher_update')
currentLoadingBars.value.sort((a, b) => {
if (a.loading_bar_uuid < b.loading_bar_uuid) {
@@ -293,7 +293,7 @@ onBeforeUnmount(() => {
align-items: center;
gap: 0.5rem;
border-radius: var(--radius-md);
border: 1px solid var(--color-button-bg);
border: 1px solid var(--color-divider);
padding: var(--gap-sm) var(--gap-lg);
}
@@ -356,7 +356,7 @@ onBeforeUnmount(() => {
gap: 1rem;
overflow: auto;
transition: all 0.2s ease-in-out;
border: 1px solid var(--color-button-bg);
border: 1px solid var(--color-divider);
&.hidden {
transform: translateY(-100%);
@@ -454,7 +454,7 @@ onBeforeUnmount(() => {
flex-direction: column;
overflow: auto;
transition: all 0.2s ease-in-out;
border: 1px solid var(--color-button-bg);
border: 1px solid var(--color-divider);
padding: var(--gap-md);
&.hidden {

View File

@@ -1,10 +1,14 @@
<template>
<div v-if="!hidden" class="splash-screen dark" :class="{ 'fade-out': doneLoading }">
<div v-if="os !== 'MacOS'" class="app-buttons">
<button class="btn icon-only transparent" icon-only @click="() => getCurrent().minimize()">
<button
class="btn icon-only transparent"
icon-only
@click="() => getCurrentWindow().minimize()"
>
<MinimizeIcon />
</button>
<button class="btn icon-only transparent" @click="() => getCurrent().toggleMaximize()">
<button class="btn icon-only transparent" @click="() => getCurrentWindow().toggleMaximize()">
<MaximizeIcon />
</button>
<button class="btn icon-only transparent" @click="handleClose">
@@ -110,7 +114,7 @@ watch(loading, (newValue) => {
setTimeout(() => {
hidden.value = true
loading.setEnabled(true)
}, 250)
}, 50)
}
}
})
@@ -131,9 +135,6 @@ loading_listener(async (e) => {
if (e.event.type === 'directory_move') {
loadingProgress.value = 100 * (e.fraction ?? 1)
message.value = 'Updating app directory...'
} else if (e.event.type === 'launcher_update') {
loadingProgress.value = 100 * (e.fraction ?? 1)
message.value = 'Updating Modrinth App...'
} else if (e.event.type === 'checking_for_updates') {
loadingProgress.value = 100 * (e.fraction ?? 1)
message.value = 'Checking for updates...'

View File

@@ -0,0 +1,131 @@
<script setup lang="ts">
import { DownloadIcon, ExternalIcon, RefreshCwIcon, SpinnerIcon, XIcon } from '@modrinth/assets'
import { ButtonStyled, commonMessages, ProgressBar } from '@modrinth/ui'
import { formatBytes } from '@modrinth/utils'
import { defineMessages, useVIntl } from '@vintl/vintl'
import { ref } from 'vue'
import { injectAppUpdateDownloadProgress } from '@/providers/download-progress.ts'
const { formatMessage } = useVIntl()
const emit = defineEmits<{
(e: 'close' | 'restart' | 'download'): void
}>()
defineProps<{
version: string
size: number | null
metered: boolean
}>()
const downloading = ref(false)
const { progress } = injectAppUpdateDownloadProgress()
function download() {
emit('download')
downloading.value = true
}
const messages = defineMessages({
title: {
id: 'app.update-toast.title',
defaultMessage: 'Update available',
},
body: {
id: 'app.update-toast.body',
defaultMessage:
'Modrinth App v{version} is ready to install! Reload to update now, or automatically when you close Modrinth App.',
},
reload: {
id: 'app.update-toast.reload',
defaultMessage: 'Reload',
},
download: {
id: 'app.update-toast.download',
defaultMessage: 'Download ({size})',
},
downloading: {
id: 'app.update-toast.downloading',
defaultMessage: 'Downloading...',
},
changelog: {
id: 'app.update-toast.changelog',
defaultMessage: 'Changelog',
},
meteredBody: {
id: 'app.update-toast.body.metered',
defaultMessage: `Modrinth App v{version} is available now! Since you're on a metered network, we didn't automatically download it.`,
},
downloadCompleteTitle: {
id: 'app.update-toast.title.download-complete',
defaultMessage: 'Download complete',
},
downloadedBody: {
id: 'app.update-toast.body.download-complete',
defaultMessage: `Modrinth App v{version} has finished downloading. Reload to update now, or automatically when you close Modrinth App.`,
},
})
</script>
<template>
<div
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]"
:class="{
'download-complete': progress === 1,
}"
>
<div class="flex min-w-[25rem] gap-4">
<h2 class="whitespace-nowrap text-base text-contrast font-semibold m-0 grow">
{{
formatMessage(metered && progress === 1 ? messages.downloadCompleteTitle : messages.title)
}}
</h2>
<ButtonStyled size="small" circular>
<button v-tooltip="formatMessage(commonMessages.closeButton)" @click="emit('close')">
<XIcon />
</button>
</ButtonStyled>
</div>
<p class="text-sm mt-2 mb-0">
{{
formatMessage(
metered
? progress === 1
? messages.downloadedBody
: messages.meteredBody
: messages.body,
{ version },
)
}}
</p>
<p
v-if="metered && progress < 1"
class="text-sm text-secondary mt-2 mb-0 flex items-center gap-1"
>
<template v-if="progress > 0">
<ProgressBar :progress="progress" class="max-w-[unset]" />
</template>
</p>
<div class="flex gap-2 mt-4">
<ButtonStyled color="brand">
<button v-if="metered && progress < 1" :disabled="downloading" @click="download">
<SpinnerIcon v-if="downloading" class="animate-spin" />
<DownloadIcon v-else />
{{
formatMessage(downloading ? messages.downloading : messages.download, {
size: formatBytes(size ?? 0),
})
}}
</button>
<button v-else @click="emit('restart')">
<RefreshCwIcon /> {{ formatMessage(messages.reload) }}
</button>
</ButtonStyled>
<ButtonStyled>
<a href="https://modrinth.com/news/changelog?filter=app">
{{ formatMessage(messages.changelog) }} <ExternalIcon />
</a>
</ButtonStyled>
</div>
</div>
</template>

View File

@@ -1,41 +1,41 @@
<script setup lang="ts">
import {
MailIcon,
MoreVerticalIcon,
SettingsIcon,
TrashIcon,
UserPlusIcon,
XIcon,
} from '@modrinth/assets'
import { MailIcon, SendIcon, UserIcon, UserPlusIcon, XIcon } from '@modrinth/assets'
import {
Avatar,
ButtonStyled,
commonMessages,
injectNotificationManager,
OverflowMenu,
useRelativeTime,
} from '@modrinth/ui'
import type { Dayjs } from 'dayjs'
import dayjs from 'dayjs'
import { defineMessages, useVIntl } from '@vintl/vintl'
import { IntlFormatted } from '@vintl/vintl/components'
import { computed, onUnmounted, ref, watch } from 'vue'
import ContextMenu from '@/components/ui/ContextMenu.vue'
import FriendsSection from '@/components/ui/friends/FriendsSection.vue'
import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue'
import { get_user_many } from '@/helpers/cache'
import { friend_listener } from '@/helpers/events'
import { add_friend, friend_statuses, friends, remove_friend } from '@/helpers/friends'
import {
add_friend,
friends,
type FriendWithUserData,
remove_friend,
transformFriends,
} from '@/helpers/friends.ts'
import type { ModrinthCredentials } from '@/helpers/mr_auth'
const { formatMessage } = useVIntl()
const { handleError } = injectNotificationManager()
const formatRelativeTime = useRelativeTime()
const props = defineProps<{
credentials: unknown | null
credentials: ModrinthCredentials | null
signIn: () => void
}>()
const userCredentials = computed(() => props.credentials)
const search = ref('')
const manageFriendsModal = ref()
const friendInvitesModal = ref()
const username = ref('')
@@ -47,61 +47,64 @@ async function addFriendFromModal() {
await loadFriends()
}
const friendOptions = ref()
async function handleFriendOptions(args) {
switch (args.option) {
case 'remove-friend':
await removeFriend(args.item)
break
async function addFriend(friend: FriendWithUserData) {
const id = friend.id === userCredentials.value?.user_id ? friend.friend_id : friend.id
if (id) {
await add_friend(id).catch(handleError)
await loadFriends()
}
}
async function addFriend(friend: Friend) {
await add_friend(
friend.id === userCredentials.value.user_id ? friend.friend_id : friend.id,
).catch(handleError)
await loadFriends()
async function removeFriend(friend: FriendWithUserData) {
const id = friend.id === userCredentials.value?.user_id ? friend.friend_id : friend.id
if (id) {
await remove_friend(id).catch(handleError)
await loadFriends()
}
}
async function removeFriend(friend: Friend) {
await remove_friend(
friend.id === userCredentials.value.user_id ? friend.friend_id : friend.id,
).catch(handleError)
await loadFriends()
}
const userFriends = ref<FriendWithUserData[]>([])
const sortedFriends = computed<FriendWithUserData[]>(() =>
userFriends.value.slice().sort((a, b) => {
if (a.last_updated === null && b.last_updated === null) {
return 0 // Both are null, equal in sorting
}
if (a.last_updated === null) {
return 1 // `a` is null, move it after `b`
}
if (b.last_updated === null) {
return -1 // `b` is null, move it after `a`
}
// Both are non-null, sort by date
return b.last_updated.diff(a.last_updated)
}),
)
const filteredFriends = computed<FriendWithUserData[]>(() =>
sortedFriends.value.filter((x) =>
x.username.trim().toLowerCase().includes(search.value.trim().toLowerCase()),
),
)
type Friend = {
id: string
friend_id: string | null
status: string | null
last_updated: Dayjs | null
created: Dayjs
username: string
accepted: boolean
online: boolean
avatar: string
}
const userFriends = ref<Friend[]>([])
const acceptedFriends = computed(() =>
userFriends.value
.filter((x) => x.accepted)
.toSorted((a, b) => {
if (a.last_updated === null && b.last_updated === null) {
return 0 // Both are null, equal in sorting
}
if (a.last_updated === null) {
return 1 // `a` is null, move it after `b`
}
if (b.last_updated === null) {
return -1 // `b` is null, move it after `a`
}
// Both are non-null, sort by date
return b.last_updated.diff(a.last_updated)
}),
const activeFriends = computed<FriendWithUserData[]>(() =>
filteredFriends.value.filter((x) => !!x.status && x.online && x.accepted),
)
const onlineFriends = computed<FriendWithUserData[]>(() =>
filteredFriends.value.filter((x) => x.online && !x.status && x.accepted),
)
const offlineFriends = computed<FriendWithUserData[]>(() =>
filteredFriends.value.filter((x) => !x.online && x.accepted),
)
const pendingFriends = computed(() =>
userFriends.value.filter((x) => !x.accepted).toSorted((a, b) => b.created.diff(a.created)),
filteredFriends.value
.filter((x) => !x.accepted && x.id !== userCredentials.value?.user_id)
.slice()
.sort((a, b) => b.created.diff(a.created)),
)
const incomingRequests = computed(() =>
userFriends.value
.filter((x) => !x.accepted && x.id === userCredentials.value?.user_id)
.slice()
.sort((a, b) => b.created.diff(a.created)),
)
const loading = ref(true)
@@ -110,34 +113,7 @@ async function loadFriends(timeout = false) {
try {
const friendsList = await friends()
if (friendsList.length === 0) {
userFriends.value = []
} else {
const friendStatuses = await friend_statuses()
const users = await get_user_many(
friendsList.map((x) => (x.id === userCredentials.value.user_id ? x.friend_id : x.id)),
)
userFriends.value = friendsList.map((friend) => {
const user = users.find((x) => x.id === friend.id || x.id === friend.friend_id)
const status = friendStatuses.find(
(x) => x.user_id === friend.id || x.user_id === friend.friend_id,
)
return {
id: friend.id,
friend_id: friend.friend_id,
status: status?.profile_name,
last_updated: status && status.last_update ? dayjs(status.last_update) : null,
created: dayjs(friend.created),
avatar: user?.avatar_url,
username: user?.username,
online: !!status,
accepted: friend.accepted,
}
})
}
userFriends.value = await transformFriends(friendsList, userCredentials.value)
loading.value = false
} catch (e) {
console.error('Error loading friends', e)
@@ -152,6 +128,7 @@ watch(
() => {
if (userCredentials.value === undefined) {
userFriends.value = []
loading.value = false
} else if (userCredentials.value === null) {
userFriends.value = []
loading.value = false
@@ -166,49 +143,87 @@ const unlisten = await friend_listener(() => loadFriends())
onUnmounted(() => {
unlisten()
})
const messages = defineMessages({
addFriend: {
id: 'friends.action.add-friend',
defaultMessage: 'Add a friend',
},
addingAFriend: {
id: 'friends.add-friend.title',
defaultMessage: 'Adding a friend',
},
usernameTitle: {
id: 'friends.add-friend.username.title',
defaultMessage: "What's your friend's Modrinth username?",
},
usernameDescription: {
id: 'friends.add-friend.username.description',
defaultMessage: 'It may be different from their Minecraft username!',
},
usernamePlaceholder: {
id: 'friends.add-friend.username.placeholder',
defaultMessage: 'Enter Modrinth username...',
},
sendFriendRequest: {
id: 'friends.add-friend.submit',
defaultMessage: 'Send friend request',
},
viewFriendRequests: {
id: 'friends.action.view-friend-requests',
defaultMessage: '{count} friend {count, plural, one {request} other {requests}}',
},
searchFriends: {
id: 'friends.search-friends-placeholder',
defaultMessage: 'Search friends...',
},
friends: {
id: 'friends.heading',
defaultMessage: 'Friends',
},
pending: {
id: 'friends.heading.pending',
defaultMessage: 'Pending',
},
active: {
id: 'friends.heading.active',
defaultMessage: 'Active',
},
online: {
id: 'friends.heading.online',
defaultMessage: 'Online',
},
offline: {
id: 'friends.heading.offline',
defaultMessage: 'Offline',
},
noFriendsMatch: {
id: 'friends.no-friends-match',
defaultMessage: `No friends matching ''{query}''`,
},
signInToAddFriends: {
id: 'friends.sign-in-to-add-friends',
defaultMessage:
"<link>Sign in to a Modrinth account</link> to add friends and see what they're playing!",
},
addFriendsToShare: {
id: 'friends.add-friends-to-share',
defaultMessage: "<link>Add friends</link> to see what they're playing!",
},
})
</script>
<template>
<ModalWrapper ref="manageFriendsModal" header="Manage friends">
<p v-if="acceptedFriends.length === 0">Add friends to share what you're playing!</p>
<div v-else class="flex flex-col gap-4 min-w-[20rem]">
<input v-model="search" type="text" placeholder="Search friends..." class="w-full" />
<div
v-for="friend in acceptedFriends.filter(
(x) => !search || x.username.toLowerCase().includes(search),
)"
:key="friend.username"
class="flex gap-2 items-center"
>
<div class="relative">
<Avatar :src="friend.avatar" class="w-12 h-12 rounded-full" size="2.25rem" circle />
<span
v-if="friend.online"
class="bottom-1 right-0 absolute w-3 h-3 bg-brand border-2 border-black border-solid rounded-full"
/>
</div>
<div>{{ friend.username }}</div>
<div class="ml-auto">
<ButtonStyled>
<button @click="removeFriend(friend)">
<XIcon />
Remove
</button>
</ButtonStyled>
</div>
</div>
</div>
</ModalWrapper>
<ModalWrapper ref="friendInvitesModal" header="View friend requests">
<p v-if="pendingFriends.length === 0">You have no pending friend requests :C</p>
<div v-else class="flex flex-col gap-4">
<div v-for="friend in pendingFriends" :key="friend.username" class="flex gap-2">
<p v-if="incomingRequests.length === 0">You have no pending friend requests :C</p>
<div v-else class="flex flex-col gap-4 min-w-[40rem]">
<div v-for="friend in incomingRequests" :key="friend.username" class="flex gap-2">
<Avatar :src="friend.avatar" class="w-12 h-12 rounded-full" size="2.25rem" circle />
<div class="flex flex-col gap-2">
<div class="grid grid-cols-[1fr_auto] w-full gap-4">
<div>
<p class="m-0">
<template v-if="friend.id === userCredentials.user_id">
<span class="font-bold">{{ friend.username }}</span> sent you a friend request
<template v-if="friend.id === userCredentials?.user_id">
<span class="text-contrast">{{ friend.username }}</span> sent you a friend request
</template>
<template v-else>
You sent <span class="font-bold">{{ friend.username }}</span> a friend request
@@ -219,7 +234,7 @@ onUnmounted(() => {
</p>
</div>
<div class="flex gap-2">
<template v-if="friend.id === userCredentials.user_id">
<template v-if="friend.id === userCredentials?.user_id">
<ButtonStyled color="brand">
<button @click="addFriend(friend)">
<UserPlusIcon />
@@ -246,72 +261,89 @@ onUnmounted(() => {
</div>
</div>
</ModalWrapper>
<ModalWrapper ref="addFriendModal" header="Add a friend">
<div class="mb-4">
<h2 class="m-0 text-lg font-extrabold text-contrast">Username</h2>
<p class="m-0 mt-1 leading-tight">You can add friends with their Modrinth username.</p>
<input v-model="username" class="mt-2 w-full" type="text" placeholder="Enter username..." />
<ModalWrapper ref="addFriendModal" :header="formatMessage(messages.addingAFriend)">
<div class="min-w-[30rem]">
<h2 class="m-0 text-base font-medium text-primary">
{{ formatMessage(messages.usernameTitle) }}
</h2>
<p class="m-0 mt-1 text-sm text-secondary leading-tight">
{{ formatMessage(messages.usernameDescription) }}
</p>
<div class="flex items-center gap-2 mt-4">
<div class="iconified-input flex-1">
<UserIcon aria-hidden="true" />
<input
v-model="username"
type="text"
:placeholder="formatMessage(messages.usernamePlaceholder)"
@keyup.enter="addFriendFromModal"
/>
</div>
<ButtonStyled color="brand">
<button :disabled="username.length === 0" @click="addFriendFromModal">
<SendIcon />
{{ formatMessage(messages.sendFriendRequest) }}
</button>
</ButtonStyled>
</div>
</div>
<ButtonStyled color="brand">
<button :disabled="username.length === 0" @click="addFriendFromModal">
<UserPlusIcon />
Add friend
</ModalWrapper>
<div v-if="userCredentials && !loading" class="flex gap-1 items-center mb-3 ml-2 mr-1">
<template v-if="sortedFriends.length > 0">
<ButtonStyled circular type="transparent">
<button
v-tooltip="formatMessage(messages.addFriend)"
:aria-label="formatMessage(messages.addFriend)"
@click="addFriendModal.show"
>
<UserPlusIcon />
</button>
</ButtonStyled>
<div class="iconified-input flex-1">
<input
v-model="search"
type="text"
class="friends-search-bar flex w-full"
:placeholder="formatMessage(messages.searchFriends)"
@keyup.esc="search = ''"
/>
<button
v-if="search"
v-tooltip="formatMessage(commonMessages.clearButton)"
class="r-btn flex items-center justify-center bg-transparent button-animation p-2 cursor-pointer appearance-none border-none"
@click="search = ''"
>
<XIcon />
</button>
</div>
</template>
<h3 v-else class="ml-2 w-full text-base text-primary font-medium m-0">
{{ formatMessage(messages.friends) }}
</h3>
<ButtonStyled v-if="incomingRequests.length > 0" circular type="transparent">
<button
v-tooltip="formatMessage(messages.viewFriendRequests, { count: incomingRequests.length })"
class="relative"
:aria-label="formatMessage(messages.viewFriendRequests, { count: incomingRequests.length })"
@click="friendInvitesModal.show"
>
<MailIcon />
<span
v-if="incomingRequests.length > 0"
aria-hidden="true"
class="absolute bg-brand text-brand-inverted text-[8px] top-0.5 px-1 right-0.5 min-w-3 h-3 rounded-full flex items-center justify-center font-bold"
>
{{ incomingRequests.length }}
</span>
</button>
</ButtonStyled>
</ModalWrapper>
<div class="flex justify-between items-center">
<h3 class="text-lg m-0">Friends</h3>
<ButtonStyled v-if="userCredentials" type="transparent" circular>
<OverflowMenu
:options="[
{
id: 'add-friend',
action: () => addFriendModal.show(),
},
{
id: 'manage-friends',
action: () => manageFriendsModal.show(),
shown: acceptedFriends.length > 0,
},
{
id: 'view-requests',
action: () => friendInvitesModal.show(),
shown: pendingFriends.length > 0,
},
]"
aria-label="More options"
>
<MoreVerticalIcon aria-hidden="true" />
<template #add-friend>
<UserPlusIcon aria-hidden="true" />
Add friend
</template>
<template #manage-friends>
<SettingsIcon aria-hidden="true" />
Manage friends
<div
v-if="acceptedFriends.length > 0"
class="bg-button-bg w-6 h-6 rounded-full flex items-center justify-center"
>
{{ acceptedFriends.length }}
</div>
</template>
<template #view-requests>
<MailIcon aria-hidden="true" />
View friend requests
<div
v-if="pendingFriends.length > 0"
class="bg-button-bg w-6 h-6 rounded-full flex items-center justify-center"
>
{{ pendingFriends.length }}
</div>
</template>
</OverflowMenu>
</ButtonStyled>
</div>
<div class="flex flex-col gap-2 mt-2">
<div class="flex flex-col gap-3">
<h3 v-if="loading" class="ml-4 mr-1 text-base text-primary font-medium m-0">
{{ formatMessage(messages.friends) }}
</h3>
<template v-if="loading">
<div v-for="n in 5" :key="n" class="flex gap-2 items-center animate-pulse">
<div v-for="n in 5" :key="n" class="flex gap-2 items-center animate-pulse ml-4 mr-1">
<div class="min-w-9 min-h-9 bg-button-bg rounded-full"></div>
<div class="flex flex-col w-full">
<div class="h-3 bg-button-bg rounded-full w-1/2 mb-1"></div>
@@ -319,50 +351,77 @@ onUnmounted(() => {
</div>
</div>
</template>
<template v-else-if="acceptedFriends.length === 0">
<div class="text-sm">
<template v-else-if="sortedFriends.length === 0">
<div class="text-sm ml-4 mr-1">
<div v-if="!userCredentials">
<span class="text-link cursor-pointer" @click="signIn">Sign in</span> to add friends!
<IntlFormatted :message-id="messages.signInToAddFriends">
<template #link="{ children }">
<span class="font-semibold text-brand cursor-pointer" @click="signIn">
<component :is="() => children" />
</span>
</template>
</IntlFormatted>
</div>
<div v-else>
<span class="text-link cursor-pointer" @click="addFriendModal.show()">Add friends</span>
to share what you're playing!
<IntlFormatted :message-id="messages.addFriendsToShare">
<template #link="{ children }">
<span class="font-semibold text-brand cursor-pointer" @click="addFriendModal.show">
<component :is="() => children" />
</span>
</template>
</IntlFormatted>
</div>
</div>
</template>
<template v-else>
<ContextMenu ref="friendOptions" @option-clicked="handleFriendOptions">
<template #remove-friend> <TrashIcon /> Remove friend </template>
</ContextMenu>
<div
v-for="friend in acceptedFriends.slice(0, 5)"
:key="friend.username"
class="flex gap-2 items-center"
:class="{ grayscale: !friend.online }"
@contextmenu.prevent.stop="
(event) =>
friendOptions.showMenu(event, friend, [
{
name: 'remove-friend',
color: 'danger',
},
])
"
>
<div class="relative">
<Avatar :src="friend.avatar" class="w-12 h-12 rounded-full" size="2.25rem" circle />
<span
v-if="friend.online"
class="bottom-1 right-0 absolute w-3 h-3 bg-brand border-2 border-black border-solid rounded-full"
/>
</div>
<div class="flex flex-col">
<span class="text-md m-0 font-medium" :class="{ 'text-secondary': !friend.online }">
{{ friend.username }}
</span>
<span v-if="friend.status" class="m-0 text-xs">{{ friend.status }}</span>
</div>
</div>
<FriendsSection
v-if="activeFriends.length > 0"
:is-searching="!!search"
open-by-default
:friends="activeFriends"
:heading="formatMessage(messages.active)"
:remove-friend="removeFriend"
/>
<FriendsSection
v-if="onlineFriends.length > 0"
:is-searching="!!search"
open-by-default
:friends="onlineFriends"
:heading="formatMessage(messages.online)"
:remove-friend="removeFriend"
/>
<FriendsSection
v-if="offlineFriends.length > 0"
:is-searching="!!search"
:open-by-default="activeFriends.length + onlineFriends.length < 3"
:friends="offlineFriends"
:heading="formatMessage(messages.offline)"
:remove-friend="removeFriend"
/>
<FriendsSection
v-if="pendingFriends.length > 0"
:is-searching="!!search"
open-by-default
:friends="pendingFriends"
:heading="formatMessage(messages.pending)"
:remove-friend="removeFriend"
/>
<p v-if="filteredFriends.length === 0 && search" class="text-sm text-secondary my-1 mx-4">
{{ formatMessage(messages.noFriendsMatch, { query: search }) }}
</p>
</template>
</div>
</template>
<style scoped>
.friends-search-bar {
background: none;
border: 2px solid var(--color-button-bg) !important;
padding: 8px;
border-radius: 12px;
height: 36px;
}
.friends-search-bar::placeholder {
@apply text-sm font-normal;
}
</style>

View File

@@ -0,0 +1,185 @@
<script setup lang="ts">
import { MoreVerticalIcon, TrashIcon, UserIcon, XIcon } from '@modrinth/assets'
import { Accordion, Avatar, ButtonStyled, OverflowMenu } from '@modrinth/ui'
import { openUrl } from '@tauri-apps/plugin-opener'
import { defineMessages, useVIntl } from '@vintl/vintl'
import { useTemplateRef } from 'vue'
import ContextMenu from '@/components/ui/ContextMenu.vue'
import type { FriendWithUserData } from '@/helpers/friends.ts'
const { formatMessage } = useVIntl()
const props = withDefaults(
defineProps<{
friends: FriendWithUserData[]
heading: string
removeFriend: (friend: FriendWithUserData) => Promise<void>
isSearching?: boolean
openByDefault?: boolean
}>(),
{
isSearching: false,
openByDefault: false,
},
)
function createContextMenuOptions(friend: FriendWithUserData) {
if (friend.accepted) {
return [
{
name: 'view-profile',
},
{
name: 'remove-friend',
color: 'danger',
},
]
} else {
return [
{
name: 'view-profile',
},
{
name: 'cancel-request',
},
]
}
}
function openProfile(username: string) {
openUrl('https://modrinth.com/user/' + username)
}
const friendOptions = useTemplateRef('friendOptions')
async function handleFriendOptions(args: { item: FriendWithUserData; option: string }) {
switch (args.option) {
case 'remove-friend':
case 'cancel-request':
await props.removeFriend(args.item)
break
case 'view-profile':
openProfile(args.item.username)
}
}
const messages = defineMessages({
removeFriend: {
id: 'friends.friend.remove-friend',
defaultMessage: 'Remove friend',
},
heading: {
id: 'friends.section.heading',
defaultMessage: '{title} - {count}',
},
friendRequestSent: {
id: 'friends.friend.request-sent',
defaultMessage: 'Friend request sent',
},
cancelRequest: {
id: 'friends.friend.cancel-request',
defaultMessage: 'Cancel request',
},
viewProfile: {
id: 'friends.friend.view-profile',
defaultMessage: 'View profile',
},
})
</script>
<template>
<ContextMenu ref="friendOptions" @option-clicked="handleFriendOptions">
<template #view-profile>
<UserIcon />
{{ formatMessage(messages.viewProfile) }}
</template>
<template #remove-friend> <TrashIcon /> {{ formatMessage(messages.removeFriend) }} </template>
<template #cancel-request> <XIcon /> {{ formatMessage(messages.cancelRequest) }} </template>
</ContextMenu>
<Accordion
:open-by-default="openByDefault"
:force-open="isSearching"
:button-class="
'pl-4 pr-3 flex w-full items-center bg-transparent border-0 p-0' +
(isSearching
? ''
: ' cursor-pointer hover:brightness-[--hover-brightness] active:scale-[0.98] transition-all')
"
>
<template #title>
<h3 class="text-base text-primary font-medium m-0">
{{ formatMessage(messages.heading, { title: heading, count: friends.length }) }}
</h3>
</template>
<template #default>
<div class="pt-3 flex flex-col gap-1">
<div
v-for="friend in friends"
:key="friend.username"
class="group grid items-center grid-cols-[auto_1fr_auto] gap-2 hover:bg-button-bg transition-colors rounded-full ml-4 mr-1"
@contextmenu.prevent.stop="
(event) => friendOptions?.showMenu(event, friend, createContextMenuOptions(friend))
"
>
<div class="relative">
<Avatar
:src="friend.avatar"
:class="{ grayscale: !friend.online && friend.accepted }"
class="w-12 h-12 rounded-full"
size="32px"
circle
/>
<span
v-if="friend.online"
aria-hidden="true"
class="bottom-[2px] right-[-2px] absolute w-3 h-3 bg-brand border-2 border-black border-solid rounded-full"
/>
</div>
<div class="flex flex-col">
<span
class="text-sm m-0"
:class="friend.online || !friend.accepted ? 'text-contrast' : 'text-primary'"
>
{{ friend.username }}
</span>
<span v-if="!friend.accepted" class="m-0 text-xs">
{{ formatMessage(messages.friendRequestSent) }}
</span>
<span v-else-if="friend.status" class="m-0 text-xs">{{ friend.status }}</span>
</div>
<ButtonStyled v-if="friend.accepted" circular type="transparent">
<OverflowMenu
class="opacity-0 group-hover:opacity-100 transition-opacity"
:options="[
{
id: 'view-profile',
action: () => openProfile(friend.username),
},
{
id: 'remove-friend',
action: () => removeFriend(friend),
color: 'red',
},
]"
>
<MoreVerticalIcon />
<template #view-profile>
<UserIcon />
{{ formatMessage(messages.viewProfile) }}
</template>
<template #remove-friend>
<TrashIcon />
{{ formatMessage(messages.removeFriend) }}
</template>
</OverflowMenu>
</ButtonStyled>
<ButtonStyled v-else type="transparent" circular>
<button v-tooltip="formatMessage(messages.cancelRequest)" @click="removeFriend(friend)">
<XIcon />
</button>
</ButtonStyled>
</div>
</div>
</template>
</Accordion>
</template>

View File

@@ -22,7 +22,11 @@ import {
get,
list,
} from '@/helpers/profile'
import { installVersionDependencies } from '@/store/install.js'
import {
findPreferredVersion,
installVersionDependencies,
isVersionCompatible,
} from '@/store/install.js'
const { handleError } = injectNotificationManager()
const router = useRouter()
@@ -49,14 +53,11 @@ const shownProfiles = computed(() =>
return profile.name.toLowerCase().includes(searchFilter.value.toLowerCase())
})
.filter((profile) => {
const loaders = versions.value.flatMap((v) => v.loaders)
return (
versions.value.flatMap((v) => v.game_versions).includes(profile.game_version) &&
(project.value.project_type === 'mod'
? loaders.includes(profile.loader) || loaders.includes('minecraft')
: true)
)
const version = {
game_versions: versions.value.flatMap((v) => v.game_versions),
loaders: versions.value.flatMap((v) => v.loaders),
}
return isVersionCompatible(version, project.value, profile)
}),
)
@@ -94,14 +95,7 @@ defineExpose({
async function install(instance) {
instance.installing = true
const version = versions.value.find((v) => {
return (
v.game_versions.includes(instance.game_version) &&
(project.value.project_type === 'mod'
? v.loaders.includes(instance.loader) || v.loaders.includes('minecraft')
: true)
)
})
const version = findPreferredVersion(versions.value, project.value, instance)
if (!version) {
instance.installing = false

View File

@@ -15,8 +15,8 @@ import {
ButtonStyled,
Checkbox,
Chips,
Combobox,
injectNotificationManager,
TeleportDropdownMenu,
} from '@modrinth/ui'
import {
formatCategory,
@@ -164,6 +164,21 @@ const selectableGameVersionNumbers = computed(() => {
.map((x) => x.version)
})
const gameVersionOptions = computed(() =>
(selectableGameVersionNumbers.value ?? []).map((v) => ({ value: v, label: v })),
)
const loaderVersionOptions = computed(() =>
(selectableLoaderVersions.value ?? []).map((opt, index) => ({ value: index, label: opt.id })),
)
const loaderVersionLabel = computed(() => {
const idx = loaderVersionIndex.value
return idx >= 0 && selectableLoaderVersions.value
? selectableLoaderVersions.value[idx]?.id
: 'Select version'
})
const selectableLoaderVersions: ComputedRef<ManifestLoaderVersion[] | undefined> = computed(() => {
if (gameVersion.value) {
if (loader.value === 'fabric') {
@@ -687,11 +702,11 @@ async function handleInitAuthLibPatching(ismojang: boolean) {
{{ formatMessage(messages.gameVersion) }}
</h2>
<div class="flex flex-wrap mt-2 gap-2">
<TeleportDropdownMenu
<Combobox
v-if="selectableGameVersionNumbers !== undefined"
v-model="gameVersion"
:options="selectableGameVersionNumbers"
name="Game Version Dropdown"
:options="gameVersionOptions"
:display-value="gameVersion || formatMessage(messages.unknownVersion)"
/>
<Checkbox
v-if="hasSnapshots"
@@ -703,14 +718,13 @@ async function handleInitAuthLibPatching(ismojang: boolean) {
<h2 class="m-0 mt-4 text-lg font-extrabold text-contrast block">
{{ formatMessage(messages.loaderVersion, { loader: formatCategory(loader) }) }}
</h2>
<TeleportDropdownMenu
<Combobox
v-if="selectableLoaderVersions"
:model-value="selectableLoaderVersions[loaderVersionIndex]"
:options="selectableLoaderVersions"
:display-name="(option: ManifestLoaderVersion) => option?.id"
v-model="loaderVersionIndex"
:options="loaderVersionOptions"
:display-value="loaderVersionLabel"
name="Version selector"
class="mt-2"
@change="(value) => (loaderVersionIndex = value.index)"
/>
<div v-else class="mt-2 text-brand-red flex gap-2 items-center">
<IssuesIcon />

View File

@@ -9,7 +9,7 @@ import useMemorySlider from '@/composables/useMemorySlider'
import { edit, get_optimal_jre_key } from '@/helpers/profile'
import { get } from '@/helpers/settings.ts'
import type { AppSettings, InstanceSettingsTabProps, MemorySettings } from '../../../helpers/types'
import type { AppSettings, InstanceSettingsTabProps } from '../../../helpers/types'
const { handleError } = injectNotificationManager()
const { formatMessage } = useVIntl()
@@ -22,12 +22,12 @@ const overrideJavaInstall = ref(!!props.instance.java_path)
const optimalJava = readonly(await get_optimal_jre_key(props.instance.path).catch(handleError))
const javaInstall = ref({ path: optimalJava.path ?? props.instance.java_path })
const overrideJavaArgs = ref(props.instance.extra_launch_args?.length !== undefined)
const overrideJavaArgs = ref((props.instance.extra_launch_args?.length ?? 0) > 0)
const javaArgs = ref(
(props.instance.extra_launch_args ?? globalSettings.extra_launch_args).join(' '),
)
const overrideEnvVars = ref(props.instance.custom_env_vars?.length !== undefined)
const overrideEnvVars = ref((props.instance.custom_env_vars?.length ?? 0) > 0)
const envVars = ref(
(props.instance.custom_env_vars ?? globalSettings.custom_env_vars)
.map((x) => x.join('='))
@@ -42,36 +42,23 @@ const { maxMemory, snapPoints } = (await useMemorySlider().catch(handleError)) a
}
const editProfileObject = computed(() => {
const editProfile: {
java_path?: string
extra_launch_args?: string[]
custom_env_vars?: string[][]
memory?: MemorySettings
} = {}
if (overrideJavaInstall.value) {
if (javaInstall.value.path !== '') {
editProfile.java_path = javaInstall.value.path.replace('java.exe', 'javaw.exe')
}
return {
java_path:
overrideJavaInstall.value && javaInstall.value.path !== ''
? javaInstall.value.path.replace('java.exe', 'javaw.exe')
: null,
extra_launch_args: overrideJavaArgs.value
? javaArgs.value.trim().split(/\s+/).filter(Boolean)
: null,
custom_env_vars: overrideEnvVars.value
? envVars.value
.trim()
.split(/\s+/)
.filter(Boolean)
.map((x) => x.split('=').filter(Boolean))
: null,
memory: overrideMemorySettings.value ? memory.value : null,
}
if (overrideJavaArgs.value) {
editProfile.extra_launch_args = javaArgs.value.trim().split(/\s+/).filter(Boolean)
}
if (overrideEnvVars.value) {
editProfile.custom_env_vars = envVars.value
.trim()
.split(/\s+/)
.filter(Boolean)
.map((x) => x.split('=').filter(Boolean))
}
if (overrideMemorySettings.value) {
editProfile.memory = memory.value
}
return editProfile
})
watch(

View File

@@ -26,20 +26,16 @@ const fullscreenSetting: Ref<boolean> = ref(
)
const editProfileObject = computed(() => {
const editProfile: {
force_fullscreen?: boolean
game_resolution?: [number, number]
} = {}
if (overrideWindowSettings.value) {
editProfile.force_fullscreen = fullscreenSetting.value
if (!fullscreenSetting.value) {
editProfile.game_resolution = resolution.value
if (!overrideWindowSettings.value) {
return {
force_fullscreen: null,
game_resolution: null,
}
}
return editProfile
return {
force_fullscreen: fullscreenSetting.value,
game_resolution: fullscreenSetting.value ? null : resolution.value,
}
})
watch(
@@ -95,14 +91,6 @@ const messages = defineMessages({
<Checkbox
v-model="overrideWindowSettings"
:label="formatMessage(messages.customWindowSettings)"
@update:model-value="
(value) => {
if (!value) {
resolution = globalSettings.game_resolution
fullscreenSetting = globalSettings.force_fullscreen
}
}
"
/>
<div class="mt-2 flex items-center gap-4 justify-between">
<div>

View File

@@ -11,10 +11,10 @@ import {
SettingsIcon,
ShieldIcon,
} from '@modrinth/assets'
import { TabbedModal } from '@modrinth/ui'
import { ProgressBar, TabbedModal } from '@modrinth/ui'
import { getVersion } from '@tauri-apps/api/app'
import { platform as getOsPlatform, version as getOsVersion } from '@tauri-apps/plugin-os'
import { defineMessage, useVIntl } from '@vintl/vintl'
import { defineMessage, defineMessages, useVIntl } from '@vintl/vintl'
import { computed, ref, watch } from 'vue'
import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue'
@@ -25,6 +25,7 @@ import JavaSettings from '@/components/ui/settings/JavaSettings.vue'
import PrivacySettings from '@/components/ui/settings/PrivacySettings.vue'
import ResourceManagementSettings from '@/components/ui/settings/ResourceManagementSettings.vue'
import { get, set } from '@/helpers/settings.ts'
// [AR] Imports
import { installState, getRemote, updateState } from '@/helpers/update.js'
@@ -42,6 +43,7 @@ const initDownload = async () => {
updateRequestFailView.value.show()
}
}
import { injectAppUpdateDownloadProgress } from '@/providers/download-progress.ts'
import { useTheming } from '@/store/state'
const themeStore = useTheming()
@@ -117,6 +119,8 @@ const isOpen = computed(() => modal.value?.isOpen)
defineExpose({ show, isOpen })
const { progress, version: downloadingVersion } = injectAppUpdateDownloadProgress()
const version = await getVersion()
const osPlatform = getOsPlatform()
const osVersion = getOsVersion()
@@ -142,6 +146,13 @@ function devModeCount() {
}
}
}
const messages = defineMessages({
downloading: {
id: 'app.settings.downloading',
defaultMessage: 'Downloading v{version}',
},
})
</script>
<template>
<ModalWrapper ref="modal">
@@ -154,6 +165,14 @@ function devModeCount() {
<TabbedModal :tabs="tabs.filter((t) => !t.developerOnly || themeStore.devMode)">
<template #footer>
<div class="mt-auto text-secondary text-sm">
<div class="mb-3">
<template v-if="progress > 0 && progress < 1">
<p class="m-0 mb-2">
{{ formatMessage(messages.downloading, { version: downloadingVersion }) }}
</p>
<ProgressBar :progress="progress" />
</template>
</div>
<p v-if="themeStore.devMode" class="text-brand font-semibold m-0 mb-2">
{{ formatMessage(developerModeEnabled) }}
</p>
@@ -171,7 +190,7 @@ function devModeCount() {
<div>
<p class="m-0">AstralRinth App {{ version }}</p>
<p class="m-0">
<span v-if="osPlatform === 'macos'">MacOS</span>
<span v-if="osPlatform === 'macos'">macOS</span>
<span v-else class="capitalize">{{ osPlatform }}</span>
{{ osVersion }}
</p>
@@ -192,28 +211,34 @@ function devModeCount() {
<ModalWrapper ref="updateModalView" :has-to-type="false" header="Request to update the AstralRinth launcher">
<div class="space-y-4">
<div class="space-y-2">
<p>The new version of the AstralRinth launcher is available.</p>
<strong>The new version of the AstralRinth launcher is available!</strong>
<p>Your version is outdated. We recommend that you update to the latest version.</p>
<p><strong> Warning </strong></p>
<br/>
<br/>
<p><strong> Please, read this notice before initialize update process</strong></p>
<p>
Before updating, make sure that you have saved all running instances and made a backup copy of the instances
that are valuable to you. Remember that the authors of the product are not responsible for the breakdown of
your files, so you should always make copies of them and keep them in a safe place.
Before updating, make sure that you have saved and closed all running instances and made a backup copy of the launcher data such as
<code>%appdata%\Roaming\AstralRinthApp</code> on Windows or <code>~/Library/Application Support/AstralRinthApp</code> on macOS.
Remember that the authors of the product are not responsible for the breakdown of
your files, so you should always make back up copies of them and keep them in a safe place.
</p>
</div>
<div class="text-sm text-secondary space-y-1">
<a class="neon-text" href="https://me.astralium.su/get/ar" target="_blank"
rel="noopener noreferrer"><strong>Source:</strong> Git Astralium</a>
<p>
<strong>Version on remote server:</strong>
<span id="releaseData" class="neon-text"></span>
</p>
<p>
<strong>Version on local device:</strong>
<strong> Latest release tag:</strong>
<span id="releaseTag" class="neon-text"></span>
<br/>
<strong> Latest release title:</strong>
<span id="releaseTitle" class="neon-text"></span>
<br/>
<strong>💾 Installed & Running version:</strong>
<span class="neon-text">v{{ version }}</span>
</p>
</div>
<a class="neon-text" href="https://me.astralium.su/get/ar" target="_blank"
rel="noopener noreferrer">
Checkout our git repository
</a>
<div class="absolute bottom-4 right-4 flex items-center gap-4 neon-button neon">
<Button class="bordered" @click="updateModalView.hide()">Cancel</Button>
<Button class="bordered" @click="initDownload()">Download file</Button>
@@ -252,4 +277,11 @@ function devModeCount() {
@import '../../../../../../packages/assets/styles/neon-icon.scss';
@import '../../../../../../packages/assets/styles/neon-button.scss';
@import '../../../../../../packages/assets/styles/neon-text.scss';
code {
background: linear-gradient(90deg, #005eff, #00cfff);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
}
</style>

View File

@@ -12,6 +12,10 @@ const props = defineProps({
type: String,
default: null,
},
hideHeader: {
type: Boolean,
default: false,
},
closable: {
type: Boolean,
default: true,
@@ -49,7 +53,14 @@ function onModalHide() {
</script>
<template>
<Modal ref="modal" :header="header" :noblur="!themeStore.advancedRendering" @hide="onModalHide">
<Modal
ref="modal"
:header="header"
:noblur="!themeStore.advancedRendering"
:closable="closable"
:hide-header="hideHeader"
@hide="onModalHide"
>
<template #title>
<slot name="title" />
</template>

View File

@@ -1,5 +1,5 @@
<script setup lang="ts">
import { TeleportDropdownMenu, ThemeSelector, Toggle } from '@modrinth/ui'
import { Combobox, ThemeSelector, Toggle } from '@modrinth/ui'
import { ref, watch } from 'vue'
import { get, set } from '@/helpers/settings.ts'
@@ -50,7 +50,7 @@ watch(
:model-value="themeStore.advancedRendering"
@update:model-value="
(e) => {
themeStore.advancedRendering = e
themeStore.advancedRendering = !!e
settings.advanced_rendering = themeStore.advancedRendering
}
"
@@ -86,12 +86,13 @@ watch(
<h2 class="m-0 text-lg font-extrabold text-contrast">Default landing page</h2>
<p class="m-0 mt-1">Change the page to which the launcher opens on.</p>
</div>
<TeleportDropdownMenu
<Combobox
id="opening-page"
v-model="settings.default_page"
name="Opening page dropdown"
class="w-40"
:options="['Home', 'Library']"
:options="['Home', 'Library'].map((v) => ({ value: v, label: v }))"
:display-value="settings.default_page ?? 'Select an option'"
/>
</div>
@@ -122,7 +123,7 @@ watch(
:model-value="settings.toggle_sidebar"
@update:model-value="
(e) => {
settings.toggle_sidebar = e
settings.toggle_sidebar = !!e
themeStore.toggleSidebar = settings.toggle_sidebar
}
"

View File

@@ -21,7 +21,7 @@ async function updateJavaVersion(version) {
}
</script>
<template>
<div v-for="(javaVersion, index) in [21, 17, 8]" :key="`java-${javaVersion}`">
<div v-for="(javaVersion, index) in [25, 21, 17, 8]" :key="`java-${javaVersion}`">
<h2 class="m-0 text-lg font-extrabold text-contrast" :class="{ 'mt-4': index !== 0 }">
Java {{ javaVersion }} location
</h2>

View File

@@ -130,6 +130,7 @@ import {
remove_custom_skin,
type Skin,
type SkinModel,
type SkinTextureUrl,
unequip_skin,
} from '@/helpers/skins.ts'
@@ -142,7 +143,7 @@ const currentSkin = ref<Skin | null>(null)
const shouldRestoreModal = ref(false)
const isSaving = ref(false)
const uploadedTextureUrl = ref<string | null>(null)
const uploadedTextureUrl = ref<SkinTextureUrl | null>(null)
const previewSkin = ref<string>('')
const variant = ref<SkinModel>('CLASSIC')
@@ -188,7 +189,7 @@ function getSortedCapeExcluding(excludeId: string): Cape | undefined {
async function loadPreviewSkin() {
if (uploadedTextureUrl.value) {
previewSkin.value = uploadedTextureUrl.value
previewSkin.value = uploadedTextureUrl.value.normalized
} else if (currentSkin.value) {
try {
previewSkin.value = await get_normalized_skin_texture(currentSkin.value)
@@ -253,11 +254,11 @@ async function show(e: MouseEvent, skin?: Skin) {
modal.value?.show(e)
}
async function showNew(e: MouseEvent, skinTextureUrl: string) {
async function showNew(e: MouseEvent, skinTextureUrl: SkinTextureUrl) {
mode.value = 'new'
currentSkin.value = null
uploadedTextureUrl.value = skinTextureUrl
variant.value = await determineModelType(skinTextureUrl)
variant.value = await determineModelType(skinTextureUrl.original)
selectedCape.value = undefined
visibleCapeList.value = []
initVisibleCapeList()
@@ -267,7 +268,7 @@ async function showNew(e: MouseEvent, skinTextureUrl: string) {
modal.value?.show(e)
}
async function restoreWithNewTexture(skinTextureUrl: string) {
async function restoreWithNewTexture(skinTextureUrl: SkinTextureUrl) {
uploadedTextureUrl.value = skinTextureUrl
await loadPreviewSkin()
@@ -361,7 +362,7 @@ async function save() {
let textureUrl: string
if (uploadedTextureUrl.value) {
textureUrl = uploadedTextureUrl.value
textureUrl = uploadedTextureUrl.value.original
} else {
textureUrl = currentSkin.value!.texture
}

View File

@@ -130,7 +130,7 @@ onUnmounted(() => {
/>
</template>
<div
class="grid grid-cols-[auto_minmax(0,3fr)_minmax(0,4fr)_auto] items-center gap-2 p-3 bg-bg-raised rounded-xl smart-clickable:highlight-on-hover"
class="grid grid-cols-[auto_minmax(0,3fr)_minmax(0,4fr)_auto] items-center gap-2 p-3 bg-bg-raised card-shadow rounded-xl smart-clickable:highlight-on-hover"
>
<Avatar
:src="instanceIcon ? convertFileSrc(instanceIcon) : undefined"

View File

@@ -1,4 +1,6 @@
<script setup lang="ts">
import { LoaderCircleIcon } from '@modrinth/assets'
import type { GameVersion } from '@modrinth/ui'
import { GAME_MODES, HeadingLink, injectNotificationManager } from '@modrinth/ui'
import type { Dayjs } from 'dayjs'
import dayjs from 'dayjs'
@@ -10,11 +12,14 @@ import { trackEvent } from '@/helpers/analytics'
import { process_listener, profile_listener } from '@/helpers/events'
import { get_all } from '@/helpers/process'
import { kill, run } from '@/helpers/profile'
import { get_game_versions } from '@/helpers/tags'
import type { GameInstance } from '@/helpers/types'
import {
get_profile_protocol_version,
get_recent_worlds,
getWorldIdentifier,
hasServerQuickPlaySupport,
hasWorldQuickPlaySupport,
type ProtocolVersion,
refreshServerData,
type ServerData,
@@ -35,8 +40,10 @@ const props = defineProps<{
const theme = useTheming()
const jumpBackInItems = ref<JumpBackInItem[]>([])
const loading = ref(true)
const serverData = ref<Record<string, ServerData>>({})
const protocolVersions = ref<Record<string, ProtocolVersion | null>>({})
const gameVersions = ref<GameVersion[]>(await get_game_versions().catch(() => []))
const MIN_JUMP_BACK_IN = 3
const MAX_JUMP_BACK_IN = 6
@@ -66,9 +73,13 @@ watch([() => props.recentInstances, () => showWorlds.value], async () => {
})
})
await populateJumpBackIn().catch(() => {
console.error('Failed to populate jump back in')
})
populateJumpBackIn()
.catch(() => {
console.error('Failed to populate jump back in')
})
.finally(() => {
loading.value = false
})
async function populateJumpBackIn() {
console.info('Repopulating jump back in...')
@@ -228,7 +239,15 @@ onUnmounted(() => {
</script>
<template>
<div v-if="jumpBackInItems.length > 0" class="flex flex-col gap-2">
<div v-if="loading" class="flex flex-col gap-2">
<span class="flex mt-1 mb-3 leading-none items-center gap-1 text-primary text-lg font-bold">
Jump back in
</span>
<div class="text-center py-4">
<LoaderCircleIcon class="mx-auto size-8 animate-spin text-contrast" />
</div>
</div>
<div v-else-if="jumpBackInItems.length > 0" class="flex flex-col gap-2">
<HeadingLink v-if="theme.getFeatureFlag('worlds_tab')" to="/worlds" class="mt-1">
Jump back in
</HeadingLink>
@@ -255,7 +274,14 @@ onUnmounted(() => {
? serverData[item.world.address].refreshing && !serverData[item.world.address].status
: undefined
"
supports-quick-play
:supports-server-quick-play="
item.world.type === 'server' &&
hasServerQuickPlaySupport(gameVersions, item.instance.game_version || '')
"
:supports-world-quick-play="
item.world.type === 'singleplayer' &&
hasWorldQuickPlaySupport(gameVersions, item.instance.game_version || '')
"
:server-status="
item.world.type === 'server' ? serverData[item.world.address].status : undefined
"

View File

@@ -181,7 +181,7 @@ const messages = defineMessages({
/>
</template>
<div
class="grid grid-cols-[auto_minmax(0,3fr)_minmax(0,4fr)_auto] items-center gap-2 p-3 bg-bg-raised smart-clickable:highlight-on-hover rounded-xl"
class="grid grid-cols-[auto_minmax(0,3fr)_minmax(0,4fr)_auto] items-center gap-2 p-3 bg-bg-raised card-shadow smart-clickable:highlight-on-hover rounded-xl"
:class="{
'world-item-highlighted': highlighted,
}"
@@ -336,17 +336,21 @@ const messages = defineMessages({
<ButtonStyled v-else>
<button
v-tooltip="
world.type == 'server' && !supportsServerQuickPlay
? formatMessage(messages.noServerQuickPlay)
: world.type == 'singleplayer' && !supportsWorldQuickPlay
? formatMessage(messages.noSingleplayerQuickPlay)
: playingOtherWorld || locked
world.type === 'server'
? !supportsServerQuickPlay
? formatMessage(messages.noServerQuickPlay)
: playingOtherWorld
? formatMessage(messages.gameAlreadyOpen)
: !serverStatus
? formatMessage(messages.noContact)
: serverIncompatible
? formatMessage(messages.incompatibleServer)
: null
: !supportsWorldQuickPlay
? formatMessage(messages.noSingleplayerQuickPlay)
: playingOtherWorld || locked
? formatMessage(messages.gameAlreadyOpen)
: null
"
:disabled="
playingOtherWorld ||

View File

@@ -1,5 +1,5 @@
<script setup lang="ts">
import { TeleportDropdownMenu } from '@modrinth/ui'
import { Combobox } from '@modrinth/ui'
import { defineMessages, type MessageDescriptor, useVIntl } from '@vintl/vintl'
import type { ServerPackStatus } from '@/helpers/worlds.ts'
@@ -74,12 +74,19 @@ defineExpose({ resourcePackOptions })
{{ formatMessage(messages.resourcePack) }}
</h2>
<div>
<TeleportDropdownMenu
<Combobox
v-model="resourcePack"
:options="resourcePackOptions"
:options="
resourcePackOptions.map((o) => ({
value: o,
label: formatMessage(resourcePackOptionMessages[o]),
}))
"
name="Server resource pack"
:display-name="
(option: ServerPackStatus) => formatMessage(resourcePackOptionMessages[option])
:display-value="
resourcePack
? formatMessage(resourcePackOptionMessages[resourcePack])
: 'Select an option'
"
/>
</div>

View File

@@ -1,24 +1,24 @@
import { posthog } from 'posthog-js'
// import { posthog } from 'posthog-js'
export const initAnalytics = () => {
posthog.init('phc_9Iqi6lFs9sr5BSqh9RRNRSJ0mATS9PSgirDiX3iOYJ', {
persistence: 'localStorage',
api_host: 'https://posthog.modrinth.com',
})
// posthog.init('phc_9Iqi6lFs9sr5BSqh9RRNRSJ0mATS9PSgirDiX3iOYJ', {
// persistence: 'localStorage',
// api_host: 'https://posthog.modrinth.com',
// })
}
export const debugAnalytics = () => {
posthog.debug()
// posthog.debug()
}
export const optOutAnalytics = () => {
posthog.opt_out_capturing()
// posthog.opt_out_capturing()
}
export const optInAnalytics = () => {
posthog.opt_in_capturing()
// posthog.opt_in_capturing()
}
export const trackEvent = (eventName, properties) => {
posthog.capture(eventName, properties)
// posthog.capture(eventName, properties)
}

View File

@@ -35,6 +35,14 @@ export async function elyby_auth_authenticate(login, password, clientToken) {
})
}
/**
* Check if the authentication servers are reachable, throwing an exception if
* not reachable.
*/
export async function check_reachable() {
await invoke('plugin:auth|check_reachable')
}
/**
* Authenticate a user with Hydra - part 1.
* This begins the authentication flow quasi-synchronously.

View File

@@ -1,17 +0,0 @@
import { invoke } from '@tauri-apps/api/core'
export async function friends() {
return await invoke('plugin:friends|friends')
}
export async function friend_statuses() {
return await invoke('plugin:friends|friend_statuses')
}
export async function add_friend(userId) {
return await invoke('plugin:friends|add_friend', { userId })
}
export async function remove_friend(userId) {
return await invoke('plugin:friends|remove_friend', { userId })
}

View File

@@ -0,0 +1,79 @@
import type { User } from '@modrinth/utils'
import { invoke } from '@tauri-apps/api/core'
import type { Dayjs } from 'dayjs'
import dayjs from 'dayjs'
import { get_user_many } from '@/helpers/cache'
import type { ModrinthCredentials } from '@/helpers/mr_auth'
export type UserStatus = {
user_id: string
profile_name: string | null
last_update: string
}
export type UserFriend = {
id: string
friend_id: string
accepted: boolean
created: string
}
export async function friends(): Promise<UserFriend[]> {
return await invoke('plugin:friends|friends')
}
export async function friend_statuses(): Promise<UserStatus[]> {
return await invoke('plugin:friends|friend_statuses')
}
export async function add_friend(userId: string): Promise<void> {
return await invoke('plugin:friends|add_friend', { userId })
}
export async function remove_friend(userId: string): Promise<void> {
return await invoke('plugin:friends|remove_friend', { userId })
}
export type FriendWithUserData = {
id: string
friend_id: string | null
status: string | null
last_updated: Dayjs | null
created: Dayjs
username: string
accepted: boolean
online: boolean
avatar: string
}
export async function transformFriends(
friends: UserFriend[],
credentials: ModrinthCredentials | null,
): Promise<FriendWithUserData[]> {
if (friends.length === 0 || !credentials) {
return []
}
const friendStatuses = await friend_statuses()
const users = await get_user_many(
friends.map((x) => (x.id === credentials.user_id ? x.friend_id : x.id)),
)
return friends.map((friend) => {
const user = users.find((x: User) => x.id === friend.id || x.id === friend.friend_id)
const status = friendStatuses.find(
(x) => x.user_id === friend.id || x.user_id === friend.friend_id,
)
return {
id: friend.id,
friend_id: friend.friend_id,
status: status?.profile_name ?? null,
last_updated: status && status.last_update ? dayjs(status.last_update) : null,
created: dayjs(friend.created),
avatar: user?.avatar_url ?? '',
username: user?.username ?? '',
online: !!status,
accepted: friend.accepted,
}
})
}

View File

@@ -5,18 +5,25 @@
*/
import { invoke } from '@tauri-apps/api/core'
export async function login() {
export type ModrinthCredentials = {
session: string
expires: string
user_id: string
active: boolean
}
export async function login(): Promise<ModrinthCredentials> {
return await invoke('plugin:mr-auth|modrinth_login')
}
export async function logout() {
export async function logout(): Promise<void> {
return await invoke('plugin:mr-auth|logout')
}
export async function get() {
export async function get(): Promise<ModrinthCredentials | null> {
return await invoke('plugin:mr-auth|get')
}
export async function cancelLogin() {
export async function cancelLogin(): Promise<void> {
return await invoke('plugin:mr-auth|cancel_modrinth_login')
}

View File

@@ -18,7 +18,7 @@ import { install_to_existing_profile } from '@/helpers/pack.js'
- icon is a path to an image file, which will be copied into the profile directory
*/
export async function create(name, gameVersion, modloader, loaderVersion, iconPath, skipInstall) {
export async function create(name, gameVersion, modloader, loaderVersion, icon, skipInstall) {
//Trim string name to avoid "Unable to find directory"
name = name.trim()
return await invoke('plugin:profile-create|profile_create', {
@@ -26,7 +26,7 @@ export async function create(name, gameVersion, modloader, loaderVersion, iconPa
gameVersion,
modloader,
loaderVersion,
iconPath,
icon,
skipInstall,
})
}

View File

@@ -63,6 +63,12 @@ export type AppSettings = {
developer_mode: boolean
feature_flags: Record<FeatureFlag, boolean>
skipped_update: string | null
pending_update_toast_for_version: string | null
auto_download_updates: boolean | null
version: number
}
// Get full settings object

View File

@@ -22,6 +22,11 @@ export interface Skin {
is_equipped: boolean
}
export interface SkinTextureUrl {
original: string
normalized: string
}
export const DEFAULT_MODEL_SORTING = ['Steve', 'Alex'] as string[]
export const DEFAULT_MODELS: Record<string, SkinModel> = {

View File

@@ -1,96 +1,98 @@
import { ref } from 'vue'
import { getVersion } from '@tauri-apps/api/app'
import { initUpdateLauncher, getOS } from '@/helpers/utils.js'
import { ref } from 'vue'
import { getOS, initUpdateLauncher } from '@/helpers/utils.js'
export const allowState = ref(false)
export const installState = ref(false)
export const updateState = ref(false)
const currentOS = ref('')
const releaseLink = `https://git.astralium.su/api/v1/repos/didirus/AstralRinth/releases/latest`
const failedFetch = [`Failed to fetch remote releases:`, `Failed to fetch remote commits:`]
const api = `https://git.astralium.su/api/v1/repos/didirus/AstralRinth/releases/latest`
const osList = ['macos', 'windows', 'linux']
const macExtensionList = ['.dmg', '.pkg']
const windowsExtensionList = ['.exe', '.msi']
const systems = ['macos', 'windows', 'linux']
const macosExtensions = ['.dmg', '.pkg', '.app']
const windowsExtensions = ['.exe', '.msi']
const blacklistPrefixes = [
`dev`,
`nightly`,
`dirty`,
`dirty-dev`,
`dirty-nightly`,
`dirty_dev`,
`dirty_nightly`,
const blacklistBeginPrefixes = [
`dev`,
`nightly`,
`dirty`,
`dirty-dev`,
`dirty-nightly`,
`dirty_dev`,
`dirty_nightly`,
] // This is blacklisted builds for download. For example, file.startsWith('dev') is not allowed.
export async function getRemote(isDownloadState) {
var releaseData = null;
var result = false;
try {
const response = await fetch(releaseLink);
if (!response.ok) {
throw new Error(response.status);
}
const remoteData = await response.json();
currentOS.value = await getOS();
const remoteLatestReleaseTag = remoteData.tag_name;
releaseData = document.getElementById('releaseData');
const remoteVersion = releaseData ? (releaseData.textContent = remoteLatestReleaseTag) : remoteLatestReleaseTag;
if (osList.includes(currentOS.value.toLowerCase())) {
const localVersion = await getVersion();
const isUpdateAvailable = !remoteVersion.includes(localVersion);
updateState.value = isUpdateAvailable;
allowState.value = isUpdateAvailable;
} else {
updateState.value = false;
allowState.value = false;
}
if (isDownloadState) {
installState.value = true;
const builds = remoteData.assets;
const fileName = getInstaller(getExtension(), builds);
result = fileName ? await initUpdateLauncher(fileName[1], fileName[0], currentOS.value, true) : false;
installState.value = false;
}
console.log('Update available state is', updateState.value);
console.log('Remote version is', remoteVersion);
console.log('Local version is', await getVersion());
console.log('Operating System is', currentOS.value);
return result;
} catch (error) {
console.error(failedFetch[0], error);
if (!releaseData) {
const errorData = document.getElementById('releaseData');
if (errorData) {
errorData.textContent = `${error.message}`;
}
updateState.value = false;
allowState.value = false;
installState.value = false;
}
}
var releaseTag = null;
var releaseTitle = null;
var result = false;
currentOS.value = await getOS();
try {
const response = await fetch(api);
if (!response.ok) {
throw new Error(response.status);
}
const remoteData = await response.json();
releaseTag = document.getElementById('releaseTag');
releaseTitle = document.getElementById('releaseTitle');
if (releaseTag && releaseTitle) {
releaseTag.textContent = remoteData.tag_name;
releaseTitle.textContent = remoteData.name;
}
if (systems.includes(currentOS.value.toLowerCase())) {
const localVersion = await getVersion();
const isUpdateAvailable = !remoteData.tag_name.includes(localVersion);
updateState.value = isUpdateAvailable;
allowState.value = isUpdateAvailable;
} else {
updateState.value = false;
allowState.value = false;
}
if (isDownloadState) {
try {
installState.value = true;
const builds = remoteData.assets;
const fileName = getInstaller(getExtension(), builds);
result = fileName ? await initUpdateLauncher(fileName[1], fileName[0], currentOS.value, true) : false;
installState.value = false;
} catch (err) {
installState.value = false;
}
}
console.log('Update available state is', updateState.value);
console.log('Remote version is', remoteData.tag_name);
console.log('Remote title is', remoteData.name);
console.log('Local version is', await getVersion());
console.log('Operating System is', currentOS.value);
return result;
} catch (error) {
console.error("Failed to fetch remote releases:", error);
if (!releaseTag) {
updateState.value = false;
allowState.value = false;
installState.value = false;
}
}
}
function getInstaller(osExtension, builds) {
console.log(osExtension, builds)
for (const build of builds) {
if (blacklistPrefixes.some(prefix => build.name.startsWith(prefix))) {
continue;
}
if (osExtension.some(ext => build.name.endsWith(ext))) {
console.log(build.name, build.browser_download_url);
return [build.name, build.browser_download_url];
}
}
return null;
console.log(osExtension, builds)
for (const build of builds) {
if (blacklistBeginPrefixes.some(prefix => build.name.startsWith(prefix))) {
continue;
}
if (osExtension.some(ext => build.name.endsWith(ext))) {
console.log(build.name, build.browser_download_url);
return [build.name, build.browser_download_url];
}
}
return null;
}
function getExtension() {
return osList.find(osName => osName === currentOS.value.toLowerCase())?.endsWith('macos')
? macExtensionList
: windowsExtensionList;
return systems.find(osName => osName === currentOS.value.toLowerCase())?.endsWith('macos')
? macosExtensions
: windowsExtensions;
}

View File

@@ -6,6 +6,22 @@ export async function isDev() {
return await invoke('is_dev')
}
export async function areUpdatesEnabled() {
return await invoke('are_updates_enabled')
}
export async function getUpdateSize(updateRid) {
return await invoke('get_update_size', { rid: updateRid })
}
export async function enqueueUpdateForInstallation(updateRid) {
return await invoke('enqueue_update_for_installation', { rid: updateRid })
}
export async function removeEnqueuedUpdate() {
return await invoke('remove_enqueued_update')
}
// One of 'Windows', 'Linux', 'MacOS'
export async function getOS() {
return await invoke('plugin:utils|get_os')
@@ -27,6 +43,10 @@ export async function initAuthlibPatching(minecraftVersion, isMojang) {
return await invoke('plugin:utils|init_authlib_patching', { minecraftVersion, isMojang })
}
export async function isNetworkMetered() {
return await invoke('plugin:utils|is_network_metered')
}
export async function openPath(path) {
return await invoke('plugin:utils|open_path', { path })
}
@@ -54,13 +74,6 @@ export async function restartApp() {
return await invoke('restart_app')
}
/**
* @deprecated This method is no longer needed, and just returns its parameter
*/
export function sanitizePotentialFileUrl(url) {
return url
}
export const releaseColor = (releaseType) => {
switch (releaseType) {
case 'release':

View File

@@ -1,5 +1,5 @@
import { autoToHTML } from '@geometrically/minecraft-motd-parser'
import type { GameVersion } from '@modrinth/ui'
import { autoToHTML } from '@sfirew/minecraft-motd-parser'
import { invoke } from '@tauri-apps/api/core'
import dayjs from 'dayjs'

View File

@@ -0,0 +1,305 @@
{
"app.settings.developer-mode-enabled": {
"message": "Ontwikkelaarmodus geaktiveer."
},
"app.settings.downloading": {
"message": "Aflaai v{version}"
},
"app.settings.tabs.appearance": {
"message": "Voorkoms"
},
"app.settings.tabs.default-instance-options": {
"message": "Verstek instansie opsies"
},
"app.settings.tabs.feature-flags": {
"message": "Kenmerk vlae"
},
"app.settings.tabs.java-installations": {
"message": "Java installasies"
},
"app.settings.tabs.privacy": {
"message": "Privaatheid"
},
"app.settings.tabs.resource-management": {
"message": "Hulpbronbestuur"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} is gereed om te installeer! Herlaai nou werk, of outomaties wanneer jy naby Modrinth App."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} klaar afgelaai. Herlaai nou werk, of outomaties wanneer jy naby Modrinth App."
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} is nou beskikbaar! Aangesien jy op'n gemeterde netwerk, ons het nie outomaties laai dit."
},
"app.update-toast.changelog": {
"message": "Alle veranderinge"
},
"app.update-toast.download": {
"message": "Laai ({size})"
},
"app.update-toast.downloading": {
"message": "Aflaai..."
},
"app.update-toast.reload": {
"message": "Herlaai"
},
"app.update-toast.title": {
"message": "Die opdatering is beskikbaar"
},
"app.update-toast.title.download-complete": {
"message": "Aflaai voltooi"
},
"app.update.complete-toast.text": {
"message": "Klik hier om die veranderinge te sien."
},
"app.update.complete-toast.title": {
"message": "Weergawe {version} is suksesvol geïnstalleer!"
},
"app.update.download-update": {
"message": "Laai die opdatering af"
},
"app.update.downloading-update": {
"message": "Laai tans opdatering af ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Herlaai om opdatering te installeer"
},
"instance.add-server.add-and-play": {
"message": "voeg by en speel"
},
"instance.add-server.add-server": {
"message": "bediener byvoeg"
},
"instance.add-server.resource-pack.disabled": {
"message": "Gestrem"
},
"instance.add-server.resource-pack.enabled": {
"message": "aangeskakel"
},
"instance.add-server.resource-pack.prompt": {
"message": "spoed"
},
"instance.add-server.title": {
"message": "voeg 'n bediener by"
},
"instance.edit-server.title": {
"message": "wysig bediener"
},
"instance.edit-world.hide-from-home": {
"message": "versteek van die tuisblad"
},
"instance.edit-world.name": {
"message": "Naam"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft Wêreld"
},
"instance.edit-world.reset-icon": {
"message": "herstel ikoon"
},
"instance.edit-world.title": {
"message": "wêreld wysig"
},
"instance.filter.disabled": {
"message": "gestremde projekte"
},
"instance.filter.updates-available": {
"message": "opdaterings beskikbaar"
},
"instance.server-modal.address": {
"message": "adres"
},
"instance.server-modal.name": {
"message": "Naam"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft-bediener"
},
"instance.server-modal.resource-pack": {
"message": "Hulpbronpakket"
},
"instance.settings.tabs.general": {
"message": "Algemeen"
},
"instance.settings.tabs.general.delete": {
"message": "verwyder instansie"
},
"instance.settings.tabs.general.delete.button": {
"message": "verwyder instansie"
},
"instance.settings.tabs.general.delete.description": {
"message": "Vee 'n instansie permanent van jou toestel uit, insluitend jou wêrelde, konfigurasies en alle geïnstalleerde inhoud. Wees versigtig, want sodra jy 'n instansie verwyder het, is daar geen manier om dit te herstel nie."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Vee tans uit …"
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplikaat"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Kan nie dupliseer tydens installasie nie."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Duplikaat instansie"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Skep 'n kopie van hierdie instansie, insluitend wêrelde, konfigurasies, mods, ens."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Wwysig ikoon"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Verwyder ikoon"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Vervang ikoon"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Kies ikoon"
},
"instance.settings.tabs.general.library-groups": {
"message": "Biblioteekgroepe"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Skep nuwe groep"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Biblioteekgroepe laat jou toe om jou instansies in verskillende afdelings in jou biblioteek te organiseer."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Voer groepnaam in"
},
"instance.settings.tabs.general.name": {
"message": "Naam"
},
"instance.settings.tabs.hooks": {
"message": "Lanseerhake"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Pasgemaakte lanseerhake"
},
"instance.settings.tabs.hooks.description": {
"message": "Hooks laat gevorderde gebruikers toe om sekere stelselopdragte uit te voer voor en na die bekendstelling van die spel."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Na-uitgang"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Het gehardloop nadat die wedstryd geëindig het."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Voer die na-uitgang-opdrag in..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Voorbekendstelling"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Het gehardloop voordat die instansie geloods is."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Voer pre-lanceringsopdrag in..."
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Verpakking"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Verpakking opdrag vir die bekendstelling Van Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Voer die Verpakking-opdrag in..."
},
"instance.settings.tabs.installation": {
"message": "Installation"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} vir Minecraft {game_version} reeds geïnstalleer"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} reeds geïnstalleer"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Verander weergawe"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Installeer"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Installasie"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Haal modpack weergawes"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Installeer nuwe weergawe"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Huidiglik geïnstalleer"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Ontfoutinligting:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Haal modpack besonderhede"
},
"instance.settings.tabs.installation.game-version": {
"message": "Spel weergawe"
},
"instance.settings.tabs.installation.install": {
"message": "Installeer"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Installasie aan die gang"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} weergawe"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Kan nie gekoppelde modpack-besonderhede haal nie. Kontroleer asseblief u internetverbinding."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} is nie beskikbaar Vir Minecraft {version} nie. Probeer'n ander mod loader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Hierdie geval is gekoppel aan'n modpack, maar die modpack kon nie gevind word op Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Basis"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Herinstalleer modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Herinstalleer modpack weer"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Herinstalleer sal alle geïnstalleerde of gewysigde inhoud terugstel na wat deur die modpack verskaf word, en enige mods of inhoud wat jy bo-op die oorspronklike installasie bygevoeg het, verwyder. Dit kan onverwagte gedrag regstel as veranderinge aan die instansie aangebring is, maar as jou wêrelde nou afhanklik is van addisionele geïnstalleerde inhoud, kan dit bestaande wêrelde breek."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Wil u definitief hierdie instansie herinstalleer?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Stel die inhoud van die instansie terug na sy oorspronklike toestand, en verwyder enige mods of inhoud wat u bo-op die oorspronklike modpack bygevoeg het."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Herinstalleer modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Herstel"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Herstel"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Herstel herinstalleer Minecraft afhanklikhede en tjeks vir korrupsie. Dit kan probleme oplos as u speletjie nie begin nie weens foute wat verband hou met die lanseerder, maar dit sal nie probleme of ineenstortings wat verband hou met geïnstalleerde mods oplos nie."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Herstel geval?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Herstelwerk aan die gang"
}
}

View File

@@ -0,0 +1,419 @@
{
"app.settings.developer-mode-enabled": {
"message": "وضع المطوّر مُفعَّل."
},
"app.settings.tabs.appearance": {
"message": "المظهر"
},
"app.settings.tabs.default-instance-options": {
"message": "خيارات النسخة الافتراضية"
},
"app.settings.tabs.feature-flags": {
"message": "إعدادات المميزات"
},
"app.settings.tabs.java-installations": {
"message": "تثبيتات جافا"
},
"app.settings.tabs.privacy": {
"message": "الخصوصية"
},
"app.settings.tabs.resource-management": {
"message": "إدارة الموارد"
},
"instance.add-server.add-and-play": {
"message": "إضافة واللعب"
},
"instance.add-server.add-server": {
"message": "إضافة الخادم"
},
"instance.add-server.resource-pack.disabled": {
"message": "معطَّل"
},
"instance.add-server.resource-pack.enabled": {
"message": "مفعَّل"
},
"instance.add-server.resource-pack.prompt": {
"message": "موجه الأوامر"
},
"instance.add-server.title": {
"message": "إضافة خادم"
},
"instance.edit-server.title": {
"message": "تعديل خادم"
},
"instance.edit-world.hide-from-home": {
"message": "إخفاء من الصفحة الرئيسية"
},
"instance.edit-world.name": {
"message": "الاسم"
},
"instance.edit-world.placeholder-name": {
"message": "عالم ماينكرافت"
},
"instance.edit-world.reset-icon": {
"message": "إعادة تعيين الأيقونة"
},
"instance.edit-world.title": {
"message": "تعديل العالم"
},
"instance.filter.disabled": {
"message": "المشاريع المعطَّلة"
},
"instance.filter.updates-available": {
"message": "توجد تحديثات متاحة"
},
"instance.server-modal.address": {
"message": "العنوان"
},
"instance.server-modal.name": {
"message": "الاسم"
},
"instance.server-modal.placeholder-name": {
"message": "خادم ماين كرافت"
},
"instance.server-modal.resource-pack": {
"message": "حزمة الموارد"
},
"instance.settings.tabs.general": {
"message": "عام"
},
"instance.settings.tabs.general.delete": {
"message": "حذف النسخة"
},
"instance.settings.tabs.general.delete.button": {
"message": "حذف النسخة"
},
"instance.settings.tabs.general.delete.description": {
"message": "يحذف النسخة نهائيًا من جهازك، بما في ذلك عوالمك، إعداداتك، وجميع المحتويات المثبّتة. كن حذرًا، فبمجرد حذف النسخة لن تكون هناك أي طريقة لاستعادتها."
},
"instance.settings.tabs.general.deleting.button": {
"message": "جاري الحذف..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "نسخ"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "لا يمكن النسخ أثناء التثبيت."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "نسخة النسخة"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "إنشاء."
},
"instance.settings.tabs.general.edit-icon": {
"message": "تعديل الأيقونة"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "أزل الأيقونة"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "استبدل الأيقونة"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "اختر الأيقونة"
},
"instance.settings.tabs.general.library-groups": {
"message": "مجموعات المكتبة"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "إنشاء مجموعة جديدة"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "مجموعات المكتبة تساعدك على ترتيب حالاتك على أقسام مختلفة في مكتبتك."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "إدخال اسم المجموعة"
},
"instance.settings.tabs.general.name": {
"message": "الاسم"
},
"instance.settings.tabs.hooks": {
"message": "إجراءات تشغيل إضافية"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "إجراءات تشغيل إضافية مخصصة"
},
"instance.settings.tabs.hooks.description": {
"message": "إجراءات التشغيل المضافة تسمح للمستخدمين المتقدمين بإنشاء أوامر نظامية محددة قبل و عند تشغيل اللعبة."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "ما بعد الخروج"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "يتم تشغيله بعد إغلاق اللعبة."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "أدخل أمر ما بعد الخروج..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "ما قبل الإطلاق"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "يتم تشغيله قبل بَدْء تشغيل النسخة."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "أدخل أمر ما قبل الإطلاق..."
},
"instance.settings.tabs.hooks.title": {
"message": "خطافات تشغيل اللعبة"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "مُغلِّف"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "أمر غلاف لتشغيل ماين كرافت."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "أدخل أمر الغلاف..."
},
"instance.settings.tabs.installation": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} لماين كرافت {game_version} مثبت بالفعل"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "فانيلا {game_version} مُثبّتة بالفعل"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "تغيير الإصدار"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "جاري التثبيت"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "جاري جلب إصدارات حزمة المودات"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "جاري تثبيت الإصدار الجديد"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "المثبت حاليًا"
},
"instance.settings.tabs.installation.debug-information": {
"message": "معلومات التصحيح:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "جاري جلب تفاصيل حزمة المودات"
},
"instance.settings.tabs.installation.game-version": {
"message": "إصدار اللعبة"
},
"instance.settings.tabs.installation.install": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "التثبيت قيد التنفيذ"
},
"instance.settings.tabs.installation.loader-version": {
"message": "إصدار {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "ماين كرافت {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "تعذّر جلب تفاصيل حزمة المودات المرتبطة. يرجى التحقق من اتصالك بالإنترنت."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} غير متاح لماين كرافت {version}. جرّب محمّل مودات آخر."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "هذه النسخة مرتبطة بحزمة مودات، لكن لم يتم العثور على الحزمة على مودرنث."
},
"instance.settings.tabs.installation.platform": {
"message": "منصّة"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "إعادة تثبيت حزمة المودات"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "جاري إعادة تثبيت حزمة المودات"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "إعادة التثبيت ستُعيد جميع الملفات المثبتة أو المعدلة إلى ما توفره حُزْمة المودات، مع إزالة أي مودات أو محتوى أضفته بعد التثبيت الأصلي. قد يساعد ذلك في حل السلوك غير المتوقع إذا تم تعديل النسخة، لكن إذا كانت عوالمك تعتمد على محتويات إضافية، فقد يتسبب ذلك في تعطلها."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "هل أنت متأكد أنك تريد إعادة تثبيت هذه النسخة؟"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "يعيد محتوى النسخة إلى حالته الأصلية، مع إزالة جميع المودات أو المحتوى الذي أُضيف فوق حزمة المودات الأصلية."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "إعادة تثبيت حزمة المودات"
},
"instance.settings.tabs.installation.repair.button": {
"message": "إصلاح"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "جاري الإصلاح"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "الإصلاح يعيد تثبيت مكوّنات ماين كرافت ويتحقق من التلف. قد يساعد ذلك في حل المشكلات إذا كانت لعبتك لا تعمل بسبب أخطاء متعلقة ببرنامج التشغيل، لكنه لن يحل المشكلات أو الأعطال الناتجة عن المودات المثبّتة."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "إصلاح النسخة؟"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "الإصلاح قيد التنفيذ"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "إعادة التعيين إلى الحالة الحالية"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "عرض جميع الإصدارات"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "تغيير الإصدار"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "إعادة التثبيت"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "إصلاح"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "لا يمكن {action} أثناء التثبيت"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "لا يمكن {action} أثناء عدم الاتصال بالإنترنت"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "لا يمكن {action} أثناء الإصلاح"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(إصدار غير معروف)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "إلغاء ربط النسخة"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "إذا تابعت، فلن تتمكّن من إعادة ربطها إلا بإنشاء نسخة جديدة بالكامل. لن تتلقى بعد ذلك تحديثات حزمة المودات، وستصبح نسخة عادية."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "هل أنت متأكد أنك تريد إلغاء ربط هذه النسخة؟"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "هذه النسخة مرتبطة بحزمة مودات، مما يعني أنه لا يمكن تحديث المودات أو تغيير محمّل المودات أو إصدار ماين كرافت. سيؤدي إلغاء الربط إلى فصل هذه النسخة نهائيًا عن حزمة المودات."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "إلغاء الربط من حزمة المودات"
},
"instance.settings.tabs.java": {
"message": "جافا والذاكرة"
},
"instance.settings.tabs.java.environment-variables": {
"message": "المتغيرات البيئية"
},
"instance.settings.tabs.java.hooks": {
"message": "الخطافات"
},
"instance.settings.tabs.java.java-arguments": {
"message": "وسائط جافا"
},
"instance.settings.tabs.java.java-installation": {
"message": "تثبيت جافا"
},
"instance.settings.tabs.java.java-memory": {
"message": "الذاكرة المخصَّصة"
},
"instance.settings.tabs.window": {
"message": "النافذة"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "إعدادات نافذة مخصّصة"
},
"instance.settings.tabs.window.fullscreen": {
"message": "ملء الشاشة"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "جعل اللعبة تبدأ في وضع ملء الشاشة عند التشغيل (باستخدام options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "الارتفاع"
},
"instance.settings.tabs.window.height.description": {
"message": "ارتفاع نافذة اللعبة عند التشغيل."
},
"instance.settings.tabs.window.height.enter": {
"message": "أدخل الارتفاع..."
},
"instance.settings.tabs.window.width": {
"message": "العرض"
},
"instance.settings.tabs.window.width.description": {
"message": "عرض نافذة اللعبة عند التشغيل."
},
"instance.settings.tabs.window.width.enter": {
"message": "أدخل العرض..."
},
"instance.settings.title": {
"message": "الإعدادات"
},
"instance.worlds.a_minecraft_server": {
"message": "خادم ماين كرافت"
},
"instance.worlds.cant_connect": {
"message": "لا يمكن الاتصال بالخادم"
},
"instance.worlds.copy_address": {
"message": "نسخ العنوان"
},
"instance.worlds.dont_show_on_home": {
"message": "عدم العرض في الصفحة الرئيسية"
},
"instance.worlds.filter.available": {
"message": "متاح"
},
"instance.worlds.game_already_open": {
"message": "النسخة مفتوحة بالفعل"
},
"instance.worlds.hardcore": {
"message": "وضع الهاردكور"
},
"instance.worlds.incompatible_server": {
"message": "الخادم غير متوافق"
},
"instance.worlds.no_contact": {
"message": "تعذّر الاتصال بالخادم"
},
"instance.worlds.no_server_quick_play": {
"message": "يمكنك الدخول مباشرة إلى الخوادم فقط على ماين كرافت Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "يمكنك الدخول مباشرة إلى عوالم اللعب الفردي فقط على ماين كرافت 1.20+"
},
"instance.worlds.play_instance": {
"message": "تشغيل النسخة"
},
"instance.worlds.type.server": {
"message": "الخادم"
},
"instance.worlds.type.singleplayer": {
"message": "لعب فردي"
},
"instance.worlds.view_instance": {
"message": "عرض النسخة"
},
"instance.worlds.world_in_use": {
"message": "العالم قيد الاستخدام"
},
"search.filter.locked.instance": {
"message": "مقدَّم من النسخة"
},
"search.filter.locked.instance-game-version.title": {
"message": "إصدار اللعبة مقدَّم من النسخة"
},
"search.filter.locked.instance-loader.title": {
"message": "المحمّل مقدَّم من النسخة"
},
"search.filter.locked.instance.sync": {
"message": "مزامنة مع النسخة"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "تم تفعيل وضع المطوّر."
},
"app.settings.downloading": {
"message": "جار تنزيل الإصدار {version}"
},
"app.settings.tabs.appearance": {
"message": "المظهر"
},
"app.settings.tabs.default-instance-options": {
"message": "خيارات النسخة الافتراضية"
},
"app.settings.tabs.feature-flags": {
"message": "أعلام الميزات"
},
"app.settings.tabs.java-installations": {
"message": "تثبيتات جافا"
},
"app.settings.tabs.privacy": {
"message": "الخصوصية"
},
"app.settings.tabs.resource-management": {
"message": "إدارة الموارد"
},
"app.update-toast.body": {
"message": "تطبيق Modrinth الإصدار {version} جاهز للتثبيت!\nأعد التحميل لتحديث التطبيق الآن، أو سيتم التحديث تلقائيًا عند إغلاق تطبيق Modrinth."
},
"app.update-toast.body.download-complete": {
"message": "تطبيق Modrinth الإصدار {version} جاهز للتثبيت!\nأعد التحميل لتحديث التطبيق الآن، أو سيتم التحديث تلقائيًا عند إغلاق تطبيق Modrinth."
},
"app.update-toast.body.metered": {
"message": "تطبيق Modrinth الإصدار {version} متاح الآن!\nنظرًا لأنك تستخدم شبكة محدودة البيانات، لم نقم بتنزيل التحديث تلقائيًا.\n"
},
"app.update-toast.changelog": {
"message": "سجلّ التغييرات"
},
"app.update-toast.download": {
"message": "تنزيل ({size})"
},
"app.update-toast.downloading": {
"message": "جار التنزيل..."
},
"app.update-toast.reload": {
"message": "إعادة تحميل"
},
"app.update-toast.title": {
"message": "تحديث متاح"
},
"app.update-toast.title.download-complete": {
"message": "اكتمل التنزيل"
},
"app.update.complete-toast.text": {
"message": "انقر هنا لعرض سجلّ التغييرات."
},
"app.update.complete-toast.title": {
"message": "تم تثبيت الإصدار {version} بنجاح!"
},
"app.update.download-update": {
"message": "تنزيل التحديث"
},
"app.update.downloading-update": {
"message": "جار تنزيل التحديث ({percent}٪)"
},
"app.update.reload-to-update": {
"message": "أعد التحميل لتثبيت التحديث"
},
"friends.action.add-friend": {
"message": "إضافة صديق"
},
"friends.action.view-friend-requests": {
"message": "{count} {count, plural, one {طلب صداقة} other {طلبات صداقة}}"
},
"friends.add-friend.submit": {
"message": "إرسال طلب صداقة"
},
"friends.add-friend.title": {
"message": "جار إضافة صديق"
},
"friends.add-friend.username.description": {
"message": "قد يختلف عن اسم المستخدم الخاص بهم في Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "أدخل اسم مستخدم Modrinth..."
},
"friends.add-friend.username.title": {
"message": "ما اسم مستخدم صديقك في Modrinth؟"
},
"friends.add-friends-to-share": {
"message": "<link>أضف أصدقاء</link> لمعرفة ما الذي يلعبونه!"
},
"friends.friend.cancel-request": {
"message": "إلغاء الطلب"
},
"friends.friend.remove-friend": {
"message": "إزالة صديق"
},
"friends.friend.request-sent": {
"message": "إرسال طلب الصداقة"
},
"friends.friend.view-profile": {
"message": "عرض الملف الشخصي"
},
"friends.heading": {
"message": "أصدقاء"
},
"friends.heading.active": {
"message": "نشط"
},
"friends.heading.offline": {
"message": "غير متصل"
},
"friends.heading.online": {
"message": "متصل"
},
"friends.heading.pending": {
"message": "قيد الانتظار"
},
"friends.no-friends-match": {
"message": "لا يوجد أصدقاء يطابقون ''{query}''"
},
"friends.search-friends-placeholder": {
"message": "ابحث عن الأصدقاء..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>سجّل الدخول إلى حساب Modrinth</link> لإضافة الأصدقاء ومعرفة ما الذي يلعبونه!"
},
"instance.add-server.add-and-play": {
"message": "إضافة واللعب"
},
"instance.add-server.add-server": {
"message": "إضافة الخادم"
},
"instance.add-server.resource-pack.disabled": {
"message": "معطَّل"
},
"instance.add-server.resource-pack.enabled": {
"message": "مفعَّل"
},
"instance.add-server.resource-pack.prompt": {
"message": "موجه الأوامر"
},
"instance.add-server.title": {
"message": "إضافة خادم"
},
"instance.edit-server.title": {
"message": "تعديل خادم"
},
"instance.edit-world.hide-from-home": {
"message": "إخفاء من الصفحة الرئيسية"
},
"instance.edit-world.name": {
"message": "الاسم"
},
"instance.edit-world.placeholder-name": {
"message": "عالم ماينكرافت"
},
"instance.edit-world.reset-icon": {
"message": "إعادة تعيين الأيقونة"
},
"instance.edit-world.title": {
"message": "تعديل العالم"
},
"instance.filter.disabled": {
"message": "المشاريع المعطَّلة"
},
"instance.filter.updates-available": {
"message": "توجد تحديثات متاحة"
},
"instance.server-modal.address": {
"message": "العنوان"
},
"instance.server-modal.name": {
"message": "الاسم"
},
"instance.server-modal.placeholder-name": {
"message": "خادم ماين كرافت"
},
"instance.server-modal.resource-pack": {
"message": "حزمة الموارد"
},
"instance.settings.tabs.general": {
"message": "عام"
},
"instance.settings.tabs.general.delete": {
"message": "حذف النسخة"
},
"instance.settings.tabs.general.delete.button": {
"message": "حذف النسخة"
},
"instance.settings.tabs.general.delete.description": {
"message": "يحذف النسخة نهائيًا من جهازك، بما في ذلك عوالمك، إعداداتك، وجميع المحتويات المثبّتة. كن حذرًا، فبمجرد حذف النسخة لن تكون هناك أي طريقة لاستعادتها."
},
"instance.settings.tabs.general.deleting.button": {
"message": "جاري الحذف..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "نسخ"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "لا يمكن النسخ أثناء التثبيت."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "نسخة النسخة"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "إنشاء."
},
"instance.settings.tabs.general.edit-icon": {
"message": "تعديل الأيقونة"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "أزل الأيقونة"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "استبدل الأيقونة"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "اختر الأيقونة"
},
"instance.settings.tabs.general.library-groups": {
"message": "مجموعات المكتبة"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "إنشاء مجموعة جديدة"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "مجموعات المكتبة تساعدك على ترتيب حالاتك على أقسام مختلفة في مكتبتك."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "إدخال اسم المجموعة"
},
"instance.settings.tabs.general.name": {
"message": "الاسم"
},
"instance.settings.tabs.hooks": {
"message": "إجراءات تشغيل إضافية"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "إجراءات تشغيل إضافية مخصصة"
},
"instance.settings.tabs.hooks.description": {
"message": "إجراءات التشغيل المضافة تسمح للمستخدمين المتقدمين بإنشاء أوامر نظامية محددة قبل و عند تشغيل اللعبة."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "ما بعد الخروج"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "يتم تشغيله بعد إغلاق اللعبة."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "أدخل أمر ما بعد الخروج..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "ما قبل الإطلاق"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "يتم تشغيله قبل بَدْء تشغيل النسخة."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "أدخل أمر ما قبل الإطلاق..."
},
"instance.settings.tabs.hooks.title": {
"message": "خطافات تشغيل اللعبة"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "مُغلِّف"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "أمر غلاف لتشغيل ماين كرافت."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "أدخل أمر الغلاف..."
},
"instance.settings.tabs.installation": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} لماين كرافت {game_version} مثبت بالفعل"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "فانيلا {game_version} مُثبّتة بالفعل"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "تغيير الإصدار"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "جاري التثبيت"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "جاري جلب إصدارات حزمة المودات"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "جاري تثبيت الإصدار الجديد"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "المثبت حاليًا"
},
"instance.settings.tabs.installation.debug-information": {
"message": "معلومات التصحيح:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "جاري جلب تفاصيل حزمة المودات"
},
"instance.settings.tabs.installation.game-version": {
"message": "إصدار اللعبة"
},
"instance.settings.tabs.installation.install": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "التثبيت قيد التنفيذ"
},
"instance.settings.tabs.installation.loader-version": {
"message": "إصدار {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "ماين كرافت {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "تعذّر جلب تفاصيل حزمة المودات المرتبطة. يرجى التحقق من اتصالك بالإنترنت."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} غير متاح لماين كرافت {version}. جرّب محمّل مودات آخر."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "هذه النسخة مرتبطة بحزمة مودات، لكن لم يتم العثور على الحزمة على مودرنث."
},
"instance.settings.tabs.installation.platform": {
"message": "منصّة"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "إعادة تثبيت حزمة المودات"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "جاري إعادة تثبيت حزمة المودات"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "إعادة التثبيت ستُعيد جميع الملفات المثبتة أو المعدلة إلى ما توفره حُزْمة المودات، مع إزالة أي مودات أو محتوى أضفته بعد التثبيت الأصلي. قد يساعد ذلك في حل السلوك غير المتوقع إذا تم تعديل النسخة، لكن إذا كانت عوالمك تعتمد على محتويات إضافية، فقد يتسبب ذلك في تعطلها."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "هل أنت متأكد أنك تريد إعادة تثبيت هذه النسخة؟"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "يعيد محتوى النسخة إلى حالته الأصلية، مع إزالة جميع المودات أو المحتوى الذي أُضيف فوق حزمة المودات الأصلية."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "إعادة تثبيت حزمة المودات"
},
"instance.settings.tabs.installation.repair.button": {
"message": "إصلاح"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "جاري الإصلاح"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "الإصلاح يعيد تثبيت مكوّنات ماين كرافت ويتحقق من التلف. قد يساعد ذلك في حل المشكلات إذا كانت لعبتك لا تعمل بسبب أخطاء متعلقة ببرنامج التشغيل، لكنه لن يحل المشكلات أو الأعطال الناتجة عن المودات المثبّتة."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "إصلاح النسخة؟"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "الإصلاح قيد التنفيذ"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "إعادة التعيين إلى الحالة الحالية"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "عرض جميع الإصدارات"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "تغيير الإصدار"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "تثبيت"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "إعادة التثبيت"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "إصلاح"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "لا يمكن {action} أثناء التثبيت"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "لا يمكن {action} أثناء عدم الاتصال بالإنترنت"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "لا يمكن {action} أثناء الإصلاح"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(إصدار غير معروف)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "إلغاء ربط النسخة"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "إذا تابعت، فلن تتمكّن من إعادة ربطها إلا بإنشاء نسخة جديدة بالكامل. لن تتلقى بعد ذلك تحديثات حزمة المودات، وستصبح نسخة عادية."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "هل أنت متأكد أنك تريد إلغاء ربط هذه النسخة؟"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "هذه النسخة مرتبطة بحزمة مودات، مما يعني أنه لا يمكن تحديث المودات أو تغيير محمّل المودات أو إصدار ماين كرافت. سيؤدي إلغاء الربط إلى فصل هذه النسخة نهائيًا عن حزمة المودات."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "إلغاء الربط من حزمة المودات"
},
"instance.settings.tabs.java": {
"message": "جافا والذاكرة"
},
"instance.settings.tabs.java.environment-variables": {
"message": "المتغيرات البيئية"
},
"instance.settings.tabs.java.hooks": {
"message": "الخطافات"
},
"instance.settings.tabs.java.java-arguments": {
"message": "وسائط جافا"
},
"instance.settings.tabs.java.java-installation": {
"message": "تثبيت جافا"
},
"instance.settings.tabs.java.java-memory": {
"message": "الذاكرة المخصَّصة"
},
"instance.settings.tabs.window": {
"message": "النافذة"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "إعدادات نافذة مخصّصة"
},
"instance.settings.tabs.window.fullscreen": {
"message": "ملء الشاشة"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "جعل اللعبة تبدأ في وضع ملء الشاشة عند التشغيل (باستخدام options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "الارتفاع"
},
"instance.settings.tabs.window.height.description": {
"message": "ارتفاع نافذة اللعبة عند التشغيل."
},
"instance.settings.tabs.window.height.enter": {
"message": "أدخل الارتفاع..."
},
"instance.settings.tabs.window.width": {
"message": "العرض"
},
"instance.settings.tabs.window.width.description": {
"message": "عرض نافذة اللعبة عند التشغيل."
},
"instance.settings.tabs.window.width.enter": {
"message": "أدخل العرض..."
},
"instance.settings.title": {
"message": "الإعدادات"
},
"instance.worlds.a_minecraft_server": {
"message": "خادم ماين كرافت"
},
"instance.worlds.cant_connect": {
"message": "لا يمكن الاتصال بالخادم"
},
"instance.worlds.copy_address": {
"message": "نسخ العنوان"
},
"instance.worlds.dont_show_on_home": {
"message": "عدم العرض في الصفحة الرئيسية"
},
"instance.worlds.filter.available": {
"message": "متاح"
},
"instance.worlds.game_already_open": {
"message": "النسخة مفتوحة بالفعل"
},
"instance.worlds.hardcore": {
"message": "وضع الهاردكور"
},
"instance.worlds.incompatible_server": {
"message": "الخادم غير متوافق"
},
"instance.worlds.no_contact": {
"message": "تعذّر الاتصال بالخادم"
},
"instance.worlds.no_server_quick_play": {
"message": "يمكنك الدخول مباشرة إلى الخوادم فقط على ماين كرافت Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "يمكنك الدخول مباشرة إلى عوالم اللعب الفردي فقط على ماين كرافت 1.20+"
},
"instance.worlds.play_instance": {
"message": "تشغيل النسخة"
},
"instance.worlds.type.server": {
"message": "الخادم"
},
"instance.worlds.type.singleplayer": {
"message": "لعب فردي"
},
"instance.worlds.view_instance": {
"message": "عرض النسخة"
},
"instance.worlds.world_in_use": {
"message": "العالم قيد الاستخدام"
},
"search.filter.locked.instance": {
"message": "مقدَّم من النسخة"
},
"search.filter.locked.instance-game-version.title": {
"message": "إصدار اللعبة مقدَّم من النسخة"
},
"search.filter.locked.instance-loader.title": {
"message": "المحمّل مقدَّم من النسخة"
},
"search.filter.locked.instance.sync": {
"message": "مزامنة مع النسخة"
}
}

View File

@@ -0,0 +1,8 @@
{
"app.settings.developer-mode-enabled": {
"message": ""
},
"app.settings.downloading": {
"message": ""
}
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,131 @@
{
"app.settings.developer-mode-enabled": {
"message": "Режим за разработчици активиран."
},
"app.settings.tabs.appearance": {
"message": "Външен вид"
},
"app.settings.tabs.default-instance-options": {
"message": "Опции по подразбиране"
},
"app.settings.tabs.java-installations": {
"message": "Java инсталации"
},
"app.settings.tabs.privacy": {
"message": "Поверителност"
},
"app.settings.tabs.resource-management": {
"message": "Контрол на ресурси"
},
"instance.add-server.add-and-play": {
"message": "Добави и играй"
},
"instance.add-server.add-server": {
"message": "Добави сървър"
},
"instance.add-server.resource-pack.disabled": {
"message": "Деактивирано"
},
"instance.add-server.resource-pack.enabled": {
"message": "Активирано"
},
"instance.add-server.title": {
"message": "Добавяне на сървър"
},
"instance.edit-server.title": {
"message": "Редактиране на сървър"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Намиране на версиите на modpack-овете"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Инсталиране на нова версия"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "В момента инсталирано"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Намиране на детайли на modpack"
},
"instance.settings.tabs.installation.game-version": {
"message": "Версия на играта"
},
"instance.settings.tabs.installation.install": {
"message": "Инсталиране"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Инсталира се в момента"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} версия"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Не може да се намери този modpack. Моля проверете интернет връзката си."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} не е наличен за Minecraft версия {version}. Моля пробвайте друг mod loader."
},
"instance.settings.tabs.installation.platform": {
"message": "Платформа"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Преинсталирай"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Преинсталиране"
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Сигурни ли сте, че искате да преинсталирате това?"
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Повторно инсталиране на modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Поправи"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Поправяне"
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Поправи?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Поправка..."
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Нулирай до в моменташен"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Покажи всички версии"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "променяте версията"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "инсталирате"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "преинсталирате"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "поправяте"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Не можете да {action} докато се инсталира."
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Не можете да {action} докато нямате достъп до Интернет"
},
"instance.settings.tabs.window": {
"message": "Прозорец"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Различни настройки на прозорец"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Пълен екран"
}
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,179 @@
{
"app.settings.developer-mode-enabled": {
"message": "Mode de desenvolupament activat."
},
"app.settings.tabs.appearance": {
"message": "Aparença"
},
"app.settings.tabs.default-instance-options": {
"message": "Opcions d'instància per defecte"
},
"app.settings.tabs.java-installations": {
"message": "Instal·lacions de Java"
},
"app.settings.tabs.privacy": {
"message": "Privacitat"
},
"instance.add-server.add-and-play": {
"message": "Afegir i jugar"
},
"instance.add-server.add-server": {
"message": "Afegir servidor"
},
"instance.add-server.resource-pack.disabled": {
"message": "Desactivat"
},
"instance.add-server.resource-pack.enabled": {
"message": "Activat"
},
"instance.add-server.resource-pack.prompt": {
"message": "Preguntar"
},
"instance.add-server.title": {
"message": "Afegir un servidor"
},
"instance.edit-server.title": {
"message": "Editar servidor"
},
"instance.edit-world.hide-from-home": {
"message": "Amagar de l'inici"
},
"instance.edit-world.name": {
"message": "Nom"
},
"instance.edit-world.placeholder-name": {
"message": "Món de Minecraft"
},
"instance.edit-world.reset-icon": {
"message": "Reinicia l'icona"
},
"instance.edit-world.title": {
"message": "Edita el món"
},
"instance.filter.disabled": {
"message": "Projectes desactivats"
},
"instance.filter.updates-available": {
"message": "Actualitzacions disponibles"
},
"instance.server-modal.address": {
"message": "Adreça web"
},
"instance.server-modal.name": {
"message": "Nom"
},
"instance.server-modal.placeholder-name": {
"message": "Servidor de Minecraft"
},
"instance.server-modal.resource-pack": {
"message": "Paquet de recursos"
},
"instance.settings.tabs.general": {
"message": "General"
},
"instance.settings.tabs.general.delete": {
"message": "Suprimeix la instància"
},
"instance.settings.tabs.general.delete.button": {
"message": "Suprimir instància"
},
"instance.settings.tabs.general.delete.description": {
"message": "Suprimeix permanentment una instància del dispositiu, inclosos els vostres mons, configuracions i tot el contingut instal·lat. Aneu amb compte, ja que un cop suprimiu una instància no hi ha manera de recuperar-la."
},
"instance.settings.tabs.general.deleting.button": {
"message": "S'està suprimint..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplicar"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "No es pot duplicar durant la instal·lació."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Duplica la instància"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Crea una còpia d'aquesta instància, incloent-hi mons, configuracions, mods, etc."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Edita la icona"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Treu icona"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Substitueix icona"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Selecciona icona"
},
"instance.settings.tabs.general.library-groups": {
"message": "Grup de llibreries"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Crear nou grup"
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Introdueix nom del grup"
},
"instance.settings.tabs.general.name": {
"message": "Nom"
},
"instance.settings.tabs.installation": {
"message": "Instal·lació"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Canviar versió"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Instal·lar"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Instal·lant"
},
"instance.settings.tabs.installation.game-version": {
"message": "Versió del joc"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.platform": {
"message": "Plataforma"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Reparar"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "canviar versió"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "reparar"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(versió desconeguda)"
},
"instance.settings.tabs.java": {
"message": "Java i memòria"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Pantalla completa"
},
"instance.settings.tabs.window.height": {
"message": "Altura"
},
"instance.settings.tabs.window.width": {
"message": "Amplada"
},
"instance.settings.title": {
"message": "Configuració"
},
"instance.worlds.filter.available": {
"message": "Disponible"
},
"instance.worlds.play_instance": {
"message": "Jugar instància"
},
"instance.worlds.type.server": {
"message": "Servidor"
}
}

View File

@@ -0,0 +1,473 @@
{
"app.settings.developer-mode-enabled": {
"message": "Gipaandar ang paagi sa tigpalambo."
},
"app.settings.downloading": {
"message": "Gakarganug sa v{version}"
},
"app.settings.tabs.appearance": {
"message": "Panagway"
},
"app.settings.tabs.default-instance-options": {
"message": "Mga kapilian sa sukaranan nga pananglitan"
},
"app.settings.tabs.feature-flags": {
"message": "Bandera sa mga panagway"
},
"app.settings.tabs.java-installations": {
"message": "Mga pagtaod sa Java"
},
"app.settings.tabs.privacy": {
"message": "Pribasiya"
},
"app.settings.tabs.resource-management": {
"message": "Pagdumala sa kahinguhaan"
},
"app.update-toast.body": {
"message": "Andam na mataud ang Modrinth App v{version}! Pagkarga kausab aron mapasibo, o kinaugalingon pagtak-op sa Modrinth App."
},
"app.update-toast.body.download-complete": {
"message": "Nahuman ang pagkarganug sa Modrinth App v{version}. Pagkarga kausab aron mapasibo, o kinaugalingon pagtak-op sa Modrinth App."
},
"app.update-toast.body.metered": {
"message": "Magamit na karon ang Modrinth App! Wala namo karganugi daan kay inihap man ang imong pum-ot."
},
"app.update-toast.changelog": {
"message": "Talaan sa Kausaban"
},
"app.update-toast.download": {
"message": "Karganugi ({size})"
},
"app.update-toast.downloading": {
"message": "Gakarganug..."
},
"app.update-toast.reload": {
"message": "Kargaha pag-usab"
},
"app.update-toast.title": {
"message": "Naay bag-o nga pagpasibo"
},
"app.update-toast.title.download-complete": {
"message": "Nahuman ang pagkarganug"
},
"app.update.complete-toast.text": {
"message": "Panuplok diri aron malantaw ang talaan sa kausaban."
},
"app.update.complete-toast.title": {
"message": "Malampusong nataud ang bersiyon nga {version}!"
},
"app.update.download-update": {
"message": "Karganugi ang kausaban"
},
"app.update.downloading-update": {
"message": "Gakarganug sa pagpasibo ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Andam mataud ang pagpasibo"
},
"friends.action.add-friend": {
"message": "Pagdugang og higala"
},
"friends.action.view-friend-requests": {
"message": "{count} ka hangyo sa pakighigala"
},
"friends.add-friend.submit": {
"message": "Pagpadala og hangyo sa pakighigala"
},
"friends.add-friend.title": {
"message": "Pagdugang og higala"
},
"friends.add-friend.username.description": {
"message": "Mahimong galahi sa ngalan nila sa Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "Ibutang ang ngalan sa tiggamit sa Modrinth..."
},
"friends.add-friend.username.title": {
"message": "Unsa man ang ngalan sa imong higala sa Modrinth?"
},
"friends.add-friends-to-share": {
"message": "<link>Pagdugang og mga higala</link> aron makit-an ang ilang ginadula!"
},
"friends.friend.cancel-request": {
"message": "Bawia ang hangyo"
},
"friends.friend.remove-friend": {
"message": "Tangtangi ang higala"
},
"friends.friend.request-sent": {
"message": "Gipadala na ang hangyo sa pakighigala"
},
"friends.friend.view-profile": {
"message": "Tan-awa ang propayl"
},
"friends.heading": {
"message": "Mga higala"
},
"friends.heading.active": {
"message": "Malihokon"
},
"friends.heading.offline": {
"message": "Sira"
},
"friends.heading.online": {
"message": "Buka"
},
"friends.heading.pending": {
"message": "Gahulat"
},
"friends.no-friends-match": {
"message": "Walay higala nga motukma sa \"{query}\""
},
"friends.search-friends-placeholder": {
"message": "Mangita sa mga higala..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Pag-sign-in sa Modrinth account</link> aron makadugang og mga higala ug mahibal-an ang ginadula nila!"
},
"instance.add-server.add-and-play": {
"message": "Idugang ug dulaa"
},
"instance.add-server.add-server": {
"message": "Idugang ang magsisilbi"
},
"instance.add-server.resource-pack.disabled": {
"message": "Dili motugot"
},
"instance.add-server.resource-pack.enabled": {
"message": "Gitugotan"
},
"instance.add-server.resource-pack.prompt": {
"message": "Magpatugot"
},
"instance.add-server.title": {
"message": "Pagdugang og magsisilbi"
},
"instance.edit-server.title": {
"message": "Usba ang magsisilbi"
},
"instance.edit-world.hide-from-home": {
"message": "Ayaw ipakita sa Puluy-anang panid"
},
"instance.edit-world.name": {
"message": "Ngalan"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft nga Kalibutan"
},
"instance.edit-world.reset-icon": {
"message": "Pag-usab sa amoy"
},
"instance.edit-world.title": {
"message": "Usba ang kalibutan"
},
"instance.filter.disabled": {
"message": "Di-paganhong mga proyekto"
},
"instance.filter.updates-available": {
"message": "Naay bag-ong mga kausaban"
},
"instance.server-modal.address": {
"message": "Padad-anan"
},
"instance.server-modal.name": {
"message": "Ngalan"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft nga Magsisilbi"
},
"instance.server-modal.resource-pack": {
"message": "Putos sa kahinguhaan"
},
"instance.settings.tabs.general": {
"message": "Tinanan"
},
"instance.settings.tabs.general.delete": {
"message": "Panas-i kining pananglitan"
},
"instance.settings.tabs.general.delete.button": {
"message": "Panas-i kining pananglitan"
},
"instance.settings.tabs.general.delete.description": {
"message": "Malungtarong mopanas ang pananglitan sa imong himan, apil na ang imong mga kalibutan, paghan-ay, ug tanang gitaod nga sulod. Pag-amping, dili na mabawi kung gipanas na nimo ang pananglitan."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Gapanas..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Paghulad"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Dili makahulad samtang nga gataud."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Paghulad sa pananglitan"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Buhatan og awat kining pananglitan, apil na ang imong mga kalibutan, paghan-ay, kausaban, ug uban pa."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Usba ang amoy"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Tangtangi ang amoy"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Pulihan ang amoy"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Pamili og amoy"
},
"instance.settings.tabs.general.library-groups": {
"message": "Mga pundok sa librarya"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Pagbuhat og bag-o nga pundok"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Gitugotan sa mga pundok sa librarya nga imong mahan-ay ang imong mga pananglitan sa nagkalain-lain nga bahin sa imong librarya."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Ibutang ang ngalan sa pundok"
},
"instance.settings.tabs.general.name": {
"message": "Ngalan"
},
"instance.settings.tabs.hooks": {
"message": "Mga kaw-it sa paglansad"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Mga pinatuyo nga kaw-it sa paglansad"
},
"instance.settings.tabs.hooks.description": {
"message": "Gitugotan sa mga kaw-it ang mga eksperto nga mga tiggamit nga makapadagan og mga sistema nga sugo ayha ug paghuman malansad ang dula."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Human-matak-op"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Ipadagan paghuman matak-op ang dula."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Ibutang ang human-matak-op nga sugo..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Ayha-malansad"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Ipadagan ayha malansad ang pananglitan."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Ibutang ang ayha-malansad nga sugo..."
},
"instance.settings.tabs.hooks.title": {
"message": "Mga kaw-it sa paglansad sa dula"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Pamutos"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Pamutos nga sugo sa paglansad sa Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Ibutang ang pamutos nga sugo..."
},
"instance.settings.tabs.installation": {
"message": "Pagtaud"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "Nataud naman ang {platform} {version} alang sa Minecraft {game_version}"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Nataud naman ang Banilya nga {game_version}"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Pulihan og bersiyon"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Itaud"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Gataud"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Gapangita og mga bersiyon sa mga putos sa kausaban"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Gataud sa bag-o nga bersiyon"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Pagkakarong taud"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Kasayoran sa pagputli:"
},
"instance.settings.tabs.installation.game-version": {
"message": "Bersiyon sa dula"
},
"instance.settings.tabs.installation.install": {
"message": "Itaud"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Nagtaud karon"
},
"instance.settings.tabs.installation.loader-version": {
"message": "Bersiyon sa {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "Dili magamit ang {loader} sa Minecraft {version}. Sulayi ang ubang tigkarga sa kausaban."
},
"instance.settings.tabs.installation.platform": {
"message": "Pantawan"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Itaud pag-usab ang putos sa kausaban"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Nagtaud pag-usab sa putos sa kusaban"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Mahimo nga mobalik sa sinugdan ang tanang gitaod o giusab nga sulod sa unsay ihatag sa putos sa kausaban, tangtangon ang mga kausaban o sulod nga imong gidugang apil na ang lintunganay nga putos sa kausaban. Mahimo nga maayo ang mga tuhaw nga batasan kon naay pagbag-o sa pananglitan, apan kon gasalig na ang imong kalibutan sa dinugang nga sulod, mahimo nga madaut ani ang daan nga mga kalibutan."
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Ibalik ang mga sulod sa pananglitan sa unang kahimtang, tangtangon ang mga kausaban o sulod nga imong gidugang apil na ang lintunganay nga putos sa kausaban."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Itaud pag-usab ang putos sa kausaban"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Ayohon"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Gaayo"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Sa pag-ayo, mataud pagbalik ang mga sinaligan sa Minecraft ug mangita og mga kadunot. Mahimo nga masulbad niini ang mga isyu kun dili malunsad ang dula tungod sa mga kasaypan matud sa tiglansad, apan dili ni masulbad ang mga isyu o pagdusmog matud sa mga gitaud nga kausaban."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Ayohon ang pananglitan?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Nag-ayo karon"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Sa kasamtang pag-usab "
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Ipakita ang tanang bersiyon"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "pulihan og bersiyon"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "itaud"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "itaud pag-usab"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "ayohon"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Dili maka-{action} samtang nga gataud"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Dili maka-{action} samtang binugto"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Dili maka-{action} samtang nag-ayo"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(diinilang bersiyon)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Pagbugto sa pananglitan"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Kun imong ipadayon, dili na nimo makatay pagbalik nga wala mohimo og bag-o nga pananglitan. Dili na ka makadawat og pagpasibo sa putos sa kausaban ug mahimo kining naandan nga."
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Nakakatay kining pananglitan sa usa ka putos sa kausaban, pasabot ani nga dili mapasibo ang mga kausaban og dili nimo mausab ang tigkarga sa kausaban o ang bersiyon sa Minecraft. Kanunay nga mabugto kining pananglitan og putos sa kausabon kun tangtangon ang katay."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Pagbugto sa putos sa kausaban"
},
"instance.settings.tabs.java": {
"message": "Java at memorya"
},
"instance.settings.tabs.java.hooks": {
"message": "Mga kaw-it"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Mga lantugi sa java"
},
"instance.settings.tabs.java.java-installation": {
"message": "Pagtaud sa Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Memoryang gigahin"
},
"instance.settings.tabs.window": {
"message": "Tamboanan"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Mga himutangan sa pinatuyo nga tamboanan"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Punong-tabil"
},
"instance.settings.tabs.window.height": {
"message": "Gitas-on"
},
"instance.settings.tabs.window.height.enter": {
"message": "Ibutang ang gitas-on..."
},
"instance.settings.tabs.window.width": {
"message": "Gilapdon"
},
"instance.settings.tabs.window.width.enter": {
"message": "Ibutang ang gilapdon..."
},
"instance.settings.title": {
"message": "Mga Himutangan"
},
"instance.worlds.a_minecraft_server": {
"message": "Usa ka Minecraft nga Magsisilbi"
},
"instance.worlds.copy_address": {
"message": "Awata ang padad-anan"
},
"instance.worlds.dont_show_on_home": {
"message": "Ayaw pakit-a sa Puloy-anan"
},
"instance.worlds.filter.available": {
"message": "Magamit"
},
"instance.worlds.hardcore": {
"message": "Mahanasnon nga paagi"
},
"instance.worlds.play_instance": {
"message": "Dulai ang pananglitan"
},
"instance.worlds.type.server": {
"message": "Magsisilbi"
},
"instance.worlds.type.singleplayer": {
"message": "Inusara nga dula"
},
"instance.worlds.view_instance": {
"message": "Tan-awa ang pananglitan"
},
"instance.worlds.world_in_use": {
"message": "Gigamit ang kalibotan"
},
"search.filter.locked.instance.sync": {
"message": "Pagdungan sa pananglitan"
}
}

View File

@@ -0,0 +1,464 @@
{
"app.settings.developer-mode-enabled": {
"message": "Vývojářský režim povolen."
},
"app.settings.downloading": {
"message": "Stahování v{version}"
},
"app.settings.tabs.appearance": {
"message": "Vzhled"
},
"app.settings.tabs.default-instance-options": {
"message": "Výchozí možnosti instance"
},
"app.settings.tabs.feature-flags": {
"message": "Vlajky funkcí"
},
"app.settings.tabs.java-installations": {
"message": "Instalace Javy"
},
"app.settings.tabs.privacy": {
"message": "Soukromí"
},
"app.settings.tabs.resource-management": {
"message": "Správa zdrojů"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} je připravena k instalaci! Znovu načtěte aktualizaci nyní nebo automaticky po zavření aplikace Modrinth."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} byla dokončena ke stažení. Znovu načtěte aktualizaci nyní nebo automaticky po zavření aplikace Modrinth."
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} je nyní k dispozici! Protože jste v síti s měřením, nebyla stažena automaticky."
},
"app.update-toast.changelog": {
"message": "Seznam změn"
},
"app.update-toast.download": {
"message": "Stáhnout ({size})"
},
"app.update-toast.downloading": {
"message": "Stahování..."
},
"app.update-toast.reload": {
"message": "Načíst znovu"
},
"app.update-toast.title": {
"message": "K dispozici je aktualizace"
},
"app.update-toast.title.download-complete": {
"message": "Stahování dokončeno"
},
"app.update.complete-toast.text": {
"message": "Kliknutím sem zobrazíte seznam změn."
},
"app.update.complete-toast.title": {
"message": "Verze {version} byla úspěšně nainstalována!"
},
"app.update.download-update": {
"message": "Stáhnout aktualizaci"
},
"app.update.downloading-update": {
"message": "Stahování aktualizace ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Znovu načíst pro nainstalování aktualizace"
},
"instance.add-server.add-and-play": {
"message": "Přidat a hrát"
},
"instance.add-server.add-server": {
"message": "Přidat server"
},
"instance.add-server.resource-pack.disabled": {
"message": "Vypnuto"
},
"instance.add-server.resource-pack.enabled": {
"message": "Zapnuto"
},
"instance.add-server.resource-pack.prompt": {
"message": "Na dotaz"
},
"instance.add-server.title": {
"message": "Přidat server"
},
"instance.edit-server.title": {
"message": "Upravit server"
},
"instance.edit-world.hide-from-home": {
"message": "Schovat z domovské stránky"
},
"instance.edit-world.name": {
"message": "Název"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft svět"
},
"instance.edit-world.reset-icon": {
"message": "Reset ikony"
},
"instance.edit-world.title": {
"message": "Upravit svět"
},
"instance.filter.disabled": {
"message": "Vypnout projekty"
},
"instance.filter.updates-available": {
"message": "Aktualizace jsou dostupné"
},
"instance.server-modal.address": {
"message": "Adresa"
},
"instance.server-modal.name": {
"message": "Název"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft Server"
},
"instance.server-modal.resource-pack": {
"message": "Balíček textur"
},
"instance.settings.tabs.general": {
"message": "Obecné"
},
"instance.settings.tabs.general.delete": {
"message": "Smazat instanci"
},
"instance.settings.tabs.general.delete.button": {
"message": "Smazat instanci"
},
"instance.settings.tabs.general.delete.description": {
"message": "Trvale smaže instanci z vašeho zařízení, včetně vašich světů, konfigurací a veškerého nainstalovaného obsahu. Buďte opatrní, protože jakmile instanci smažete, není možné ji obnovit."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Mazání..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplikovat"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Nelze duplikovat při instalaci."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Duplikovat instanci"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Vytvoří kopii této instance, včetně světů, konfigurací, modů atd."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Upravit ikonu"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Icona odstranit"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Ikona replikace"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Výber ikona"
},
"instance.settings.tabs.general.library-groups": {
"message": "Skupina knihoven"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Vytvoří novou skupinu"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Skupiny knihoven vám umožňují uspořádat instance do různých sekcí v knihovně."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Zadej název skupiny"
},
"instance.settings.tabs.general.name": {
"message": "Název"
},
"instance.settings.tabs.hooks": {
"message": "Spouštěcí hooky"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Vlastní spouštěcí hooky"
},
"instance.settings.tabs.hooks.description": {
"message": "Hooky umožňují pokročilým uživatelům spouštět určité systémové příkazy před a po spuštění hry."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Po ukončení"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Spušteno po vypnutí hry."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Zadejte příkaz k provedení po ukončení..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Před spuštěním"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Spouštějí se před spuštěním instance."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Zadejte příkaz k provedení před spuštěním..."
},
"instance.settings.tabs.hooks.title": {
"message": "Spouštěcí hooky hry"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Příkaz wrapperu pro spuštění Minecraftu."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Zadejte příkaz wrapperu..."
},
"instance.settings.tabs.installation": {
"message": "Instalace"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} pro Minecraft {game_version} již nainstalována"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} již nainstalována"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Změnit instalaci"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Instalovat"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Instalace"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Načítání verzí modpacku"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Instalace nových verzí"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Aktuální instalace"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Debugové informace:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Načítání detailů modpacku"
},
"instance.settings.tabs.installation.game-version": {
"message": "Verze hry"
},
"instance.settings.tabs.installation.install": {
"message": "Instalovat"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Probíhající instalace"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} verze"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Nelze načíst podrobnosti o modpacku. Zkontrolujte připojení k internetu."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} není dostupný pro Minecraft {version}. Zkuste jiný mod loader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Tato instalace je připojená k modpacku, ale modpack nebyl najit na Modrinthu."
},
"instance.settings.tabs.installation.platform": {
"message": "Platforma"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Přeinstalovat modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Přeinstalovávání modpacku"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Přeinstalace resetuje veškerý nainstalovaný nebo upravený obsah na to, co poskytuje modpack, a odstraní všechny mody nebo obsah, které jste přidali do původní instalaci. To může opravit neočekávané chyby, ale pokud vaše světy závisejí na nově instalovaném obsahu, možná budou poškozeny."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Opravdu si přejete přeinstalovat tuto instalaci?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Obnoví obsah instance do původního stavu a odstraní všechny mody nebo obsah, které jste přidali nad původní modpack."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Přeinstalovat modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Opravit"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Opravováno"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Oprava přeinstaluje závislosti Minecraftu a zkontroluje poškození. To může vyřešit problémy, pokud se hra nespustí kvůli chybám souvisejícím s launcherem, ale nevyřeší to problémy nebo pády související s nainstalovanými mody."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Opravit instanci?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Probíhá oprava"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Resetovat na aktuální"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Ukázat všechny verze"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "Změnit verzi"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "Instalovat"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "přeinstalovat"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "opravit"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Nelze {action} při instalaci"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Nelze {action} když offline"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Nelze {action} při opravě"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(neznámá verze)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Odpojit instanci"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Pokud budete pokračovat, nebudete ji moci znovu propojit bez vytvoření zcela nové instance. Již nebudete dostávat aktualizace modpacku a stane se z něj běžná instance."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Opravdu si přejete odpojit tuto instanci?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Tato instance je připojena k modpacku, což znamená, že módy nemohou být aktualizované a nelze změnit mod loader ani verze minecraftu. Odpojení permanentně rozváže tuto instanci od modpacku."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Odpojit od modpacku"
},
"instance.settings.tabs.java": {
"message": "Java a pamět"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Proměnné prostředí"
},
"instance.settings.tabs.java.hooks": {
"message": "Hooky"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java argumenty"
},
"instance.settings.tabs.java.java-installation": {
"message": "Instalace Javy"
},
"instance.settings.tabs.java.java-memory": {
"message": "Paměti přiřazeno"
},
"instance.settings.tabs.window": {
"message": "Okno"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Vlastní nastavení okna"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Celá obrazovka"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Spustit hru v plné obrazovce pokud spuštěno (použitím options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Výška"
},
"instance.settings.tabs.window.height.description": {
"message": "Výška herního okna při spuštění."
},
"instance.settings.tabs.window.height.enter": {
"message": "Zadejte výšku..."
},
"instance.settings.tabs.window.width": {
"message": "Šířka"
},
"instance.settings.tabs.window.width.description": {
"message": "Šířka herního okna při spuštění."
},
"instance.settings.tabs.window.width.enter": {
"message": "Zadejte šířku..."
},
"instance.settings.title": {
"message": "Nastavení"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft Server"
},
"instance.worlds.cant_connect": {
"message": "Nelze připojit k serveru"
},
"instance.worlds.copy_address": {
"message": "Kopírovat adresu"
},
"instance.worlds.dont_show_on_home": {
"message": "Nezobrazuje na domovské stránce"
},
"instance.worlds.filter.available": {
"message": "Dostupné"
},
"instance.worlds.game_already_open": {
"message": "Instance je již otevřená"
},
"instance.worlds.hardcore": {
"message": "Hardcore režim"
},
"instance.worlds.incompatible_server": {
"message": "Server je nekompatibilní"
},
"instance.worlds.no_contact": {
"message": "Server se nepodařilo spojit"
},
"instance.worlds.no_server_quick_play": {
"message": "Můžeš rovnou skočit na server pouze v Minecraftu Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Můžeš rovnou skočit do světa jednoho hráče pouze v Minecraftu 1.20+"
},
"instance.worlds.play_instance": {
"message": "Hrát instanci"
},
"instance.worlds.type.server": {
"message": "Server"
},
"instance.worlds.type.singleplayer": {
"message": "Hra pro jednoho hráče"
},
"instance.worlds.view_instance": {
"message": "Zobrazit instanci"
},
"instance.worlds.world_in_use": {
"message": "Svět je použit"
},
"search.filter.locked.instance": {
"message": "Poskytováno instancí"
},
"search.filter.locked.instance-game-version.title": {
"message": "Verze hry je poskytnut instanci"
},
"search.filter.locked.instance-loader.title": {
"message": "Spouštěč je poskytnut instanci"
},
"search.filter.locked.instance.sync": {
"message": "Synchronizováno z instancí"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Udvikler-tilstand aktiveret."
},
"app.settings.downloading": {
"message": "Downloader v{version}"
},
"app.settings.tabs.appearance": {
"message": "Udseende"
},
"app.settings.tabs.default-instance-options": {
"message": "Standardindstillinger for instans"
},
"app.settings.tabs.feature-flags": {
"message": "Funktionsflags"
},
"app.settings.tabs.java-installations": {
"message": "Javainstallationer"
},
"app.settings.tabs.privacy": {
"message": "Privatliv"
},
"app.settings.tabs.resource-management": {
"message": "Ressourcestyring"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} er allerede installeret! Genindlæs for at opdatere nu, eller automatisk når du lukker Modrinth App."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} er færdig med at download. Genindlæs for at opdatere nu, eller automatisk når du lukker Modrinth App."
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} er nu tilgængelig! Siden du er på et begrænset netværk, vi downloadede den ikke automatisk."
},
"app.update-toast.changelog": {
"message": "Ændringslog"
},
"app.update-toast.download": {
"message": "Download ({size})"
},
"app.update-toast.downloading": {
"message": "Downloader..."
},
"app.update-toast.reload": {
"message": "Geninlæs"
},
"app.update-toast.title": {
"message": "Opdatering tilgængelig"
},
"app.update-toast.title.download-complete": {
"message": "Download færdiggjort"
},
"app.update.complete-toast.text": {
"message": "Klik her for at vise ændringslog."
},
"app.update.complete-toast.title": {
"message": "Version {version} var installeret med succes!"
},
"app.update.download-update": {
"message": "Download opdatering"
},
"app.update.downloading-update": {
"message": "Downloader opdatering ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Genindlæs for at installere opdatering"
},
"friends.action.add-friend": {
"message": "Tilføj en ven"
},
"friends.action.view-friend-requests": {
"message": "{count} venne{count, plural, one {anmodning} other {anmodninger}}"
},
"friends.add-friend.submit": {
"message": "Send en venneanmodning"
},
"friends.add-friend.title": {
"message": "Tilføjer en ven"
},
"friends.add-friend.username.description": {
"message": "Det er muligvis anderledes end deres Minecraft brugernavn!"
},
"friends.add-friend.username.placeholder": {
"message": "Indskriv Modrinth brugernavn..."
},
"friends.add-friend.username.title": {
"message": "Hvad er din vens Modrinth brugernavn?"
},
"friends.add-friends-to-share": {
"message": "<link>Tilføj venner</link> for at se hvad de spiller!"
},
"friends.friend.cancel-request": {
"message": "Annuller anmodning"
},
"friends.friend.remove-friend": {
"message": "Fjern ven"
},
"friends.friend.request-sent": {
"message": "Venneanmodning sendt"
},
"friends.friend.view-profile": {
"message": "Vis profil"
},
"friends.heading": {
"message": "Venner"
},
"friends.heading.active": {
"message": "Aktiv"
},
"friends.heading.offline": {
"message": "Offline"
},
"friends.heading.online": {
"message": "Online"
},
"friends.heading.pending": {
"message": "Afventer"
},
"friends.no-friends-match": {
"message": "Ingen venner som matcher \"{query}\""
},
"friends.search-friends-placeholder": {
"message": "Søg venner..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Log ind på en Modrinth konto</link> for at tilføje venner og se hvad de spiller!"
},
"instance.add-server.add-and-play": {
"message": "Tilføj og spil"
},
"instance.add-server.add-server": {
"message": "Tilføj server"
},
"instance.add-server.resource-pack.disabled": {
"message": "Deaktiveret"
},
"instance.add-server.resource-pack.enabled": {
"message": "Aktiveret"
},
"instance.add-server.resource-pack.prompt": {
"message": "Spørg"
},
"instance.add-server.title": {
"message": "Tilføj en server"
},
"instance.edit-server.title": {
"message": "Rediger server"
},
"instance.edit-world.hide-from-home": {
"message": "Skjul fra forside"
},
"instance.edit-world.name": {
"message": "Navn"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft verden"
},
"instance.edit-world.reset-icon": {
"message": "Nulstil ikon"
},
"instance.edit-world.title": {
"message": "Rediger verden"
},
"instance.filter.disabled": {
"message": "Deaktiverede projekter"
},
"instance.filter.updates-available": {
"message": "Tilgængelige opdateringer"
},
"instance.server-modal.address": {
"message": "Adresse"
},
"instance.server-modal.name": {
"message": "Navn"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft server"
},
"instance.server-modal.resource-pack": {
"message": "Ressourcepakke"
},
"instance.settings.tabs.general": {
"message": "Generelt"
},
"instance.settings.tabs.general.delete": {
"message": "Slet instans"
},
"instance.settings.tabs.general.delete.button": {
"message": "Slet instans"
},
"instance.settings.tabs.general.delete.description": {
"message": "Permanent slet en instans fra din enhed, inkluderer dine verdener, konfigurationer, og alt installeret indhold. Vær forsigtig, for så snart du sletter en instans der er ingen at gendanne det."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Sletter..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Kopiér"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Kan ikke kopiere under installation."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Kopiér instans"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Opret en kopi af denne instans, inkluderer verdener, konfigurationer, mods, osv."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Rediger ikon"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Fjern ikon"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Udskift ikon"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Vælg ikon"
},
"instance.settings.tabs.general.library-groups": {
"message": "Biblioteks grupper"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Opret ny gruppe"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Biblioteksgrupper lader dig organisere dine instanser i forskellige sektioner i dit bibliotek."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Indtast gruppenavn"
},
"instance.settings.tabs.general.name": {
"message": "Navn"
},
"instance.settings.tabs.hooks": {
"message": "Startkommandoer"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Brugerfinansieret startkommandoer"
},
"instance.settings.tabs.hooks.description": {
"message": "Startkommandoer giver avancerede brugere mulighed for at køre bestemte systemkommandoer før og efter spillet startes."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Post-exit"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Kørte efter spillet lukkes."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Indskriv post-exit kommando..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Pre-launch"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Kørt før en instance bliver kørt."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Indskriv pre-launch kommando..."
},
"instance.settings.tabs.hooks.title": {
"message": "Spille lunch hooks"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Wrapper kommando for at køre Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Indskriv wrapper kommando..."
},
"instance.settings.tabs.installation": {
"message": "Installation"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} for Minecraft {game_version} er allerede installeret"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} er allerede installeret"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Skift version"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Installer"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Installer"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Får modpack versioner"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Installere ny version"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Lige nu installeret"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Debug information:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Får modpack detaljer"
},
"instance.settings.tabs.installation.game-version": {
"message": "Spil version"
},
"instance.settings.tabs.installation.install": {
"message": "Installer"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Installation igangværende"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} version"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Kan ikke få forbundet modpack detaljer. Venligst tjek din internet forbindelse."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} er ikke mulig at bruge for Minecraft {version}. Prøv en anden mod loader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Denne instance er koblet til en modpack, men modpacken kunne ikke blive fundet på Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Platform"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Geninstaller modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Geninstallere modpack"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Geninstallering vil nulstille alt installeret eller modificeret indhold givet af modpacken, fjerne alle mods eller indhold du har tilføjet ovenpå den originale installation. Dette vil måske fikse uforventet adfærd hvis ændringer er blevet lavet til den instance, men hvis din verdener nu afhænger af ektra tilføjet indhold, dette vil måske ødelægge eksisterende verdener."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Er du sikker på du vil geninstallere denne instance?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Nulstiller instanceens indhold til dens oprindelige tilstand, fjerne alle mods eller indhold du har tilføjet ovenpå den oprindelige modpack."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Geninstaller modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Reparer"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Reparere"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Reparering geninstaller Minecraft afhængigheder og tjekker for korruption. Dette vil måske fikse fejl hvis dit spil ikke køre på grund af launcher relateret fejl, men vil ikke fikse fejl eller crashes relateret til installerede mods."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Reparer instance?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Reparation i gang"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Nulstil til nuværende"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Vis alle versioner"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "Ændre version"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "Installer"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "Geninstaller"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "Reparer"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Kan ikke {action} under installation"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Kan ikke {action} uden internet"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Kan ikke {action} under reparation"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(Ukendt version)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Frakoble instance"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Hvis du forsætter, du vil ikke have mulighed for at koble sammen igen uden at lave en helt ny instance. Du vil ikke længere modtage modpack opdateringer og vil blive en normal."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Er du sikker på du vil frakoble denne instance?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Denne instance er forbundet til en modpack, hvilket betyder mods kan ikke blive opdateret og du kan ikke ændre mod loaderen eller Minecraft version. Frakobling vil permanent frakoble denne instance fra modpacken."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Frakoble fra modpack"
},
"instance.settings.tabs.java": {
"message": "Java og hukommelse"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Omgivelses variabler"
},
"instance.settings.tabs.java.hooks": {
"message": "Hooks"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java argumenter"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java installation"
},
"instance.settings.tabs.java.java-memory": {
"message": "Allokeret hukommelse"
},
"instance.settings.tabs.window": {
"message": "Vindue"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Brugerdefineret vindue indstillinger"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Fuld skærm"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Gør så spillet starter i fuld skærm når du køre spillet (Med brug af options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Højde"
},
"instance.settings.tabs.window.height.description": {
"message": "Højden af spillevinduet når kørt."
},
"instance.settings.tabs.window.height.enter": {
"message": "Indskriv højde..."
},
"instance.settings.tabs.window.width": {
"message": "Bredde"
},
"instance.settings.tabs.window.width.description": {
"message": "Bredden på spille vinduet når kørt."
},
"instance.settings.tabs.window.width.enter": {
"message": "Indskriv bredde..."
},
"instance.settings.title": {
"message": "Indstillinger"
},
"instance.worlds.a_minecraft_server": {
"message": "En Minecraft server"
},
"instance.worlds.cant_connect": {
"message": "Kan ikke forbinde til serveren"
},
"instance.worlds.copy_address": {
"message": "Kopier adresse"
},
"instance.worlds.dont_show_on_home": {
"message": "Vis ikke på forsiden"
},
"instance.worlds.filter.available": {
"message": "Tilgængelig"
},
"instance.worlds.game_already_open": {
"message": "Instance allerede åben"
},
"instance.worlds.hardcore": {
"message": "Hardcore mode"
},
"instance.worlds.incompatible_server": {
"message": "Serveren er uforenelig"
},
"instance.worlds.no_contact": {
"message": "Serveren kunne ikke blive kontaktet"
},
"instance.worlds.no_server_quick_play": {
"message": "Du kan kun hoppe lige ind i servere på Minecraft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Du kan kun hoppe lige ind i singleplayer verdener på Minecraft 1.20+"
},
"instance.worlds.play_instance": {
"message": "Spil instance"
},
"instance.worlds.type.server": {
"message": "Server"
},
"instance.worlds.type.singleplayer": {
"message": "Singleplayer"
},
"instance.worlds.view_instance": {
"message": "Se instance"
},
"instance.worlds.world_in_use": {
"message": "Verden er i brug"
},
"search.filter.locked.instance": {
"message": "Givet af instanceen"
},
"search.filter.locked.instance-game-version.title": {
"message": "Spille version er givet af instanceen"
},
"search.filter.locked.instance-loader.title": {
"message": "Loader er givet af instanceen"
},
"search.filter.locked.instance.sync": {
"message": "Synkroniser med instance"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Entwicklermodus aktiviert."
},
"app.settings.downloading": {
"message": "Lade v{version} herunter"
},
"app.settings.tabs.appearance": {
"message": "Erscheinungsbild"
},
"app.settings.tabs.default-instance-options": {
"message": "Standard Instanz-Einstellungen"
},
"app.settings.tabs.feature-flags": {
"message": "Funktionsflaggen"
},
"app.settings.tabs.java-installations": {
"message": "Java Installationen"
},
"app.settings.tabs.privacy": {
"message": "Datenschutz"
},
"app.settings.tabs.resource-management": {
"message": "Ressourcenmanagement"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} ist bereit zur Installation! Lade die App neu, oder schliesse sie, um zu aktualisieren."
},
"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.metered": {
"message": "Modrinth App v{version} ist jetzt verfügbar! Da du in einem begrenzten Netzwerk bist, haben wir es nicht automatisch heruntergeladen."
},
"app.update-toast.changelog": {
"message": "Änderungen"
},
"app.update-toast.download": {
"message": "Herunterladen ({size})"
},
"app.update-toast.downloading": {
"message": "Lade herunter..."
},
"app.update-toast.reload": {
"message": "Neu Laden"
},
"app.update-toast.title": {
"message": "Aktualisierung verfügbar"
},
"app.update-toast.title.download-complete": {
"message": "Download abgeschlossen"
},
"app.update.complete-toast.text": {
"message": "Klicke Hier um die Änderungen zu sehen."
},
"app.update.complete-toast.title": {
"message": "Version {version} wurde erfolgreich installiert!"
},
"app.update.download-update": {
"message": "Aktualisierung herunterladen"
},
"app.update.downloading-update": {
"message": "Lade Aktualisierung herunter ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Lade neu um Aktualisierung zu installieren"
},
"friends.action.add-friend": {
"message": "Freund hinzufügen"
},
"friends.action.view-friend-requests": {
"message": "{count} Freundschaftsanfrage{count, plural, one {} other {n}}"
},
"friends.add-friend.submit": {
"message": "Freundschaftsanfrage senden"
},
"friends.add-friend.title": {
"message": "Einen Freund hinzufügen"
},
"friends.add-friend.username.description": {
"message": "Es könnte anders als ihr Minecraft Nutzername sein!"
},
"friends.add-friend.username.placeholder": {
"message": "Modrinth Nutzernamen eingeben..."
},
"friends.add-friend.username.title": {
"message": "Was ist der Modrinth Nutzername deines Freundes?"
},
"friends.add-friends-to-share": {
"message": "<link>Füge Freunde hinzu</link> um zu sehen, was sie spielen!"
},
"friends.friend.cancel-request": {
"message": "Anfrage abbrechen"
},
"friends.friend.remove-friend": {
"message": "Freund entfernen"
},
"friends.friend.request-sent": {
"message": "Freundschaftsanfrage gesendet"
},
"friends.friend.view-profile": {
"message": "Profil anzeigen"
},
"friends.heading": {
"message": "Freunde"
},
"friends.heading.active": {
"message": "Aktiv"
},
"friends.heading.offline": {
"message": "Offline"
},
"friends.heading.online": {
"message": "Online"
},
"friends.heading.pending": {
"message": "Ausstehend"
},
"friends.no-friends-match": {
"message": "Keine Freunde, die mit \"{query}\" übereinstimmen"
},
"friends.search-friends-placeholder": {
"message": "Freunde suchen..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Logge dich in ein Modrinth Konto ein</link> um Freunde hinzuzufügen und zu sehen, was sie spielen!"
},
"instance.add-server.add-and-play": {
"message": "Ersteue u starte"
},
"instance.add-server.add-server": {
"message": "Server hinzufügen"
},
"instance.add-server.resource-pack.disabled": {
"message": "Deaktiviert"
},
"instance.add-server.resource-pack.enabled": {
"message": "Aktiviert"
},
"instance.add-server.resource-pack.prompt": {
"message": "Fragä"
},
"instance.add-server.title": {
"message": "Einen Server hinzufügen"
},
"instance.edit-server.title": {
"message": "Server bearbeiten"
},
"instance.edit-world.hide-from-home": {
"message": "Von Startseite ausblenden"
},
"instance.edit-world.name": {
"message": "Name"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft Welt"
},
"instance.edit-world.reset-icon": {
"message": "Icon zurücksetzen"
},
"instance.edit-world.title": {
"message": "Welt bearbeiten"
},
"instance.filter.disabled": {
"message": "Deaktivierte Projekte"
},
"instance.filter.updates-available": {
"message": "Updates verfügbar"
},
"instance.server-modal.address": {
"message": "Adresse"
},
"instance.server-modal.name": {
"message": "Name"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft Server"
},
"instance.server-modal.resource-pack": {
"message": "Ressourcenpaket"
},
"instance.settings.tabs.general": {
"message": "Allgemein"
},
"instance.settings.tabs.general.delete": {
"message": "Instanz löschen"
},
"instance.settings.tabs.general.delete.button": {
"message": "Instanz löschen"
},
"instance.settings.tabs.general.delete.description": {
"message": "Löscht eine Instanz dauerhaft von deinem Gerät, inklusive deiner Welten, Einstellungen und allen installierten Inhalten. Sei vorsichtig, da eine gelöschte Instanz nicht mehr wiederherstellbar ist."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Lösche..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplizieren"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Kann während dem installieren nicht duplizieren."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Instanz duplizieren"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Erstellt eine Kopie dieser Instanz, inklusive aller Welten, Einstellungen, Modifikationen, etc."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Icon bearbeiten"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Icon entfernen"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Icon ersetzen"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Icon auswählen"
},
"instance.settings.tabs.general.library-groups": {
"message": "Bibliotheksgruppen"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Neue Gruppe erstellen"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Bibliotheksgruppen ermöglichen es dir, deine Instanzen in unterschiedliche Bereiche deiner Bibliothek aufzuteilen."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Gruppenname eingeben"
},
"instance.settings.tabs.general.name": {
"message": "Name"
},
"instance.settings.tabs.hooks": {
"message": "Start Hooks"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Benutzerdefinierte Start Hooks"
},
"instance.settings.tabs.hooks.description": {
"message": "Hooks ermöglichen es erfahrenen Benutzern, bestimmte Systembefehle vor und nach dem Start des Spiels auszuführen."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Nach dem Schliessen des Spiels"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Wird nach dem Beenden des Spiels ausgeführt."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Ausgeführter Befehl nach dem Beenden des Spiels eingeben..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Vor Start des Spiels"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Wird vor dem Starten des Spiels ausgeführt."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Ausgeführter Befehl nach dem Starten des Spiels eingeben..."
},
"instance.settings.tabs.hooks.title": {
"message": "Spielstart Hooks"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Wrapperbefehl zum Starten von Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Wrapperbefehl eingeben..."
},
"instance.settings.tabs.installation": {
"message": "Installation"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} für Minecraft {game_version} ist bereits installiert"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} ist bereits installiert"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Version ändern"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Installieren"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Wird installiert"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Sammle Modpack-Versionen"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Neue Version wird installiert"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Aktuell installiert"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Informationen zur Fehlerbehebung:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Sammle Modpack-Details"
},
"instance.settings.tabs.installation.game-version": {
"message": "Spielversion"
},
"instance.settings.tabs.installation.install": {
"message": "Installieren"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Wird installiert"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} Version"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Kann Details für verknüpftes Modpack nicht abrufen. Bitte überprüfe deine Internerverbindung."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} ist nicht verfügbar für Minecraft {version}. Versuch einen anderen Modloader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Diese Instanz ist mit einem Modpack verknüpft, aber das Modpack konnte nicht auf Modrinth gefunden werden."
},
"instance.settings.tabs.installation.platform": {
"message": "Platform"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Modpack neu installieren"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Modpack wird neu installiert"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Durch die Neuinstallation werden alle installierten oder geänderten Inhalte auf die vom Modpack bereitgestellten Inhalte zurückgesetzt, wobei alle Mods oder Inhalte entfernt werden, die zusätzlich zur ursprünglichen Installation hinzugefügt wurden. Dies kann unerwartetes Verhalten beheben, wenn Änderungen an der Instanz vorgenommen wurden. Wenn deine Welten jedoch von zusätzlich installierten Inhalten abhängig sind, kann dies zu Fehlern in bestehenden Welten führen."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Bist du sicher, dass du diese Instanz neu installieren willst?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Setzt den Inhalt der Instanz auf seinen ursprünglichen Zustand zurück und entfernt all Mods oder Inhalte, welche zusätzlich zum ursprünglichen Modpack hinzugefügt wurden."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Modpack neu installieren"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Reparieren"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Wird repariert"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Das reparieren installier Minecraft-Abhängigkeiten neu und überprüft für Beschädigungen. Dies kann Probleme beheben, sofern dein Spiel aufgrund von Launcher-relevanten Problemen nicht startet, aber es kann nicht Fehler und Abstpürze in Zusammenhang mit installierten Mods beheben."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Instanz reparieren?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Wird repariert"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Auf aktuellen Wert zurücksetzen"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Alle Versionen anzeigen"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "Version ändern"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "Installieren"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "Neuinstallieren"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "Reparieren"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "{action} während der Installation nicht möglich"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "{action} nicht möglich ohne Internetverbindung"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "{action} während reparatur nicht möglich"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(unbekannte Version)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Verlinking der Instanz trennen"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Wenn du fortfährst, kann die Instanz nicht erneut verknüpft werden, ohne eine komplett neue Instanz zu ersztellen. Du erhälst keine Modpack-Updates mehr und es wird zu einer normalen Instanz."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Bist du sicher, dass du die Verknüpfung dieser Instanz trennen willst?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Diese Instanz ist mit einem Modpack verknüpft. Dies bedeutet, dass Mods nicht aktualisiert werden können, und dass du den Modloader oder die Minecraft Versionen nicht ändern kannst. Durch das trennen der Verknüpfung wird die Instanz permanent vom Modpack getrennt."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Verknüpfung vom Modpack trennen"
},
"instance.settings.tabs.java": {
"message": "Java und Arbeitsspeicher"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Umgebungsvariablen"
},
"instance.settings.tabs.java.hooks": {
"message": "Hooks"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java-Argumente"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java Installationen"
},
"instance.settings.tabs.java.java-memory": {
"message": "Zugewiesener Arbeitsspeicher"
},
"instance.settings.tabs.window": {
"message": "Spielfenster"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Benutzerdefinierte Spielfenstereinstellungen"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Vollbild"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Startet das Spiel im Vollbildmodus (durch verwenden von options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Höhe"
},
"instance.settings.tabs.window.height.description": {
"message": "Die höhe des Spielfensters beim Start."
},
"instance.settings.tabs.window.height.enter": {
"message": "Höhe eingeben..."
},
"instance.settings.tabs.window.width": {
"message": "Breite"
},
"instance.settings.tabs.window.width.description": {
"message": "Die Breite des Spielfensters beim Start."
},
"instance.settings.tabs.window.width.enter": {
"message": "Breite eingeben..."
},
"instance.settings.title": {
"message": "Einstellungen"
},
"instance.worlds.a_minecraft_server": {
"message": "Ä Minecraft-Server"
},
"instance.worlds.cant_connect": {
"message": "Verbindung mit Server nicht möglich"
},
"instance.worlds.copy_address": {
"message": "Adresse kopieren"
},
"instance.worlds.dont_show_on_home": {
"message": "Nicht auf Startseite anzeigen"
},
"instance.worlds.filter.available": {
"message": "Verfügbar"
},
"instance.worlds.game_already_open": {
"message": "Instanz ist bereits geöffnet"
},
"instance.worlds.hardcore": {
"message": "Hardcore-Modus"
},
"instance.worlds.incompatible_server": {
"message": "Server ist inkompatibel"
},
"instance.worlds.no_contact": {
"message": "Server konnte nicht erreicht werden"
},
"instance.worlds.no_server_quick_play": {
"message": "Du kannst nur in Minecraft Alpha 1.0.5 und neuer direkt einem Server beitreten"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Du kannst nur in Minecraft 1.20 und neuer einer Einzelspieler-Welt beitreten"
},
"instance.worlds.play_instance": {
"message": "Instanz Spielen"
},
"instance.worlds.type.server": {
"message": "Server"
},
"instance.worlds.type.singleplayer": {
"message": "Einzelspieler"
},
"instance.worlds.view_instance": {
"message": "Instanz anzeigen"
},
"instance.worlds.world_in_use": {
"message": "Welt bereits in benutzung"
},
"search.filter.locked.instance": {
"message": "Von der Instanz bereitgestellt"
},
"search.filter.locked.instance-game-version.title": {
"message": "Spielversion ist von der Instanz bereitgestellt"
},
"search.filter.locked.instance-loader.title": {
"message": "Loader ist von der Instanz bereitgestellt"
},
"search.filter.locked.instance.sync": {
"message": "Mit Instanz synchronisieren"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Entwicklermodus aktiviert."
},
"app.settings.downloading": {
"message": "Lade v{version} herunter"
},
"app.settings.tabs.appearance": {
"message": "Erscheinungsbild"
},
"app.settings.tabs.default-instance-options": {
"message": "Standard Instanz-Einstellungen"
},
"app.settings.tabs.feature-flags": {
"message": "Funktionsflaggen"
},
"app.settings.tabs.java-installations": {
"message": "Java-Installationen"
},
"app.settings.tabs.privacy": {
"message": "Datenschutz"
},
"app.settings.tabs.resource-management": {
"message": "Ressourcenmanagement"
},
"app.update-toast.body": {
"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} wurde heruntergeladen. Neu laden, um jetzt zu aktualisieren, oder automatisch, wenn du die Modrinth App schließt."
},
"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."
},
"app.update-toast.changelog": {
"message": "Änderungsverlauf"
},
"app.update-toast.download": {
"message": "Herunterladen ({size})"
},
"app.update-toast.downloading": {
"message": "Wird Heruntergeladen..."
},
"app.update-toast.reload": {
"message": "Neu laden"
},
"app.update-toast.title": {
"message": "Update verfügbar"
},
"app.update-toast.title.download-complete": {
"message": "Download abgeschlossen"
},
"app.update.complete-toast.text": {
"message": "Hier klicken, um das Änderungsprotokoll anzuzeigen."
},
"app.update.complete-toast.title": {
"message": "Version {version} wurde erfolgreich installiert!"
},
"app.update.download-update": {
"message": "Update herunterladen"
},
"app.update.downloading-update": {
"message": "Update wird heruntergeladen ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Neu laden um Update zu installieren"
},
"friends.action.add-friend": {
"message": "Freund hinzufügen"
},
"friends.action.view-friend-requests": {
"message": "{count} {count, plural, one {Freundesanfrage} other {Freundesanfragen}}"
},
"friends.add-friend.submit": {
"message": "Freundesanfrage senden"
},
"friends.add-friend.title": {
"message": "Einen Freund hinzufügen"
},
"friends.add-friend.username.description": {
"message": "Er kann vom Minecraft-Nutzernamen abweichen!"
},
"friends.add-friend.username.placeholder": {
"message": "Modrinth-Benutzernamen eingeben..."
},
"friends.add-friend.username.title": {
"message": "Wie lautet der Modrinth-Benutzername deines Freundes?"
},
"friends.add-friends-to-share": {
"message": "<link>Freunde hinzufügen</link>, um zu sehen, was sie spielen!"
},
"friends.friend.cancel-request": {
"message": "Anfrage abbrechen"
},
"friends.friend.remove-friend": {
"message": "Freund entfernen"
},
"friends.friend.request-sent": {
"message": "Freundesanfrage gesendet"
},
"friends.friend.view-profile": {
"message": "Profil anzeigen"
},
"friends.heading": {
"message": "Freunde"
},
"friends.heading.active": {
"message": "Aktiv"
},
"friends.heading.offline": {
"message": "Offline"
},
"friends.heading.online": {
"message": "Online"
},
"friends.heading.pending": {
"message": "Ausstehend"
},
"friends.no-friends-match": {
"message": "Keine Freunde die \"{query}\" entsprechen"
},
"friends.search-friends-placeholder": {
"message": "Freunde durchsuchen..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Melde dich bei einem Modrinth-Konto an</link>, um Freunde hinzuzufügen und zu sehen, was sie gerade spielen!"
},
"instance.add-server.add-and-play": {
"message": "Hinzufügen und spielen"
},
"instance.add-server.add-server": {
"message": "Server hinzufügen"
},
"instance.add-server.resource-pack.disabled": {
"message": "Deaktiviert"
},
"instance.add-server.resource-pack.enabled": {
"message": "Aktiviert"
},
"instance.add-server.resource-pack.prompt": {
"message": "Nachfragen"
},
"instance.add-server.title": {
"message": "Server hinzufügen"
},
"instance.edit-server.title": {
"message": "Server bearbeiten"
},
"instance.edit-world.hide-from-home": {
"message": "Von Startseite verbergen"
},
"instance.edit-world.name": {
"message": "Name"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft-Welt"
},
"instance.edit-world.reset-icon": {
"message": "Icon zurücksetzen"
},
"instance.edit-world.title": {
"message": "Welt bearbeiten"
},
"instance.filter.disabled": {
"message": "Deaktivierte Projekte"
},
"instance.filter.updates-available": {
"message": "Updates verfügbar"
},
"instance.server-modal.address": {
"message": "Adresse"
},
"instance.server-modal.name": {
"message": "Name"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft-Server"
},
"instance.server-modal.resource-pack": {
"message": "Ressourcenpaket"
},
"instance.settings.tabs.general": {
"message": "Allgemein"
},
"instance.settings.tabs.general.delete": {
"message": "Instanz löschen"
},
"instance.settings.tabs.general.delete.button": {
"message": "Instanz löschen"
},
"instance.settings.tabs.general.delete.description": {
"message": "Löscht eine Instanz dauerhaft von deinem Gerät, einschließlich deiner Welten, Einstellungen und aller installierten Inhalte. Sei vorsichtig, da eine gelöschte Instanz nicht wiederhergestellt werden kann."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Wird gelöscht..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Kopieren"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Kann während der Installation nicht kopiert werden."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Instanz duplizieren"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Erstellt eine Kopie dieser Instanz, inklusive aller Welten, Einstellungen, Modifikationen, usw."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Icon bearbeiten"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Icon entfernen"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Icon ersetzen"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Icon auswählen"
},
"instance.settings.tabs.general.library-groups": {
"message": "Bibliotheksgruppen"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Neue Gruppe erstellen"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Bibliotheksgruppen ermöglichen es dir, deine Instanzen in verschiedene Abschnitte deiner Bibliothek zu organisieren."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Gruppenname eingeben"
},
"instance.settings.tabs.general.name": {
"message": "Name"
},
"instance.settings.tabs.hooks": {
"message": "Start Hooks"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Benutzerdefinierte Start Hooks"
},
"instance.settings.tabs.hooks.description": {
"message": "Hooks ermöglichen es fortgeschrittenen Benutzern, bestimmte Systembefehle vor und nach dem Spielstart auszuführen."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Nach dem Beenden"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Wird nach dem Beenden des Spiels ausgeführt."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Nach Spielbeendigung auszuführender Befehl eingeben..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Vor dem Start"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Wird vor dem Starten der Instanz ausgeführt."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Vor Spielstart auszuführender Befehl eingeben..."
},
"instance.settings.tabs.hooks.title": {
"message": "Start-Hooks"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Wrapperbefehl für den Start von Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Wrapperbefehl eingeben..."
},
"instance.settings.tabs.installation": {
"message": "Installation"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} für Minecraft {game_version} bereits installiert"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} ist bereits installiert"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Version ändern"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Installieren"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Wird installiert"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Modpack-Versionen werden abgerufen"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Neue Version wird installiert"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Derzeit installiert"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Informationen für die Fehlerbehebung:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Modpack-Details werden abgerufen"
},
"instance.settings.tabs.installation.game-version": {
"message": "Spielversion"
},
"instance.settings.tabs.installation.install": {
"message": "Installieren"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Installation im Gange"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} Version"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Die Details des verknüpften Modpacks können nicht abgerufen werden. Bitte überprüfe deine Internetverbindung."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} ist nicht für Minecraft {version} verfügbar. Versuche einen anderen Modloader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Diese Instanz ist mit einem Modpack verknüpft, aber das Modpack konnte auf Modrinth nicht gefunden werden."
},
"instance.settings.tabs.installation.platform": {
"message": "Plattform"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Modpack neu installieren"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Modpack wird neu installiert"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Eine Neuinstallation setzt alle installierten oder geänderten Inhalte auf den Zustand zurück, der vom Modpack bereitgestellt wird, und entfernt alle Mods oder Inhalte, die du zusätzlich zur ursprünglichen Installation hinzugefügt hast.\nDies kann unerwartetes Verhalten beheben, falls Änderungen an der Instanz vorgenommen wurden. Wenn deine Welten jedoch von zusätzlich installierten Inhalten abhängen, kann dies bestehende Welten beschädigen."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Bist du dir sicher, dass du diese Instanz neu installieren willst?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Setzt den Inhalt der Instanz auf den ursprünglichen Zustand zurück und entfernt alle Mods oder Inhalte, die du zusätzlich zum ursprünglichen Modpack hinzugefügt hast."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Modpack neu installieren"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Reparieren"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Wird repariert"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Durch die Reparatur werden die Abhängigkeiten von Minecraft neu installiert und auf Beschädigungen überprüft. Dies kann Probleme beheben, wenn Minecraft aufgrund von Fehlern im Launcher nicht startet, löst jedoch keine Probleme oder Abstürze im Zusammenhang mit installierten Mods."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Instanz reparieren?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Reparatur im Gange"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Auf aktuellen Stand zurücksetzen"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Alle Versionen anzeigen"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "Version ändern"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "Installieren"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "Neuinstallieren"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "Reparieren"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "{action} während der Installation nicht möglich"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "{action} offline nicht möglich"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "{action} während der Reparation nicht möglich"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(unbekannte Version)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Verknüpfung der Instanz trennen"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Wenn du fortfährst, kannst du sie nicht erneut verknüpfen, ohne eine völlig neue Instanz zu erstellen. Du wirst keine Modpack-Updates mehr erhalten, und sie wird zu einer normalen Instanz."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Möchtest du die Verknüpfungen dieser Instanz wirklich trennen?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Diese Instanz ist mit einem Modpack verknüpft. Das bedeutet, dass Mods nicht aktualisiert werden können und der Mod-Loader oder die Minecraft-Version nicht geändert werden können. Durch das Aufheben der Verknüpfung wird die Instanz dauerhaft vom Modpack getrennt."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Verknüpfung vom Modpack trennen"
},
"instance.settings.tabs.java": {
"message": "Java und Arbeitsspeicher"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Umgebungsvariablen"
},
"instance.settings.tabs.java.hooks": {
"message": "Hooks"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java-Argumente"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java-Installation"
},
"instance.settings.tabs.java.java-memory": {
"message": "Zugewiesener Arbeitsspeicher"
},
"instance.settings.tabs.window": {
"message": "Fenster"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Benutzerdefinierte Fenstereinstellungen"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Vollbild"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Lässt das Spiel im Vollbildmodus starten (mit Verwendung von options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Höhe"
},
"instance.settings.tabs.window.height.description": {
"message": "Die Höhe des Spielfensters beim Start."
},
"instance.settings.tabs.window.height.enter": {
"message": "Höhe eingeben..."
},
"instance.settings.tabs.window.width": {
"message": "Breite"
},
"instance.settings.tabs.window.width.description": {
"message": "Die Breite des Spielfensters beim Start."
},
"instance.settings.tabs.window.width.enter": {
"message": "Breite eingeben..."
},
"instance.settings.title": {
"message": "Einstellungen"
},
"instance.worlds.a_minecraft_server": {
"message": "Ein Minecraft-Server"
},
"instance.worlds.cant_connect": {
"message": "Verbindung mit Server nicht möglich"
},
"instance.worlds.copy_address": {
"message": "Adresse kopieren"
},
"instance.worlds.dont_show_on_home": {
"message": "Nicht auf der Startseite anzeigen"
},
"instance.worlds.filter.available": {
"message": "Verfügbar"
},
"instance.worlds.game_already_open": {
"message": "Instanz ist bereits geöffnet"
},
"instance.worlds.hardcore": {
"message": "Hardcore-Modus"
},
"instance.worlds.incompatible_server": {
"message": "Server ist nicht kompatibel"
},
"instance.worlds.no_contact": {
"message": "Server konnte nicht erreicht werden"
},
"instance.worlds.no_server_quick_play": {
"message": "Du kannst erst ab Minecraft Alpha 1.0.5+ direkt einem Server beitreten"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Du kannst erst ab Minecraft 1.20+ direkt in Einzelspieler-Welten springen"
},
"instance.worlds.play_instance": {
"message": "Instanz spielen"
},
"instance.worlds.type.server": {
"message": "Server"
},
"instance.worlds.type.singleplayer": {
"message": "Einzelspieler"
},
"instance.worlds.view_instance": {
"message": "Instanz anzeigen"
},
"instance.worlds.world_in_use": {
"message": "Welt wird aktuell benutzt"
},
"search.filter.locked.instance": {
"message": "Von der Instanz vorgegeben"
},
"search.filter.locked.instance-game-version.title": {
"message": "Spielversion ist von der Instanz vorgegeben"
},
"search.filter.locked.instance-loader.title": {
"message": "Der Loader ist von der Instanz vorgegeben"
},
"search.filter.locked.instance.sync": {
"message": "Mit Instanz synchronisieren"
}
}

View File

@@ -0,0 +1,155 @@
{
"app.settings.developer-mode-enabled": {
"message": "Λειτουργία προγραμματιστή ενεργό."
},
"app.settings.tabs.appearance": {
"message": "Εμφάνιση"
},
"app.settings.tabs.default-instance-options": {
"message": "Προεπιλεγμένες επιλογές στιγμιότυπου"
},
"app.settings.tabs.feature-flags": {
"message": "Σημαίες χαρακτηριστικών"
},
"app.settings.tabs.java-installations": {
"message": "Εγκαταστάσεις Java"
},
"app.settings.tabs.privacy": {
"message": "Απόρρητο"
},
"app.settings.tabs.resource-management": {
"message": "Διαχείριση πόρων"
},
"instance.add-server.add-and-play": {
"message": "Προσθήκη και παίξε"
},
"instance.add-server.add-server": {
"message": "Προσθήκη διακομιστή"
},
"instance.add-server.resource-pack.disabled": {
"message": "Ανενεργό"
},
"instance.add-server.resource-pack.enabled": {
"message": "Ενεργό"
},
"instance.add-server.resource-pack.prompt": {
"message": "Ειδοποίηση"
},
"instance.add-server.title": {
"message": "Προσθήκη διακομιστή"
},
"instance.edit-server.title": {
"message": "Επεξεργασία διακομιστή"
},
"instance.edit-world.hide-from-home": {
"message": "Απόκρυψη από την Αρχική σελίδα"
},
"instance.edit-world.name": {
"message": "Όνομα"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft Κόσμος"
},
"instance.edit-world.reset-icon": {
"message": "Επαναφορά εικονιδίου"
},
"instance.edit-world.title": {
"message": "Επεξεργασία κόσμου"
},
"instance.filter.disabled": {
"message": "Ανενεργά έργα"
},
"instance.filter.updates-available": {
"message": "Διαθέσιμη ενημέρωση"
},
"instance.server-modal.address": {
"message": "Διεύθυνση"
},
"instance.server-modal.name": {
"message": "Όνομα"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft Διακομιστής"
},
"instance.server-modal.resource-pack": {
"message": "Πακέτο πόρων"
},
"instance.settings.tabs.general": {
"message": "Γενικά"
},
"instance.settings.tabs.general.delete": {
"message": "Διαγραφή στιγμιότυπου"
},
"instance.settings.tabs.general.delete.button": {
"message": "Διαγραφή στιγμιότυπου"
},
"instance.settings.tabs.general.delete.description": {
"message": "Διαγράφει οριστικά ένα στιγμιότυπο από τη συσκευή σας, συμπεριλαμβανομένων των κόσμων, των ρυθμίσεων και όλου του εγκατεστημένου περιεχομένου. Να είστε προσεκτικοί, καθώς μόλις διαγράψετε μια παρουσία, δεν υπάρχει τρόπος να την ανακτήσετε."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Διαγραφή..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Διπλότυπο"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Δεν είναι δυνατή η δημιουργία αντιγράφων κατά την εγκατάσταση."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Διπλότυπο στιγμιότυπο"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Δημιουργεί ένα αντίγραφο αυτού του στιγμιότυπου, συμπεριλαμβάνοντας κόσμους, ρυθμίσεις, mods, κτλ."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Επεξεργασία εικονιδίου"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Αφαίρεση εικονιδίου"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Αντικατάσταση εικονιδίου"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Επιλογή εικονιδίου"
},
"instance.settings.tabs.general.library-groups": {
"message": "Ομάδες βιβλιοθηκών"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Δημιουργία νέας ομάδας"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Οι ομάδες βιβλιοθήκης σάς επιτρέπουν να οργανώσετε τα στιγμιότυπα σας σε διαφορετικές ενότητες στη βιβλιοθήκη σας."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Εισάγετε το όνομα της ομάδας"
},
"instance.settings.tabs.general.name": {
"message": "Όνομα"
},
"instance.settings.tabs.hooks": {
"message": "Άγκιστρα εκκίνησης"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Προσαρμοσμένα άγκιστρα εκκίνησης"
},
"instance.settings.tabs.hooks.description": {
"message": "Τα άγκιστρα επιτρέπουν στους προχωρημένους χρήστες να εκτελούν ορισμένες εντολές συστήματος πριν και μετά την εκκίνηση του παιχνιδιού."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Μετά την έξοδο"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Εκτελέστηκε αφού έκλεισε το παιχνίδι."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Εισαγάγετε την εντολή μετά την έξοδο..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Πριν την εκκίνηση"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Εκτελέστηκε πριν από την εκκίνηση του στιγμιότυπου."
}
}

View File

@@ -0,0 +1,71 @@
{
"app.settings.developer-mode-enabled": {
"message": "In ye captain's boots."
},
"app.settings.tabs.appearance": {
"message": "How ye be looking"
},
"app.settings.tabs.privacy": {
"message": "Keepin' ye gold under lock and key"
},
"instance.add-server.add-server": {
"message": "Plundered"
},
"instance.add-server.resource-pack.disabled": {
"message": "Unable"
},
"instance.add-server.resource-pack.enabled": {
"message": "Able"
},
"instance.add-server.resource-pack.prompt": {
"message": "Can"
},
"instance.add-server.title": {
"message": "Plundered"
},
"instance.edit-server.title": {
"message": "Change yer island"
},
"instance.edit-world.name": {
"message": "What'n yer world be called"
},
"instance.server-modal.address": {
"message": "Whar ye' reside"
},
"instance.server-modal.resource-pack": {
"message": "Picture pack"
},
"instance.settings.tabs.general.delete": {
"message": "Mutiny instance"
},
"instance.settings.tabs.general.delete.button": {
"message": "Mutiny instance"
},
"instance.settings.tabs.general.delete.description": {
"message": "Forces yer intstance to be walk'n the plank an' to see Davy Jones' locker, never to be seen nor heard from ever again. Ya hear?"
},
"instance.settings.tabs.general.deleting.button": {
"message": "Shoving..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Ship o' Theseus your instance"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Replaces all o' the planks on yer instance wit' new ones - be it even the same anymore?"
},
"instance.settings.tabs.general.edit-icon": {
"message": "Change yer picture"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Scrub ye deck of old paint"
},
"instance.settings.tabs.installation.game-version": {
"message": "Ye model of sloop"
},
"instance.worlds.type.server": {
"message": "Island"
},
"instance.worlds.type.singleplayer": {
"message": "Lonely Voyage"
}
}

View File

@@ -0,0 +1,419 @@
{
"app.settings.developer-mode-enabled": {
"message": "˙pǝlqɐuǝ ǝpoɯ ɹǝdolǝʌǝᗡ"
},
"app.settings.tabs.appearance": {
"message": "ǝɔuɐɹɐǝddⱯ"
},
"app.settings.tabs.default-instance-options": {
"message": "suoᴉʇdo ǝɔuɐʇsuᴉ ʇlnɐɟǝᗡ"
},
"app.settings.tabs.feature-flags": {
"message": "sɓɐlɟ ǝɹnʇɐǝℲ"
},
"app.settings.tabs.java-installations": {
"message": "suoᴉʇɐllɐʇsuᴉ ɐʌɐſ"
},
"app.settings.tabs.privacy": {
"message": "ʎɔɐʌᴉɹԀ"
},
"app.settings.tabs.resource-management": {
"message": "ʇuǝɯǝɓɐuɐɯ ǝɔɹnosǝᴚ"
},
"instance.add-server.add-and-play": {
"message": "ʎɐld puɐ ppⱯ"
},
"instance.add-server.add-server": {
"message": "ɹǝʌɹǝs ppⱯ"
},
"instance.add-server.resource-pack.disabled": {
"message": "pǝlqɐsᴉᗡ"
},
"instance.add-server.resource-pack.enabled": {
"message": "pǝlqɐuƎ"
},
"instance.add-server.resource-pack.prompt": {
"message": "ʇdɯoɹԀ"
},
"instance.add-server.title": {
"message": "ɹǝʌɹǝs ɐ ppⱯ"
},
"instance.edit-server.title": {
"message": "ɹǝʌɹǝs ʇᴉpƎ"
},
"instance.edit-world.hide-from-home": {
"message": "ǝɓɐd ǝɯoH ǝɥʇ ɯoɹɟ ǝpᴉH"
},
"instance.edit-world.name": {
"message": ɯɐN"
},
"instance.edit-world.placeholder-name": {
"message": "plɹoM ʇɟɐɹɔǝuᴉW"
},
"instance.edit-world.reset-icon": {
"message": "uoɔᴉ ʇǝsǝᴚ"
},
"instance.edit-world.title": {
"message": "plɹoʍ ʇᴉpƎ"
},
"instance.filter.disabled": {
"message": "sʇɔǝſoɹd pǝlqɐsᴉᗡ"
},
"instance.filter.updates-available": {
"message": "ǝlqɐlᴉɐʌɐ sǝʇɐpd∩"
},
"instance.server-modal.address": {
"message": "ssǝɹppⱯ"
},
"instance.server-modal.name": {
"message": ɯɐN"
},
"instance.server-modal.placeholder-name": {
"message": "ɹǝʌɹǝS ʇɟɐɹɔǝuᴉW"
},
"instance.server-modal.resource-pack": {
"message": "ʞɔɐd ǝɔɹnosǝᴚ"
},
"instance.settings.tabs.general": {
"message": "lɐɹǝuǝ⅁"
},
"instance.settings.tabs.general.delete": {
"message": "ǝɔuɐʇsuᴉ ǝʇǝlǝᗡ"
},
"instance.settings.tabs.general.delete.button": {
"message": "ǝɔuɐʇsuᴉ ǝʇǝlǝᗡ"
},
"instance.settings.tabs.general.delete.description": {
"message": "˙ʇᴉ ɹǝʌoɔǝɹ oʇ ʎɐʍ ou sᴉ ǝɹǝɥʇ ǝɔuɐʇsuᴉ ɐ ǝʇǝlǝp noʎ ǝɔuo sɐ ˋlnɟǝɹɐɔ ǝᗺ ˙ʇuǝʇuoɔ pǝllɐʇsuᴉ llɐ puɐ ˋsɓᴉɟuoɔ ˋsplɹoʍ ɹnoʎ ɓuᴉpnlɔuᴉ ˋǝɔᴉʌǝp ɹnoʎ ɯoɹɟ ǝɔuɐʇsuᴉ uɐ sǝʇǝlǝp ʎlʇuǝuɐɯɹǝԀ"
},
"instance.settings.tabs.general.deleting.button": {
"message": "˙˙˙ɓuᴉʇǝlǝᗡ"
},
"instance.settings.tabs.general.duplicate-button": {
"message": "ǝʇɐɔᴉldnᗡ"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "˙ɓuᴉllɐʇsuᴉ ǝlᴉɥʍ ǝʇɐɔᴉldnp ʇouuɐƆ"
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "ǝɔuɐʇsuᴉ ǝʇɐɔᴉldnᗡ"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "˙ɔʇǝ ˋspoɯ ˋsɓᴉɟuoɔ ˋsplɹoʍ ɓuᴉpnlɔuᴉ ˋǝɔuɐʇsuᴉ sᴉɥʇ ɟo ʎdoɔ ɐ sǝʇɐǝɹƆ"
},
"instance.settings.tabs.general.edit-icon": {
"message": "uoɔᴉ ʇᴉpƎ"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "uoɔᴉ ǝʌoɯǝᴚ"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "uoɔᴉ ǝɔɐldǝᴚ"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "uoɔᴉ ʇɔǝlǝS"
},
"instance.settings.tabs.general.library-groups": {
"message": "Sǝlǝɔʇ ᴉɔon"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "dnoɹɓ ʍǝu ǝʇɐǝɹƆ"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "˙ʎɹɐɹqᴉl ɹnoʎ uᴉ suoᴉʇɔǝs ʇuǝɹǝɟɟᴉp oʇuᴉ sǝɔuɐʇsuᴉ ɹnoʎ ǝzᴉuɐɓɹo oʇ noʎ ʍollɐ sdnoɹɓ ʎɹɐɹqᴉꞀ"
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": ɯɐu dnoɹɓ ɹǝʇuƎ"
},
"instance.settings.tabs.general.name": {
"message": ɯɐN"
},
"instance.settings.tabs.hooks": {
"message": "sʞooɥ ɥɔunɐꞀ"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "sʞooɥ ɥɔunɐl ɯoʇsnƆ"
},
"instance.settings.tabs.hooks.description": {
"message": "˙ǝɯɐɓ ǝɥʇ ɓuᴉɥɔunɐl ɹǝʇɟɐ puɐ ǝɹoɟǝq spuɐɯɯɯǝʇsʎs uᴉɐʇɹǝɔ unɹ oʇ sɹǝsn pǝɔuɐʌpɐ ʍollɐ sʞooH"
},
"instance.settings.tabs.hooks.post-exit": {
"message": "ʇᴉxǝ-ʇsoԀ"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "˙sǝsolɔ ǝɯɐɓ ǝɥʇ ɹǝʇɟɐ uɐᴚ"
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "˙˙˙puɐɯɯoɔ ʇᴉxǝ-ʇsod ɹǝʇuƎ"
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "ɥɔunɐl-ǝɹԀ"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "˙pǝɥɔunɐl sᴉ ǝɔuɐʇsuᴉ ǝɥʇ ǝɹoɟǝq uɐᴚ"
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "˙˙˙puɐɯɯoɔ ɥɔunɐl-ǝɹd ɹǝʇuƎ"
},
"instance.settings.tabs.hooks.title": {
"message": "sʞooɥ ɥɔunɐl ǝɯɐ⅁"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "ɹǝddɐɹM"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "˙ʇɟɐɹɔǝuᴉW ɓuᴉɥɔunɐl ɹoɟ puɐɯɯoɔ ɹǝddɐɹM"
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "˙˙˙puɐɯɯoɔ ɹǝddɐɹʍ ɹǝʇuƎ"
},
"instance.settings.tabs.installation": {
"message": "uoᴉʇɐllɐʇsuI"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "pǝllɐʇsuᴉ ʎpɐǝɹlɐ {game_version} ʇɟɐɹɔǝuᴉW ɹoɟ {version} {platform}"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "pǝllɐʇsuᴉ ʎpɐǝɹlɐ {game_version} ɐllᴉuɐΛ"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "uoᴉsɹǝʌ ǝɓuɐɥƆ"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "llɐʇsuI"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "ɓuᴉllɐʇsuI"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "suoᴉsɹǝʌ ʞɔɐdpoɯ ɓuᴉɥɔʇǝℲ"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "uoᴉsɹǝʌ ʍǝu ɓuᴉllɐʇsuI"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "pǝllɐʇsuᴉ ʎlʇuǝɹɹnƆ"
},
"instance.settings.tabs.installation.debug-information": {
"message": ":uoᴉʇɐɯɹoɟuᴉ ɓnqǝᗡ"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "slᴉɐʇǝp ʞɔɐdpoɯ ɓuᴉɥɔʇǝℲ"
},
"instance.settings.tabs.installation.game-version": {
"message": "uoᴉsɹǝʌ ǝɯɐ⅁"
},
"instance.settings.tabs.installation.install": {
"message": "llɐʇsuI"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "ssǝɹɓoɹd uᴉ uoᴉʇɐllɐʇsuI"
},
"instance.settings.tabs.installation.loader-version": {
"message": "uoᴉsɹǝʌ {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "{version} ʇɟɐɹɔǝuᴉW"
},
"instance.settings.tabs.installation.no-connection": {
"message": "˙uoᴉʇɔǝuuoɔ ʇǝuɹǝʇuᴉ ɹnoʎ ʞɔǝɥɔ ǝsɐǝlԀ ˙slᴉɐʇǝp ʞɔɐdpoɯ pǝʞuᴉl ɥɔʇǝɟ ʇouuɐƆ"
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "˙ɹǝpɐol poɯ ɹǝɥʇouɐ ʎɹ⟘ ˙{version} ʇɟɐɹɔǝuᴉW ɹoɟ ǝlqɐlᴉɐʌɐ ʇou sᴉ {loader}"
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "˙ɥʇuᴉɹpoW uo punoɟ ǝq ʇou plnoɔ ʞɔɐdpoɯ ǝɥʇ ʇnq ˋʞɔɐdpoɯ ɐ oʇ pǝʞuᴉl sᴉ ǝɔuɐʇsuᴉ sᴉɥ⟘"
},
"instance.settings.tabs.installation.platform": {
"message": "ɯɹoɟʇɐlԀ"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "ʞɔɐdpoɯ llɐʇsuᴉǝᴚ"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "ʞɔɐdpoɯ ɓuᴉllɐʇsuᴉǝᴚ"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "˙splɹoʍ ɓuᴉʇsᴉxǝ ʞɐǝɹq ʎɐɯ ʇᴉ ˋʇuǝʇuoɔ pǝllɐʇsuᴉ lɐuoᴉʇᴉppɐ uo puǝdǝp ʍou splɹoʍ ɹnoʎ ɟᴉ ʇnq ˋǝɔuɐʇsuᴉ ǝɥʇ oʇ ǝpɐɯ uǝǝq ǝʌɐɥ sǝɓuɐɥɔ ɟᴉ ɹoᴉʌɐɥǝq pǝʇɔǝdxǝun xᴉɟ ʎɐɯ sᴉɥ⟘ ˙uoᴉʇɐllɐʇsuᴉ lɐuᴉɓᴉɹo ǝɥʇ ɟo doʇ uo pǝppɐ ǝʌɐɥ noʎ ʇuǝʇuoɔ ɹo spoɯ ʎuɐ ɓuᴉʌoɯǝɹ ˋʞɔɐdpoɯ ǝɥʇ ʎq pǝpᴉʌoɹd sᴉ ʇɐɥʍ oʇ ʇuǝʇuoɔ pǝᴉɟᴉpoɯ ɹo pǝllɐʇsuᴉ llɐ ʇǝsǝɹ llᴉʍ ɓuᴉllɐʇsuᴉǝᴚ"
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "¿ǝɔuɐʇsuᴉ sᴉɥʇ llɐʇsuᴉǝɹ oʇ ʇuɐʍ noʎ ǝɹns noʎ ǝɹⱯ"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "˙ʞɔɐdpoɯ lɐuᴉɓᴉɹo ǝɥʇ ɟo doʇ uo pǝppɐ ǝʌɐɥ noʎ ʇuǝʇuoɔ ɹo spoɯ ʎuɐ ɓuᴉʌoɯǝɹ ˋǝʇɐʇs lɐuᴉɓᴉɹo sʇᴉ oʇ ʇuǝʇuoɔ s,ǝɔuɐʇsuᴉ ǝɥʇ sʇǝsǝᴚ"
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "ʞɔɐdpoɯ llɐʇsuᴉǝᴚ"
},
"instance.settings.tabs.installation.repair.button": {
"message": "ɹᴉɐdǝᴚ"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "ɓuᴉɹᴉɐdǝᴚ"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "˙spoɯ pǝllɐʇsuᴉ oʇ pǝʇɐlǝɹ sǝɥsɐɹɔ ɹo sǝnssᴉ ǝʌlosǝɹ ʇou llᴉʍ ʇnq ˋsɹoɹɹǝ pǝʇɐlǝɹ-ɹǝɥɔunɐl oʇ ǝnp ɓuᴉɥɔunɐl ʇou sᴉ ǝɯɐɓ ɹnoʎ ɟᴉ sǝnssᴉ ǝʌlosǝɹ ʎɐɯ sᴉɥ⟘ ˙uoᴉʇdnɹɹoɔ ɹoɟ sʞɔǝɥɔ puɐ sǝᴉɔuǝpuǝdǝp ʇɟɐɹɔǝuᴉW sllɐʇsuᴉǝɹ ɓuᴉɹᴉɐdǝᴚ"
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "¿ǝɔuɐʇsuᴉ ɹᴉɐdǝᴚ"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "ssǝɹɓoɹd uᴉ ɹᴉɐdǝᴚ"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "ʇuǝɹɹnɔ oʇ ʇǝsǝᴚ"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "suoᴉsɹǝʌ llɐ ʍoɥS"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "uoᴉsɹǝʌ ǝɓuɐɥɔ"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "llɐʇsuᴉ"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "llɐʇsuᴉǝɹ"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "ɹᴉɐdǝɹ"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "ɓuᴉllɐʇsuᴉ ǝlᴉɥʍ {action} ʇouuɐƆ"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "ǝuᴉlɟɟo ǝlᴉɥʍ {action} ʇouuɐƆ"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "ɓuᴉɹᴉɐdǝɹ ǝlᴉɥʍ {action} ʇouuɐƆ"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(uoᴉsɹǝʌ uʍouʞun)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "ǝɔuɐʇsuᴉ ʞuᴉlu∩"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "˙lɐɯɹou ɐ ǝɯoɔǝq llᴉʍ ʇᴉ puɐ sǝʇɐpdn ʞɔɐdpoɯ ǝʌᴉǝɔǝɹ ɹǝɓuol ou llᴉʍ no⅄ ˙ǝɔuɐʇsuᴉ ʍǝu ʎlǝɹᴉʇuǝ uɐ ɓuᴉʇɐǝɹɔ ʇnoɥʇᴉʍ ʇᴉ ʞuᴉl-ǝɹ oʇ ǝlqɐ ǝq ʇou llᴉʍ noʎ ˋpǝǝɔoɹd noʎ ɟI"
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "¿ǝɔuɐʇsuᴉ sᴉɥʇ ʞuᴉlun oʇ ʇuɐʍ noʎ ǝɹns noʎ ǝɹⱯ"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "˙ʞɔɐdpoɯ ǝɥʇ ɯoɹɟ ǝɔuɐʇsuᴉ sᴉɥʇ ʇɔǝuuoɔsᴉp ʎlʇuǝuɐɯɹǝd llᴉʍ ɓuᴉʞuᴉlu∩ ˙uoᴉsɹǝʌ ʇɟɐɹɔǝuᴉW ɹo ɹǝpɐol poɯ ǝɥʇ ǝɓuɐɥɔ ʇ,uɐɔ noʎ puɐ pǝʇɐpdn ǝq ʇ,uɐɔ spoɯ suɐǝɯ ɥɔᴉɥʍ ˋʞɔɐdpoɯ ɐ oʇ pǝʞuᴉl sᴉ ǝɔuɐʇsuᴉ sᴉɥ⟘"
},
"instance.settings.tabs.installation.unlink.title": {
"message": "ʞɔɐdpoɯ ɯoɹɟ ʞuᴉlu∩"
},
"instance.settings.tabs.java": {
"message": "ʎɹoɯǝɯ puɐ ɐʌɐſ"
},
"instance.settings.tabs.java.environment-variables": {
"message": "sǝlqɐᴉɹɐʌ ʇuǝɯuoɹᴉʌuƎ"
},
"instance.settings.tabs.java.hooks": {
"message": "sʞooH"
},
"instance.settings.tabs.java.java-arguments": {
"message": "sʇuǝɯnɓɹɐ ɐʌɐſ"
},
"instance.settings.tabs.java.java-installation": {
"message": "uoᴉʇɐllɐʇsuᴉ ɐʌɐſ"
},
"instance.settings.tabs.java.java-memory": {
"message": "pǝʇɐɔollɐ ʎɹoɯǝW"
},
"instance.settings.tabs.window": {
"message": "ʍopuᴉM"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "sɓuᴉʇʇǝs ʍopuᴉʍ ɯoʇsnƆ"
},
"instance.settings.tabs.window.fullscreen": {
"message": "uǝǝɹɔsllnℲ"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "˙(ʇxʇ˙suoᴉʇdo ɓuᴉsn) pǝɥɔunɐl uǝɥʍ uǝǝɹɔs llnɟ uᴉ ʇɹɐʇs ǝɯɐɓ ǝɥʇ ǝʞɐW"
},
"instance.settings.tabs.window.height": {
"message": "ʇɥɓᴉǝH"
},
"instance.settings.tabs.window.height.description": {
"message": "˙pǝɥɔunɐl uǝɥʍ ʍopuᴉʍ ǝɯɐɓ ǝɥʇ ɟo ʇɥɓᴉǝɥ ǝɥ⟘"
},
"instance.settings.tabs.window.height.enter": {
"message": "˙˙˙ʇɥɓᴉǝɥ ɹǝʇuƎ"
},
"instance.settings.tabs.window.width": {
"message": "ɥʇpᴉM"
},
"instance.settings.tabs.window.width.description": {
"message": "˙pǝɥɔunɐl uǝɥʍ ʍopuᴉʍ ǝɯɐɓ ǝɥʇ ɟo ɥʇpᴉʍ ǝɥ⟘"
},
"instance.settings.tabs.window.width.enter": {
"message": "˙˙˙ɥʇpᴉʍ ɹǝʇuƎ"
},
"instance.settings.title": {
"message": "sɓuᴉʇʇǝS"
},
"instance.worlds.a_minecraft_server": {
"message": "ɹǝʌɹǝS ʇɟɐɹɔǝuᴉW Ɐ"
},
"instance.worlds.cant_connect": {
"message": "ɹǝʌɹǝs oʇ ʇɔǝuuoɔ ʇ,uɐƆ"
},
"instance.worlds.copy_address": {
"message": "ssǝɹppɐ ʎdoƆ"
},
"instance.worlds.dont_show_on_home": {
"message": ɯoH uo ʍoɥs ʇ,uoᗡ"
},
"instance.worlds.filter.available": {
"message": "ǝlqɐlᴉɐʌⱯ"
},
"instance.worlds.game_already_open": {
"message": "uǝdo ʎpɐǝɹlɐ sᴉ ǝɔuɐʇsuI"
},
"instance.worlds.hardcore": {
"message": "ǝpoɯ ǝɹoɔpɹɐH"
},
"instance.worlds.incompatible_server": {
"message": "ǝlqᴉʇɐdɯoɔuᴉ sᴉ ɹǝʌɹǝS"
},
"instance.worlds.no_contact": {
"message": "pǝʇɔɐʇuoɔ ǝq ʇ,uplnoɔ ɹǝʌɹǝS"
},
"instance.worlds.no_server_quick_play": {
"message": "+૨˙0˙⇂ ɐɥdlⱯ ʇɟɐɹɔǝuᴉW uo sɹǝʌɹǝs oʇuᴉ ʇɥɓᴉɐɹʇs dɯnſ ʎluo uɐɔ no⅄"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "+0ᘕ˙⇂ ʇɟɐɹɔǝuᴉW uo splɹoʍ ɹǝʎɐldǝlɓuᴉs oʇuᴉ ʇɥɓᴉɐɹʇs dɯnſ ʎluo uɐɔ no⅄"
},
"instance.worlds.play_instance": {
"message": "ǝɔuɐʇsuᴉ ʎɐlԀ"
},
"instance.worlds.type.server": {
"message": "ɹǝʌɹǝS"
},
"instance.worlds.type.singleplayer": {
"message": "ɹǝʎɐldǝlɓuᴉS"
},
"instance.worlds.view_instance": {
"message": "ǝɔuɐʇsuᴉ ʍǝᴉΛ"
},
"instance.worlds.world_in_use": {
"message": "ǝsn uᴉ sᴉ plɹoM"
},
"search.filter.locked.instance": {
"message": "ǝɔuɐʇsuᴉ ǝɥʇ ʎq pǝpᴉʌoɹԀ"
},
"search.filter.locked.instance-game-version.title": {
"message": "ǝɔuɐʇsuᴉ ǝɥʇ ʎq pǝpᴉʌoɹd sᴉ uoᴉsɹǝʌ ǝɯɐ⅁"
},
"search.filter.locked.instance-loader.title": {
"message": "ǝɔuɐʇsuᴉ ǝɥʇ ʎq pǝpᴉʌoɹd sᴉ ɹǝpɐoꞀ"
},
"search.filter.locked.instance.sync": {
"message": "ǝɔuɐʇsuᴉ ɥʇᴉʍ ɔuʎS"
}
}

View File

@@ -1,7 +1,16 @@
{
"app.auth-servers.unreachable.body": {
"message": "Minecraft authentication servers may be down right now. Check your internet connection and try again later."
},
"app.auth-servers.unreachable.header": {
"message": "Cannot reach authentication servers"
},
"app.settings.developer-mode-enabled": {
"message": "Developer mode enabled."
},
"app.settings.downloading": {
"message": "Downloading v{version}"
},
"app.settings.tabs.appearance": {
"message": "Appearance"
},
@@ -20,6 +29,111 @@
"app.settings.tabs.resource-management": {
"message": "Resource management"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} is ready to install! Reload to update now, or automatically when you close Modrinth App."
},
"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.metered": {
"message": "Modrinth App v{version} is available now! Since you're on a metered network, we didn't automatically download it."
},
"app.update-toast.changelog": {
"message": "Changelog"
},
"app.update-toast.download": {
"message": "Download ({size})"
},
"app.update-toast.downloading": {
"message": "Downloading..."
},
"app.update-toast.reload": {
"message": "Reload"
},
"app.update-toast.title": {
"message": "Update available"
},
"app.update-toast.title.download-complete": {
"message": "Download complete"
},
"app.update.complete-toast.text": {
"message": "Click here to view the changelog."
},
"app.update.complete-toast.title": {
"message": "Version {version} was successfully installed!"
},
"app.update.download-update": {
"message": "Download update"
},
"app.update.downloading-update": {
"message": "Downloading update ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Reload to install update"
},
"friends.action.add-friend": {
"message": "Add a friend"
},
"friends.action.view-friend-requests": {
"message": "{count} friend {count, plural, one {request} other {requests}}"
},
"friends.add-friend.submit": {
"message": "Send friend request"
},
"friends.add-friend.title": {
"message": "Adding a friend"
},
"friends.add-friend.username.description": {
"message": "It may be different from their Minecraft username!"
},
"friends.add-friend.username.placeholder": {
"message": "Enter Modrinth username..."
},
"friends.add-friend.username.title": {
"message": "What's your friend's Modrinth username?"
},
"friends.add-friends-to-share": {
"message": "<link>Add friends</link> to see what they're playing!"
},
"friends.friend.cancel-request": {
"message": "Cancel request"
},
"friends.friend.remove-friend": {
"message": "Remove friend"
},
"friends.friend.request-sent": {
"message": "Friend request sent"
},
"friends.friend.view-profile": {
"message": "View profile"
},
"friends.heading": {
"message": "Friends"
},
"friends.heading.active": {
"message": "Active"
},
"friends.heading.offline": {
"message": "Offline"
},
"friends.heading.online": {
"message": "Online"
},
"friends.heading.pending": {
"message": "Pending"
},
"friends.no-friends-match": {
"message": "No friends matching ''{query}''"
},
"friends.search-friends-placeholder": {
"message": "Search friends..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Sign in to a Modrinth account</link> to add friends and see what they're playing!"
},
"instance.add-server.add-and-play": {
"message": "Add and play"
},

View File

@@ -0,0 +1,341 @@
{
"app.settings.developer-mode-enabled": {
"message": "Programista modo ebligita."
},
"app.settings.tabs.appearance": {
"message": "Aspekto"
},
"app.settings.tabs.default-instance-options": {
"message": "Defaŭltaj agordoj de aperoj"
},
"app.settings.tabs.feature-flags": {
"message": "Trajtoflagoj"
},
"app.settings.tabs.java-installations": {
"message": "Instaloj de Java"
},
"app.settings.tabs.privacy": {
"message": "Privateco"
},
"instance.add-server.add-and-play": {
"message": "Aldoni kaj ludi"
},
"instance.add-server.add-server": {
"message": "Aldoni servilon"
},
"instance.add-server.resource-pack.disabled": {
"message": "Neebligita"
},
"instance.add-server.resource-pack.enabled": {
"message": "Ebligita"
},
"instance.add-server.resource-pack.prompt": {
"message": "Petu"
},
"instance.add-server.title": {
"message": "Aldoni servilon"
},
"instance.edit-server.title": {
"message": "Redakti servilon"
},
"instance.edit-world.hide-from-home": {
"message": "Kaŝi el la Hejma paĝo"
},
"instance.edit-world.name": {
"message": "Nomo"
},
"instance.edit-world.placeholder-name": {
"message": "Mondo de Minecraft"
},
"instance.edit-world.reset-icon": {
"message": "Restarigi simbolon"
},
"instance.edit-world.title": {
"message": "Redakti mondon"
},
"instance.filter.disabled": {
"message": "Neebligitaj projektoj"
},
"instance.filter.updates-available": {
"message": "Ĝisdatigoj disponeblas"
},
"instance.server-modal.address": {
"message": "Adreso"
},
"instance.server-modal.name": {
"message": "Nomo"
},
"instance.server-modal.placeholder-name": {
"message": "Servilo de Minecraft"
},
"instance.server-modal.resource-pack": {
"message": "Rimedo-pako"
},
"instance.settings.tabs.general": {
"message": "Ĝeneralo"
},
"instance.settings.tabs.general.delete": {
"message": "Forigo de apero"
},
"instance.settings.tabs.general.delete.button": {
"message": "Forigi aperon"
},
"instance.settings.tabs.general.delete.description": {
"message": "Porĉiame forigas aperon de via aparato, inkluzivo de mondoj, kaj ĉiu instaligita enhavon. Estu zorgema ĉar kiam oni forigus aperon, ĝi ne estus restaŭrebla."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Forigado..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duobligi"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Ne povas duobligi dum instalado."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Duobligo de apero"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Kopias la aperon, inkluzivo de mondoj, agordoj, modifoj, ktp."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Redakti simbolon"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Forigi simbolon"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Ŝanĝi simbolon"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Elekti simbolon"
},
"instance.settings.tabs.general.library-groups": {
"message": "Grupoj de la biblioteko"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Krei novan grupon"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Grupoj de la biblioteko ebligas vin organizi la aperojn en fakojn en la biblioteko."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Entajpu nomon de grupo"
},
"instance.settings.tabs.general.name": {
"message": "Nomo"
},
"instance.settings.tabs.hooks": {
"message": "Lanĉaj hokoj"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Propraj lanĉaj hokoj"
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Post fermo"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Plenumata post kiam ludo fermas."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Entajpu komandon de post fermo..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Antaŭ malfermo"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Plenumata antaŭ kiam ludo malfermas."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Entajpu komandon de antaŭ malfermo..."
},
"instance.settings.tabs.hooks.title": {
"message": "Hokoj de luda lanĉo"
},
"instance.settings.tabs.installation": {
"message": "Instalo"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Ŝanĝi version"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Instali"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Instalado"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Elŝutado de modifo-pakaĵaj versioj"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Instalado de nova versio"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Nune instalata"
},
"instance.settings.tabs.installation.game-version": {
"message": "Luda versio"
},
"instance.settings.tabs.installation.install": {
"message": "Instali"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Instalado okazas"
},
"instance.settings.tabs.installation.loader-version": {
"message": "Versio de {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Ne povas elŝuti detalojn de ligita modifo-pakaĵo. Bonvolu kontroli la konekton de interreto."
},
"instance.settings.tabs.installation.platform": {
"message": "Platformo"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Reinstali modifo-pakaĵon"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Reinstalado de modifo-pakaĵo"
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Ĉu vi certas, ke vi volas reinstali la aperon?"
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Reinstalo de modifo-pakaĵo"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Ripari"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Riparado"
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Ĉu riparu aperon?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Riparo okazas"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Restarigi al nuna"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Montri ĉiun version"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "ŝanĝi version"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "instali"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "reinstali"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "ripari"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Ne povas {action} dum instalado"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Ne povas {action} kiam neenreta"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Ne povas {action} dum riparado"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(nekonata versio)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Malligi aperon"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Se vi daŭrus, vi ne povus re-ligi ĝin sen kreado de nova aperon. Vi ne daŭre ricevos ĝisdatigojn de modifo-pakaĵoj kaj ĝi normaliĝos."
},
"instance.settings.tabs.java": {
"message": "Java kaj memoro"
},
"instance.settings.tabs.java.hooks": {
"message": "Hokoj"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Argumentoj de Java"
},
"instance.settings.tabs.java.java-installation": {
"message": "Instalo de Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Asigno de memoro"
},
"instance.settings.tabs.window": {
"message": "Fenestro"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Propraj agordoj de fenestro"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Tutekrano"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Ludo lanĉiĝos tutekrane (uzante na options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Alto"
},
"instance.settings.tabs.window.height.description": {
"message": "Alto de la luda fenestro kiam lanĉata."
},
"instance.settings.tabs.window.height.enter": {
"message": "Entajpu alton..."
},
"instance.settings.tabs.window.width": {
"message": "Larĝo"
},
"instance.settings.tabs.window.width.description": {
"message": "Larĝo de la luda fenestro kiam lanĉata."
},
"instance.settings.tabs.window.width.enter": {
"message": "Entajpu larĝon..."
},
"instance.settings.title": {
"message": "Agordoj"
},
"instance.worlds.a_minecraft_server": {
"message": "Servilo de Minecraft"
},
"instance.worlds.cant_connect": {
"message": "Ne povas konektiĝi kun servilo"
},
"instance.worlds.copy_address": {
"message": "Kopii adreson"
},
"instance.worlds.dont_show_on_home": {
"message": "Ne montri en Hejmo"
},
"instance.worlds.filter.available": {
"message": "Disponeblaj"
},
"instance.worlds.game_already_open": {
"message": "Apero jam estas malferma"
},
"instance.worlds.play_instance": {
"message": "Ludi en apero"
},
"instance.worlds.type.server": {
"message": "Servilo"
},
"instance.worlds.type.singleplayer": {
"message": "Unu ludanto"
},
"instance.worlds.view_instance": {
"message": "Vidi aperon"
},
"instance.worlds.world_in_use": {
"message": "Mondo nune uzata"
},
"search.filter.locked.instance.sync": {
"message": "Sinkroni kun apero"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Modo desarrollador activado."
},
"app.settings.downloading": {
"message": "Descargando v{version}"
},
"app.settings.tabs.appearance": {
"message": "Apariencia"
},
"app.settings.tabs.default-instance-options": {
"message": "Opciones predeterminadas de la instancia"
},
"app.settings.tabs.feature-flags": {
"message": "Funciones experimentales"
},
"app.settings.tabs.java-installations": {
"message": "Instalaciones de Java"
},
"app.settings.tabs.privacy": {
"message": "Privacidad"
},
"app.settings.tabs.resource-management": {
"message": "Gestión de recursos"
},
"app.update-toast.body": {
"message": "¡La aplicación Modrinth v{version} está lista para instalarse! Actualiza ahora o automáticamente al cerrar la aplicación Modrinth."
},
"app.update-toast.body.download-complete": {
"message": "La descarga de la aplicación Modrinth v{version} ha finalizado. Actualice ahora o automáticamente al cerrar la aplicación Modrinth."
},
"app.update-toast.body.metered": {
"message": "¡La aplicación Modrinth v{version} ya está disponible! Como estás conectado a una red con límite de datos, no la hemos descargado automáticamente."
},
"app.update-toast.changelog": {
"message": "Registro de cambios"
},
"app.update-toast.download": {
"message": "Descargar ({size})"
},
"app.update-toast.downloading": {
"message": "Descargando..."
},
"app.update-toast.reload": {
"message": "Recargar"
},
"app.update-toast.title": {
"message": "Actualización disponible"
},
"app.update-toast.title.download-complete": {
"message": "Descarga completada"
},
"app.update.complete-toast.text": {
"message": "Haga clic aquí para ver el registro de cambios."
},
"app.update.complete-toast.title": {
"message": "¡La versión {version} se ha instalado correctamente!"
},
"app.update.download-update": {
"message": "Descargar actualización"
},
"app.update.downloading-update": {
"message": "Descargando actualización ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Recarga para instalar la actualización"
},
"friends.action.add-friend": {
"message": "Añadir un amigo"
},
"friends.action.view-friend-requests": {
"message": "{count} {count, plural, one {solicitud} other {solicitudes}} de amistad"
},
"friends.add-friend.submit": {
"message": "Enviar solicitud de amistad"
},
"friends.add-friend.title": {
"message": "Añadiendo un amigo"
},
"friends.add-friend.username.description": {
"message": "¡Podría ser distinto a su nombre de Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "Escribe el nombre de usuario de Modrinth..."
},
"friends.add-friend.username.title": {
"message": "¿Cuál es el nombre de usuario de Modrinth de tu amigo?"
},
"friends.add-friends-to-share": {
"message": "<link>¡Añade amigos</link> para ver qué están jugando!"
},
"friends.friend.cancel-request": {
"message": "Cancelar solicitud"
},
"friends.friend.remove-friend": {
"message": "Eliminar amigo"
},
"friends.friend.request-sent": {
"message": "Solicitud de amistad enviada"
},
"friends.friend.view-profile": {
"message": "Ver perfil"
},
"friends.heading": {
"message": "Amigos"
},
"friends.heading.active": {
"message": "Activos"
},
"friends.heading.offline": {
"message": "Desconectados"
},
"friends.heading.online": {
"message": "Conectados"
},
"friends.heading.pending": {
"message": "Pendiente"
},
"friends.no-friends-match": {
"message": "Ningún amigo coincide con \"{query}\""
},
"friends.search-friends-placeholder": {
"message": "Buscar amigos..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>¡Inicia sesión en una cuenta de Modrinth</link> para añadir amigos y ver qué están jugando!"
},
"instance.add-server.add-and-play": {
"message": "Añadir y jugar"
},
"instance.add-server.add-server": {
"message": "Añadir servidor"
},
"instance.add-server.resource-pack.disabled": {
"message": "Desactivado"
},
"instance.add-server.resource-pack.enabled": {
"message": "Activado"
},
"instance.add-server.resource-pack.prompt": {
"message": "Preguntar"
},
"instance.add-server.title": {
"message": "Añadir un servidor"
},
"instance.edit-server.title": {
"message": "Editar servidor"
},
"instance.edit-world.hide-from-home": {
"message": "Ocultar de la página de Inicio"
},
"instance.edit-world.name": {
"message": "Nombre"
},
"instance.edit-world.placeholder-name": {
"message": "Mundo de Minecraft"
},
"instance.edit-world.reset-icon": {
"message": "Resetear ícono"
},
"instance.edit-world.title": {
"message": "Editar mundo"
},
"instance.filter.disabled": {
"message": "Proyectos desactivados"
},
"instance.filter.updates-available": {
"message": "Actualizaciones disponibles"
},
"instance.server-modal.address": {
"message": "Dirección IP"
},
"instance.server-modal.name": {
"message": "Nombre"
},
"instance.server-modal.placeholder-name": {
"message": "Servidor de Minecraft"
},
"instance.server-modal.resource-pack": {
"message": "Resource pack"
},
"instance.settings.tabs.general": {
"message": "General"
},
"instance.settings.tabs.general.delete": {
"message": "Eliminar instancia"
},
"instance.settings.tabs.general.delete.button": {
"message": "Eliminar instancia"
},
"instance.settings.tabs.general.delete.description": {
"message": "Elimina permanentemente una instancia de tu dispositivo, incluyendo tus mundos, configuraciones y todo el contenido instalado. Ten cuidado, ya que una vez que elimines una instancia no hay forma de recuperarla."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Eliminando..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplicar"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "No se puede duplicar durante la instalación."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Duplicar la instancia"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Crea una copia de esta instancia, incluyendo mundos, configuración, mods, etc."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Editar ícono"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Remover ícono"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Reemplazar ícono"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Selecionar ícono"
},
"instance.settings.tabs.general.library-groups": {
"message": "Grupos de la librería"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Crear nuevo grupo"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Los grupos de la librería te ayudan a organizar tus instancias en diferentes secciones en tu librería."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Escribe el nombre del grupo"
},
"instance.settings.tabs.general.name": {
"message": "Nombre"
},
"instance.settings.tabs.hooks": {
"message": "Lanzar hooks"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Hooks personalizados"
},
"instance.settings.tabs.hooks.description": {
"message": "Los hooks permiten que usuarios avanzados ejecuten comandos del sistema antes y despues de lanzar el juego."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Post-cierre"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Ejecutados luego de que el juego se cierra."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Introduce el comando post-cierre..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Pre-inicio"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Ejecutados antes de que la instancia inicie."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Introducir comando pre-inicio..."
},
"instance.settings.tabs.hooks.title": {
"message": "Hooks de inicio de juego"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Comando de capa para lanzar Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Introduce el comando capa..."
},
"instance.settings.tabs.installation": {
"message": "Instalación"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} ya está instalado para Minecraft {game_version}"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "{game_version} vanilla ya está instalado"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Cambiar versión"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Instalar"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Instalando"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Obteniendo versiones del modpack"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Instalando nueva versión"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Actualmente instalado"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Información de depuración:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Obteniendo detalles del modpack"
},
"instance.settings.tabs.installation.game-version": {
"message": "Versión del juego"
},
"instance.settings.tabs.installation.install": {
"message": "Instalar"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Instalación en progreso"
},
"instance.settings.tabs.installation.loader-version": {
"message": "Versión de {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "No se pueden obtener los detalles del modpack vinculado. Por favor, verifica tu conexión a internet."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} no esta disponible para Minecraft {version}. Prueba con otro mod loader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Esta instancia está vinculada a un modpack, pero no se pudo encontrar el modpack en Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Plataforma"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Reinstalar modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Reinstalando modpack"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Reinstalar restablecerá todo el contenido instalado o modificado a lo que proporciona el modpack, eliminando cualquier mod o contenido que hayas agregado encima de la instalación original. Esto puede solucionar comportamientos inesperados si se han hecho cambios en la instancia, pero si tus mundos dependen de contenido adicional instalado, podría afectar los mundos existentes."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "¿Estás seguro de que quieres reinstalar esta instancia?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Restablece el contenido de la instancia a su estado original, eliminando cualquier mod o contenido que hayas agregado encima del modpack original."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Reinstalar modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Reparar"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Reparando"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Reparar reinstala las dependencias de Minecraft y verifica si hay archivos dañados. Esto puede solucionar problemas si tu juego no se inicia por errores relacionados con el launcher, pero no resolverá problemas causados por mods instalados."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "¿Reparar instancia?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Reparación en proceso..."
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Restablecer al actual"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Mostrar todas las versiones"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "cambiar versión"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "instalar"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "reinstalar"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "reparar"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "No se puede {action} mientras se está instalando"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "No se puede {action} mientras estés desconectado"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "No se puede {action} mientras se está reparando"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(versión desconocida)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Desvincular instancia"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Si continúas, no podrás volver a vincularla sin crear una instancia completamente nueva. Ya no recibirás actualizaciones del modpack y se convertirá en una instancia normal."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "¿Estás seguro de que quieres desvincular esta instancia?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Esta instancia está vinculada a un modpack, lo que significa que los mods no se pueden actualizar y no puedes cambiar el mod loader ni la versión de Minecraft. Desvincularla desconectará permanentemente esta instancia del modpack."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Desvincular del modpack"
},
"instance.settings.tabs.java": {
"message": "Java y memoria"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Variables de entorno"
},
"instance.settings.tabs.java.hooks": {
"message": "Hooks"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Argumentos de Java"
},
"instance.settings.tabs.java.java-installation": {
"message": "Instalación de Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Memoria asignada"
},
"instance.settings.tabs.window": {
"message": "Ventana"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Opciones personalizadas de ventana"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Pantalla completa"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Inicia el juego en pantalla completa al ejecutarlo (usando options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Altura"
},
"instance.settings.tabs.window.height.description": {
"message": "Altura de la ventana del juego al iniciar."
},
"instance.settings.tabs.window.height.enter": {
"message": "Ingresa la altura..."
},
"instance.settings.tabs.window.width": {
"message": "Ancho"
},
"instance.settings.tabs.window.width.description": {
"message": "Ancho de la ventana del juego al iniciar."
},
"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"
},
"instance.worlds.cant_connect": {
"message": "No se puede conectar al servidor"
},
"instance.worlds.copy_address": {
"message": "Copiar dirección"
},
"instance.worlds.dont_show_on_home": {
"message": "No mostrar en la página de inicio"
},
"instance.worlds.filter.available": {
"message": "Disponible"
},
"instance.worlds.game_already_open": {
"message": "La instancia ya está abierta"
},
"instance.worlds.hardcore": {
"message": "Modo hardcore"
},
"instance.worlds.incompatible_server": {
"message": "El servidor es incompatible"
},
"instance.worlds.no_contact": {
"message": "No se pudo conectar al servidor"
},
"instance.worlds.no_server_quick_play": {
"message": "Solo puedes conectarte directamente a servidores en Minecraft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Solo puedes conectarte directamente a mundos para un jugador en Minecraft 1.20+"
},
"instance.worlds.play_instance": {
"message": "Iniciar instancia"
},
"instance.worlds.type.server": {
"message": "Servidor"
},
"instance.worlds.type.singleplayer": {
"message": "Un jugador"
},
"instance.worlds.view_instance": {
"message": "Ver instancia"
},
"instance.worlds.world_in_use": {
"message": "El mundo ya está en uso"
},
"search.filter.locked.instance": {
"message": "Proporcionado por la instancia"
},
"search.filter.locked.instance-game-version.title": {
"message": "La versión del juego es proporcionada por la instancia"
},
"search.filter.locked.instance-loader.title": {
"message": "El loader es proporcionado por la instancia"
},
"search.filter.locked.instance.sync": {
"message": "Sincronizar con la instancia"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Modo desarrollador activado."
},
"app.settings.downloading": {
"message": "Descargando v{version}"
},
"app.settings.tabs.appearance": {
"message": "Apariencia"
},
"app.settings.tabs.default-instance-options": {
"message": "Opciones predeterminadas de la instancia"
},
"app.settings.tabs.feature-flags": {
"message": "Funciones experimentales"
},
"app.settings.tabs.java-installations": {
"message": "Instalaciones de Java"
},
"app.settings.tabs.privacy": {
"message": "Privacidad"
},
"app.settings.tabs.resource-management": {
"message": "Gestión de recursos"
},
"app.update-toast.body": {
"message": "¡La versión v{version} de Modrinth está lista para instalarse! Actualiza ahora o automáticamente al cerrar la aplicación."
},
"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.metered": {
"message": "¡La versión v{version} de Modrinth ya está disponible! Como estás conectado a una red con límite de datos, no la hemos descargado automáticamente."
},
"app.update-toast.changelog": {
"message": "Registro de cambios"
},
"app.update-toast.download": {
"message": "Descarga ({size})"
},
"app.update-toast.downloading": {
"message": "Descargando..."
},
"app.update-toast.reload": {
"message": "Recarga"
},
"app.update-toast.title": {
"message": "Actualización disponible"
},
"app.update-toast.title.download-complete": {
"message": "Descarga completada"
},
"app.update.complete-toast.text": {
"message": "Haga clic aquí para ver el registro de cambios."
},
"app.update.complete-toast.title": {
"message": "¡La versión {version} se ha instalado correctamente!"
},
"app.update.download-update": {
"message": "Descarga actualización"
},
"app.update.downloading-update": {
"message": "Descargando actualización ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Recarga para instalar la actualización"
},
"friends.action.add-friend": {
"message": "Agrega a un amigo"
},
"friends.action.view-friend-requests": {
"message": "{count} {count, plural, one {petición} other {peticiones}} de amistad"
},
"friends.add-friend.submit": {
"message": "Envía una petición de amistad"
},
"friends.add-friend.title": {
"message": "Agrega a un amigo"
},
"friends.add-friend.username.description": {
"message": "¡Puede ser diferente de su apodo en Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "Escribe su apodo en Modrinth..."
},
"friends.add-friend.username.title": {
"message": "¿Cuál es el apodo de tu amigo en Modrinth?"
},
"friends.add-friends-to-share": {
"message": "<link>Añade amigos</link> para ver a qué están jugando."
},
"friends.friend.cancel-request": {
"message": "Cancelar petición"
},
"friends.friend.remove-friend": {
"message": "Eliminar amigo"
},
"friends.friend.request-sent": {
"message": "Petición de amistad enviada"
},
"friends.friend.view-profile": {
"message": "Ver perfil"
},
"friends.heading": {
"message": "Amigos"
},
"friends.heading.active": {
"message": "Activos"
},
"friends.heading.offline": {
"message": "Desconectados"
},
"friends.heading.online": {
"message": "Conectados"
},
"friends.heading.pending": {
"message": "Pendientes"
},
"friends.no-friends-match": {
"message": "Ningún apodo concuerda con ''{query}''"
},
"friends.search-friends-placeholder": {
"message": "Buscando amigos..."
},
"friends.section.heading": {
"message": "{title}: {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Inicia sesión en una cuenta Modrinth</link> para añadir amigos y ver a qué están jugando."
},
"instance.add-server.add-and-play": {
"message": "Añadir y jugar"
},
"instance.add-server.add-server": {
"message": "Añadir servidor"
},
"instance.add-server.resource-pack.disabled": {
"message": "Desactivado"
},
"instance.add-server.resource-pack.enabled": {
"message": "Activado"
},
"instance.add-server.resource-pack.prompt": {
"message": "Preguntar"
},
"instance.add-server.title": {
"message": "Añadir un servidor"
},
"instance.edit-server.title": {
"message": "Editar servidor"
},
"instance.edit-world.hide-from-home": {
"message": "Ocultar de la página de Inicio"
},
"instance.edit-world.name": {
"message": "Nombre"
},
"instance.edit-world.placeholder-name": {
"message": "Mundo de Minecraft"
},
"instance.edit-world.reset-icon": {
"message": "Resetear icono"
},
"instance.edit-world.title": {
"message": "Editar mundo"
},
"instance.filter.disabled": {
"message": "Desactivar proyectos"
},
"instance.filter.updates-available": {
"message": "Actualizaciones disponibles"
},
"instance.server-modal.address": {
"message": "Dirección IP"
},
"instance.server-modal.name": {
"message": "Nombre"
},
"instance.server-modal.placeholder-name": {
"message": "Servidor de Minecraft"
},
"instance.server-modal.resource-pack": {
"message": "Paquete de recursos"
},
"instance.settings.tabs.general": {
"message": "General"
},
"instance.settings.tabs.general.delete": {
"message": "Eliminar instancia"
},
"instance.settings.tabs.general.delete.button": {
"message": "Eliminar instancia"
},
"instance.settings.tabs.general.delete.description": {
"message": "Elimina permanentemente una instancia de tu dispositivo, incluyendo tus mundos, configuraciones y todo el contenido instalado. Ten cuidado, ya que una vez que elimines una instancia no habrá forma de recuperarla."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Eliminando..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplicar"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "No puedes duplicar mientras se instala."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Duplicar instancia"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Crea una copia de esta instancia, incluyendo mundos, configuraciones, mods, etc."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Editar icono"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Eliminar icono"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Reemplazar icono"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Seleccionar icono"
},
"instance.settings.tabs.general.library-groups": {
"message": "Grupos de librerías"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Crear un nuevo grupo"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Los grupos de librerías te permiten organizar tus instancias en diferentes secciones en tu librería."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Inserta nombre de grupo"
},
"instance.settings.tabs.general.name": {
"message": "Nombre"
},
"instance.settings.tabs.hooks": {
"message": "Hooks de lanzamiento"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Hooks de lanzamiento personalizados"
},
"instance.settings.tabs.hooks.description": {
"message": "Los hooks permiten a los usuarios avanzados ejecutar ciertas funciones del sistema antes y después de lanzar el juego."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Post-salida"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Iniciar tras cerrar el juego."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Introduzca el comando post-salida..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Pre-lanzar"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Se ejecutó antes de iniciar la instancia."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Introducir comando previo al lanzamiento..."
},
"instance.settings.tabs.hooks.title": {
"message": "Hooks de lanzamiento del juego"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": ".."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Introducir comando para el wrapper..."
},
"instance.settings.tabs.installation": {
"message": "Instancia"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} para Minecraft {game_version} ya está instalada"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "La versión vanilla {game_version} ya está instalada"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Cambiar versión"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Instalar"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Instalando"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Buscando versiones del modpack"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Instalando versión nueva"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Instalado actualmente"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Información de debug:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Buscando detalles del modpack"
},
"instance.settings.tabs.installation.game-version": {
"message": "Versión del juego"
},
"instance.settings.tabs.installation.install": {
"message": "Instalar"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Instalación en progreso"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} versión"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "No se puede buscar los detalles del modpack enlazado. Por favor revise su conexión a internet."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} no está disponible para Minecraft {version}. Prueba con otro cargador."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "La instancia está enlazada a un modpack, pero el modpack no se ha podido encontrar en Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Plataforma"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Reinstalar modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Reinstalando modpack"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Reinstalar reiniciará todo el contenido instalado o modificado a lo que el modpack proporcione, quitando cualquier mod o contenido que hayas añadido por encima de la instalación original. Esto puede arreglar actividad inesperada, pero si los mundos dependen del contendio adicional instalado, puede romperlos. "
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "¿Estás seguro de que quieres reinstalar esta instancia?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Reinicia el contenido de la instancia a su estado original, quitando cualquier mod o contenido que hayas añadido por encima del modpack original."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Reinstalar modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Reparar"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Reparando"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Reparando reinstalaciones Minecraft dependencias y buscando corrupciones. Esto podría solucionar problemas si tu juego no se está abriendo debido a errores relacionados con el launcher, pero no solucionará problemas o crashes relacionados con mods instalados."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "¿Reparar instancia?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Reparación en progreso"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Reiniciar a actual"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Mostrar todas las versiones"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "cambiar versión"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "instalar"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "reinstalar"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "reparar"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "No se puede {action} mientras se está instalando."
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "No se puede {action} sin conexión"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "No se puede {action} reparando"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(versión desconocida)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Desvincular instancia"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Si procedes, no podrás re-vincular sin crear una nueva instancia. No recibirás actualizaciones del modpack y se convertira en uno normal."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "¿Estás seguro de que quieres desvincular esta instancia?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "La instancia está vinculada a un modpack, lo que significa que los mods no pueden ser actualizados y no puedes cambiar el mod loader o la versión de Minecraft. Desvincular desconectará permanentemente esta instancia del modpack."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Desvincular del modpack"
},
"instance.settings.tabs.java": {
"message": "Java y memoria"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Variables de entorno"
},
"instance.settings.tabs.java.hooks": {
"message": "Hooks"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Argumentos de Java"
},
"instance.settings.tabs.java.java-installation": {
"message": "Instalación de Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Memoria asignada"
},
"instance.settings.tabs.window": {
"message": "Ventana"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Configuración de ventana personalizada"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Pantalla completa"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Iniciar juego en pantalla completa al iniciarse (usando options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Alto"
},
"instance.settings.tabs.window.height.description": {
"message": "La altura de la ventana del juego cuando se inicia."
},
"instance.settings.tabs.window.height.enter": {
"message": "Introducir alto..."
},
"instance.settings.tabs.window.width": {
"message": "Ancho"
},
"instance.settings.tabs.window.width.description": {
"message": "El ancho de la ventana del juego cuando se inicia."
},
"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"
},
"instance.worlds.cant_connect": {
"message": "No se puede conectar al servidor"
},
"instance.worlds.copy_address": {
"message": "Copiar dirección"
},
"instance.worlds.dont_show_on_home": {
"message": "No mostrar en Inicio"
},
"instance.worlds.filter.available": {
"message": "Disponible"
},
"instance.worlds.game_already_open": {
"message": "La instancia ya está abierta"
},
"instance.worlds.hardcore": {
"message": "Modo hardcore"
},
"instance.worlds.incompatible_server": {
"message": "Servidor es incompatible"
},
"instance.worlds.no_contact": {
"message": "No se pudo contactar con el servidor"
},
"instance.worlds.no_server_quick_play": {
"message": "Solo puedes acceder directamente a los servidores en Minecraft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Solo puedes saltar directamente a los mundos de un jugador en Minecraft 1.20+"
},
"instance.worlds.play_instance": {
"message": "Jugar instancia"
},
"instance.worlds.type.server": {
"message": "Servidor"
},
"instance.worlds.type.singleplayer": {
"message": "Un jugador"
},
"instance.worlds.view_instance": {
"message": "Ver instancia"
},
"instance.worlds.world_in_use": {
"message": "El mundo está en uso"
},
"search.filter.locked.instance": {
"message": "Proporcionado por la instancia"
},
"search.filter.locked.instance-game-version.title": {
"message": "Versión del juego proporciona por la instancia"
},
"search.filter.locked.instance-loader.title": {
"message": "Cargador proporcionado por la instancia"
},
"search.filter.locked.instance.sync": {
"message": "Sincronizar con la instancia"
}
}

View File

@@ -0,0 +1,107 @@
{
"app.settings.developer-mode-enabled": {
"message": "Arendajarežiim sisse lülitatud."
},
"app.settings.tabs.appearance": {
"message": "Välimus"
},
"app.settings.tabs.default-instance-options": {
"message": "Vaikimisi instantsi valikud"
},
"app.settings.tabs.feature-flags": {
"message": "Funktsioonimärgid"
},
"app.settings.tabs.java-installations": {
"message": "Java installatsioonid"
},
"app.settings.tabs.privacy": {
"message": "Privaatsus"
},
"app.settings.tabs.resource-management": {
"message": "Ressursside haldus"
},
"instance.add-server.add-and-play": {
"message": "Lisa ja mängi"
},
"instance.add-server.add-server": {
"message": "Lisa server"
},
"instance.add-server.resource-pack.disabled": {
"message": "Väljas"
},
"instance.add-server.resource-pack.enabled": {
"message": "Sees"
},
"instance.add-server.resource-pack.prompt": {
"message": "Küsi"
},
"instance.add-server.title": {
"message": "Lisa server"
},
"instance.edit-server.title": {
"message": "Muuda server"
},
"instance.edit-world.hide-from-home": {
"message": "Peida koduleheküljelt"
},
"instance.edit-world.name": {
"message": "Nimi"
},
"instance.edit-world.placeholder-name": {
"message": "Minecrafti maailm"
},
"instance.edit-world.reset-icon": {
"message": "Lähtesta ikoon"
},
"instance.edit-world.title": {
"message": "Muuda maailm"
},
"instance.filter.disabled": {
"message": "Suletud projektid"
},
"instance.filter.updates-available": {
"message": "Uuendused on saadaval"
},
"instance.server-modal.address": {
"message": "Aadress"
},
"instance.server-modal.name": {
"message": "Nimi"
},
"instance.server-modal.placeholder-name": {
"message": "Minecrafti server"
},
"instance.server-modal.resource-pack": {
"message": "Ressursipakk"
},
"instance.settings.tabs.general": {
"message": "Üldised"
},
"instance.settings.tabs.general.delete": {
"message": "Kustuta instants"
},
"instance.settings.tabs.general.delete.button": {
"message": "Kustuta instants"
},
"instance.settings.tabs.general.delete.description": {
"message": "Kustutab instantsi seadmest alatiselt, sealhulgas maailmad, konfiguratsioonid ja kogu paigaldatud sisu. Ole ettevaatlik, kuna instantsi kustutamisel ei ole seda enam võimalik taastada."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Kustutab..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Dubleeri"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Pole võimalik dubleerida paigaldamisel."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Dubleeri instants"
},
"instance.settings.tabs.general.name": {
"message": "Nimi"
},
"instance.settings.title": {
"message": "Sätted"
}
}

View File

@@ -0,0 +1,419 @@
{
"app.settings.developer-mode-enabled": {
"message": "حالت برنامه‌نویس روشن شد."
},
"app.settings.tabs.appearance": {
"message": "ظاهر"
},
"app.settings.tabs.default-instance-options": {
"message": "گزینه‌های پیش‌فرض اینستنس (نسخهٔ جدا)"
},
"app.settings.tabs.feature-flags": {
"message": "سوییچ قابلیت‌ها"
},
"app.settings.tabs.java-installations": {
"message": "جاواهای نصب‌شده"
},
"app.settings.tabs.privacy": {
"message": "حریم خصوصی"
},
"app.settings.tabs.resource-management": {
"message": "مدیریت منابع"
},
"instance.add-server.add-and-play": {
"message": "اضافه کردن و پلی دادن"
},
"instance.add-server.add-server": {
"message": "اضافه کردن سرور"
},
"instance.add-server.resource-pack.disabled": {
"message": "غیرفعال"
},
"instance.add-server.resource-pack.enabled": {
"message": "فعال"
},
"instance.add-server.resource-pack.prompt": {
"message": "درخواست از سرور"
},
"instance.add-server.title": {
"message": "اضافه کردن سرور"
},
"instance.edit-server.title": {
"message": "ویرایش سرور"
},
"instance.edit-world.hide-from-home": {
"message": "مخفی کردن از صفحه ی اصلی"
},
"instance.edit-world.name": {
"message": "نام"
},
"instance.edit-world.placeholder-name": {
"message": "جهان ماینکرفت"
},
"instance.edit-world.reset-icon": {
"message": "ریست کردن آیکن"
},
"instance.edit-world.title": {
"message": "ویرایش جهان"
},
"instance.filter.disabled": {
"message": "پروزه های غیر فعال"
},
"instance.filter.updates-available": {
"message": "آپدیت موجوده"
},
"instance.server-modal.address": {
"message": "آدرس"
},
"instance.server-modal.name": {
"message": "نام"
},
"instance.server-modal.placeholder-name": {
"message": "سرور ماینکرفت"
},
"instance.server-modal.resource-pack": {
"message": "رسورس پک"
},
"instance.settings.tabs.general": {
"message": "تنظیمات کلی"
},
"instance.settings.tabs.general.delete": {
"message": "حذف اینستنس (نسخهٔ جدا)"
},
"instance.settings.tabs.general.delete.button": {
"message": "حذف اینستنس (نسخهٔ جدا)"
},
"instance.settings.tabs.general.delete.description": {
"message": "این کار یه اینستنس (نسخهٔ جدا) رو به‌طور کامل از دستگاهت پاک می‌کنه، شامل دنیاها، تنظیمات و همه محتوای نصب‌شده. مراقب باش، چون بعد از حذف، هیچ راهی برای بازیابی‌ش نیست."
},
"instance.settings.tabs.general.deleting.button": {
"message": "در حال حذف..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "دوپلیکیت"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "نمیشه هنگام نصب دوپلیکیت کرد."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "دوپلیکیت کردن اینستنس (نسخهٔ جدا)"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "یه کپی از این اینستنس (نسخهٔ جدا) می‌سازه، شامل دنیاها، تنظیمات، مودها و بقیه چیزا."
},
"instance.settings.tabs.general.edit-icon": {
"message": "ویرایش آیکن"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "حذف آیکن"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "جایگزین آیکن"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "انتخاب آیکن"
},
"instance.settings.tabs.general.library-groups": {
"message": "گروه های کتابخانه"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "ساخت گروه کتابخانه ی جدید"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "گروه‌های کتابخانه به شما امکان می‌دهند اینستنس‌های خود را در بخش‌های مختلف کتابخانه مرتب کنید."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "نام گروه رو بنویس"
},
"instance.settings.tabs.general.name": {
"message": "نام"
},
"instance.settings.tabs.hooks": {
"message": "اجرای پیشرفته"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "شخصی سازی اجرا"
},
"instance.settings.tabs.hooks.description": {
"message": "اجرای پیشرفته به کاربران حرفه‌ای اجازه می‌ده قبل و بعد از اجرای بازی، بعضی کامند های سیستمی رو اجرا کنن."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "پس از خروج"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "پس از بسته شدن بازی اجرا شد."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "کامند بعد خروج رو بنویس..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "قبل از اجرا"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "قبل از اجرا شدن بازی ران میشه."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "کامند قبل اجرا رو بنویس..."
},
"instance.settings.tabs.hooks.title": {
"message": "شخصی سازی اجرای بازی"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "دستور میانجی"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "دستور میانجی برای اجرای ماینکرفت."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "کامند میانجی را وارد کنید..."
},
"instance.settings.tabs.installation": {
"message": "نسخه‌های نصب‌شده"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} برای ماینکرفت {game_version} قبلاً نصب شده"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "وانیلای {game_version} پیشفرض نصب شده"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "تغییر ورژن"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "نصب"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "در حال نصب"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "دریافت نسخه‌های مودپک"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "نصب نسخه ی جدید"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "در حال حاضر نصب‌شده"
},
"instance.settings.tabs.installation.debug-information": {
"message": "اطلاعات دیپاگ کردن:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "دریافت جزئیات مودپک"
},
"instance.settings.tabs.installation.game-version": {
"message": "ورژن بازی"
},
"instance.settings.tabs.installation.install": {
"message": "نصب"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "در حال نصب"
},
"instance.settings.tabs.installation.loader-version": {
"message": "ورژن {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "ماینکرفت {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "نمی‌تونیم جزئیات مودپک لینک‌شده رو بگیریم. لطفاً اتصال اینترنتت رو چک کن."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} برای ماینکرفت {version} در دسترس نیست. یک مود لودر دیگه رو انتخاب کن."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "این اینستنس (نسخهٔ جدا) به یه مودپک لینک شده، ولی مودپک تو Modrinth پیدا نشد."
},
"instance.settings.tabs.installation.platform": {
"message": "پلتفورم"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "نصب مجدد مودپک"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "در حال نصب مجدد مودپک"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "نصب دوباره همه محتواهای نصب‌شده یا تغییر داده‌شده رو برمی‌گردونه به همون چیزی که مودپک ارائه کرده، و هر مود یا محتوایی که خودت اضافه کرده باشی حذف می‌شه. این ممکنه مشکلات غیرمنتظره‌ای که تو اینستنس (نسخهٔ جدا) پیش اومده رو درست کنه، ولی اگه دنیاهای بازی‌ت به محتوای اضافه وابسته باشن، ممکنه اون دنیاها خراب بشن."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "مطمئنی می‌خوای این اینستنس (نسخهٔ جدا) رو دوباره نصب کنی؟"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "محتوای این اینستنس (نسخهٔ جدا) رو برمی‌گردونه به حالت اصلی، و هر مود یا محتوایی که خودت روی مودپک اصلی اضافه کرده باشی حذف می‌شه."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "نصب مجدد مودپک"
},
"instance.settings.tabs.installation.repair.button": {
"message": "ترمیم کردن"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "در حال ترمیم کردن"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "ترمیم کردن، وابستگی‌های ماینکرفت رو دوباره نصب می‌کنه و سالم بودنشون رو بررسی می‌کنه. این ممکنه مشکلاتی که باعث اجرا نشدن بازی رو حل کنه، ولی مشکلات یا کرش‌های مربوط به مودهای نصب‌شده رو درست نمی‌کنه."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "ترمیم کردن اینستنس (نسخهٔ جدا)؟"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "در حال ترمیم کردن"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "ریست کردن به حالت فعلی"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "نشان دادن تمام ورژن ها"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "تغییر دادن ورژن"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "نصب کردن"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "نصب کردن مجدد"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "ترمیم کردن"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "{action} هنگام نصب غیر ممکنه"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "{action} وقتی آفلاینی غیر ممکنه"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "{action} وقتی داری ترمیم میکنی غیر ممکنه"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(ورژن ناشناس)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "آن لینک کردن اینستنس (نسخهٔ جدا)"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "اگه انجامش بدی، نمی‌تونی دوباره لینکش کنی مگر این‌که یه اینستنس (نسخهٔ جدا) جدید بسازی. دیگه آپدیت‌های مودپک رو هم دریافت نمی‌کنی و به یه نسخهٔ معمولی تبدیل می‌شه."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "مطمئنی می‌خوای این اینستنس (نسخهٔ جدا) رو آن لینک کنی؟"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "این اینستنس (نسخهٔ جدا) به یه مودپک وصل شده، یعنی مودها نمی‌تونن آپدیت بشن و نمی‌تونی مود لودر یا ورژن ماینکرفت رو تغییر بدی. آن لینک کردن باعث می‌شه این اینستنس برای همیشه از مودپک جدا بشه."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "آن لینک کردن از مودپک"
},
"instance.settings.tabs.java": {
"message": "جاوا و مقدار رم"
},
"instance.settings.tabs.java.environment-variables": {
"message": "متغیرهای محیطی"
},
"instance.settings.tabs.java.hooks": {
"message": "اجرای پیشرفته"
},
"instance.settings.tabs.java.java-arguments": {
"message": "پارامتر های جاوا"
},
"instance.settings.tabs.java.java-installation": {
"message": "جاوا های نصب شده"
},
"instance.settings.tabs.java.java-memory": {
"message": "رم گرفته شده"
},
"instance.settings.tabs.window": {
"message": "پنجره"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "شخصی سازی پنجره"
},
"instance.settings.tabs.window.fullscreen": {
"message": "تمام صفحه"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "بازی وقتی اجرا می‌شه به‌صورت تمام‌صفحه باز بشه (با استفاده از options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "ارتفاع"
},
"instance.settings.tabs.window.height.description": {
"message": "ارتفاع پنجره‌ی بازی وقتی اجرا می‌شه."
},
"instance.settings.tabs.window.height.enter": {
"message": "ارتفاع رو وارد کن..."
},
"instance.settings.tabs.window.width": {
"message": "عرض"
},
"instance.settings.tabs.window.width.description": {
"message": "عرض پنجره ی بازی هنگام اجرا شدن."
},
"instance.settings.tabs.window.width.enter": {
"message": "عرض رو وارد کن..."
},
"instance.settings.title": {
"message": "تنظیمات"
},
"instance.worlds.a_minecraft_server": {
"message": "سرور ماینکرفت"
},
"instance.worlds.cant_connect": {
"message": "نمیشه به سرور متصل شد"
},
"instance.worlds.copy_address": {
"message": "کپی کردن آدرس"
},
"instance.worlds.dont_show_on_home": {
"message": "نشون ندادن روی صفحه ی اصلی"
},
"instance.worlds.filter.available": {
"message": "در درسترس"
},
"instance.worlds.game_already_open": {
"message": "این اینستنس (نسخهٔ جدا) در حال اجراست"
},
"instance.worlds.hardcore": {
"message": "حالت هاردکور"
},
"instance.worlds.incompatible_server": {
"message": "سرور ناسازگاره"
},
"instance.worlds.no_contact": {
"message": "سرور در دسترس نیست"
},
"instance.worlds.no_server_quick_play": {
"message": "می‌تونی فقط از نسخه‌ی ماینکرفت آلفای 1.0.5 به بعد مستقیم وارد سرورها بشی"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "می‌تونی فقط از نسخه‌ی ماینکرفت 1.20 به بعد مستقیم وارد جهان ماینکرفت بشی"
},
"instance.worlds.play_instance": {
"message": "اجرای اینستنس (نسخهٔ جدا)"
},
"instance.worlds.type.server": {
"message": "سرور"
},
"instance.worlds.type.singleplayer": {
"message": "سینگل پلیر"
},
"instance.worlds.view_instance": {
"message": "دیدن اینستنس (نسخهٔ جدا)"
},
"instance.worlds.world_in_use": {
"message": "جهان در حال استفادست"
},
"search.filter.locked.instance": {
"message": "ارائه‌شده توسط اینستنس (نسخهٔ جدا)"
},
"search.filter.locked.instance-game-version.title": {
"message": "ورژن بازی توسط اینستنس (نسخهٔ جدا) ارائه شده"
},
"search.filter.locked.instance-loader.title": {
"message": "لودر توسط اینستنس (نسخهٔ جدا) ارائه شده"
},
"search.filter.locked.instance.sync": {
"message": "سینک کردن با اینستنس"
}
}

View File

@@ -0,0 +1,419 @@
{
"app.settings.developer-mode-enabled": {
"message": "Kehittäjätila käytössä."
},
"app.settings.tabs.appearance": {
"message": "Ulkonäkö"
},
"app.settings.tabs.default-instance-options": {
"message": "Oletusinstanssin asetukset"
},
"app.settings.tabs.feature-flags": {
"message": "Ominaisuuskytkimet"
},
"app.settings.tabs.java-installations": {
"message": "Java asennukset"
},
"app.settings.tabs.privacy": {
"message": "Yksityisyys"
},
"app.settings.tabs.resource-management": {
"message": "Resurssien hallinta"
},
"instance.add-server.add-and-play": {
"message": "Lisää ja pelaa"
},
"instance.add-server.add-server": {
"message": "Lisää palvelin"
},
"instance.add-server.resource-pack.disabled": {
"message": "Poistettu käytöstä"
},
"instance.add-server.resource-pack.enabled": {
"message": "Päällä"
},
"instance.add-server.resource-pack.prompt": {
"message": "Kehote"
},
"instance.add-server.title": {
"message": "Lisää palvelin"
},
"instance.edit-server.title": {
"message": "Muokkaa palvelinta"
},
"instance.edit-world.hide-from-home": {
"message": "Piilota kotisivulta"
},
"instance.edit-world.name": {
"message": "Nimi"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft maailma"
},
"instance.edit-world.reset-icon": {
"message": "Nollaa kuvake"
},
"instance.edit-world.title": {
"message": "Muokkaa maailmaa"
},
"instance.filter.disabled": {
"message": "Käytöstä poistetut projektit"
},
"instance.filter.updates-available": {
"message": "Päivityksia saatavilla"
},
"instance.server-modal.address": {
"message": "Osoite"
},
"instance.server-modal.name": {
"message": "Nimi"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft palvelin"
},
"instance.server-modal.resource-pack": {
"message": "Resurssipakkaus"
},
"instance.settings.tabs.general": {
"message": "Yleiset"
},
"instance.settings.tabs.general.delete": {
"message": "Poista instanssi"
},
"instance.settings.tabs.general.delete.button": {
"message": "Poista instanssi"
},
"instance.settings.tabs.general.delete.description": {
"message": "Pysyvästi poistaa instanssin laitteeltasi sisältäen sinun maailmasi, asetuksesi ja muun asennetun sisällön. Ole varovainen, koska instanssia ei pysty palauttaa poistamisen jälkeen."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Poistetaan..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Kopioi"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Ei pystytä monistamaan asennettaessa."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Monista instanssi"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Luo kopion tästä instanssista sekä kaikista sen maailmoista, asetuksista, modeista yms."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Muokkaa kuvaketta"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Poista kuvake"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Korvaa kuvake"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Valitse kuvake"
},
"instance.settings.tabs.general.library-groups": {
"message": "Kirjaston ryhmät"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Luo uusi ryhmä"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Kirjaston ryhmät sallivat sinun järjestää instanssisi eri osioihin kirjastossasi."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Syötä ryhmän nimi"
},
"instance.settings.tabs.general.name": {
"message": "Nimi"
},
"instance.settings.tabs.hooks": {
"message": "Aloitustoiminnot"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Mukautetut aloitustoiminnot"
},
"instance.settings.tabs.hooks.description": {
"message": "Koukut antavat edistyneiden käyttäjien suorittaa tiettyjä järjestelmä komentoja pelin käynnistystä ennen ja sen jälkeen."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Sulkemisen jälkeen"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Suoritetaan pelin sulkeutumisen jälkeen."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Syötä sulkemisen jälkeinen komento..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Ennen käynnistystä"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Suoritetaan ennen instanssin käynnistystä."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Syötä ennen käynnistystä komento..."
},
"instance.settings.tabs.hooks.title": {
"message": "Pelin laukaisu koukut"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Wrapper komento Minecraftin käynnistämiseksi."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Syötä wrapper komento..."
},
"instance.settings.tabs.installation": {
"message": "Asennus"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} Minecraft versiolle {game_version} on jo asennettu"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} on jo asennettu"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Vaihda versiota"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Asenna"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Asennetaan"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Noudetaan modipaketin versioita"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Asennetaan uutta versiota"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Asennettuna"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Virheenkorjaus informaatio:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Noudetaan modipaketin tietoja"
},
"instance.settings.tabs.installation.game-version": {
"message": "Peli versio"
},
"instance.settings.tabs.installation.install": {
"message": "Asenna"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Asennus käynnissä"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} versio"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Ei voida noutaa linkatun modipaketin tietoja. Tarkista internet yhteytesi."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} ei ole saatavilla Minecraft versiolle {version}. Kokeile toista modi lataajaa."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Tämä instanssi on linkitetty modipakettiin, mutta modipakettia ei löydetty Modrinthista."
},
"instance.settings.tabs.installation.platform": {
"message": "Alusta"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Asenna modipaketti uudelleen"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Asennetaan modipakettia uudelleen"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Uudelleen asentaminen palauttaa kaiken asennetun tai muokatun sisällön siihen muotoon missä se on modipaketissa poistaen kaikki modit ja muun sisällön mitä olet lisännyt alkuperäisen asennuksen päälle. Tämä saattaa korjata odottamatonta käytöstä mikäli instanssia on muokattu mutta jos maailmasi ovat nyt riippuvaisia lisätystä sisällöstä se saattaa rikkoa olemassa olevia maailmoja."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Haluatko varmasti asentaa tämän instanssin uudelleen?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Palauttaa instanssin sisällön alkuperäiseen muotoonsa poistaen kaikki modit tai muun sisällön mitä olet lisännyt alkuperäisen modipaketin päälle."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Asenna modipaketti uudelleen"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Korjaa"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Korjataan"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Korjaaminen uudelleen asentaa Minecraftin riippuvuuksia ja tarkistaa korruptiota varten. Tämä saattaa ratkaista ongelmia jos pelisi ei käynnisty launcheriin liittyvien virheiden takia mutta ei ratkaise ongelmia tai kaatumisia liittyen ladattuihin modeihin."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Korjaa instanssi?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Korjaus käynnissä"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Palauta nykyiseen"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Näytä kaikki versiot"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "vaihda versiota"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "asenna"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "asenna uudelleen"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "korjaa"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Et voi {action} asentaessa"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Toimintoa {action} ei voida suorittaa offline tilassa"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Et voi {action} korjatessa"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(tuntematon versio)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Poista instanssin linkitys"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Jos jatkat et voi uudelleen linkata sitä ilman että luot täysin uuden instanssin. Et vastaanota enää modipaketti päivityksiä ja siitä tulee normaali."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Oletko varma että haluat poistaa tämän instanssin linkityksen?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Tämä instanssi on linkitetty modipakettin joka tarkoittaa että modeja ei voida päivittää etkä voi vaihtaa lataaja tai Minecraft versiota. Linkityksen poistaminen katkaisee pysyvästi yhteyden instanssin ja modipaketin välillä."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Poista linkitys modipakettiin"
},
"instance.settings.tabs.java": {
"message": "Java ja muisti"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Ympäristö muuttujat"
},
"instance.settings.tabs.java.hooks": {
"message": "Koukut"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java argumentit"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java asennus"
},
"instance.settings.tabs.java.java-memory": {
"message": "Muisti allokoitu"
},
"instance.settings.tabs.window": {
"message": "Ikkuna"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Mukautetut ikkuna asetukset"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Koko näyttö"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Saa peli käynnistymään koko näytön tilassa kun käynnistetty (käyttäen options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Korkeus"
},
"instance.settings.tabs.window.height.description": {
"message": "Peli ikkunan korkeus käynnistäessä."
},
"instance.settings.tabs.window.height.enter": {
"message": "Syötä korkeus..."
},
"instance.settings.tabs.window.width": {
"message": "Leveys"
},
"instance.settings.tabs.window.width.description": {
"message": "Peli ikkunan leveys käynnistäessä."
},
"instance.settings.tabs.window.width.enter": {
"message": "Syötä leveys..."
},
"instance.settings.title": {
"message": "Asetukset"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft palvelin"
},
"instance.worlds.cant_connect": {
"message": "Palvelimeen ei voida yhdistää"
},
"instance.worlds.copy_address": {
"message": "Kopioi osoite"
},
"instance.worlds.dont_show_on_home": {
"message": "Älä näytä koti näkymässä"
},
"instance.worlds.filter.available": {
"message": "Saatavilla"
},
"instance.worlds.game_already_open": {
"message": "Instanssi on jo avattu"
},
"instance.worlds.hardcore": {
"message": "Kovanaama tila"
},
"instance.worlds.incompatible_server": {
"message": "Palvelin on yhteensopimaton"
},
"instance.worlds.no_contact": {
"message": "Palvelimeen ei saatu yhteyttä"
},
"instance.worlds.no_server_quick_play": {
"message": "Voit hypätä suoraan palvelimille vain versioilla Minecraft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Voit hypätä suoraan yksinpeli maailmoihin vain versioilla Minecraft 1.20+"
},
"instance.worlds.play_instance": {
"message": "Pelaa instanssia"
},
"instance.worlds.type.server": {
"message": "Palvelin"
},
"instance.worlds.type.singleplayer": {
"message": "Yksinpeli"
},
"instance.worlds.view_instance": {
"message": "Näytä instanssi"
},
"instance.worlds.world_in_use": {
"message": "Maailma on käytössä"
},
"search.filter.locked.instance": {
"message": "Annettu instanssin toimesta"
},
"search.filter.locked.instance-game-version.title": {
"message": "Peli version antaa instanssi"
},
"search.filter.locked.instance-loader.title": {
"message": "Lataajan antaa instanssi"
},
"search.filter.locked.instance.sync": {
"message": "Synkkaa instanssin kanssa"
}
}

View File

@@ -0,0 +1,473 @@
{
"app.settings.developer-mode-enabled": {
"message": "Nakabukas ang moda ng nagdidibelop."
},
"app.settings.downloading": {
"message": "Dina-download ang v{version}"
},
"app.settings.tabs.appearance": {
"message": "Itsura"
},
"app.settings.tabs.default-instance-options": {
"message": "Mga pagpipilian sa default na instansiya"
},
"app.settings.tabs.feature-flags": {
"message": "Mga feature flag"
},
"app.settings.tabs.java-installations": {
"message": "Mga instalasyon ng Java"
},
"app.settings.tabs.privacy": {
"message": "Pribasiya"
},
"app.settings.tabs.resource-management": {
"message": "Pamamahala ng resource"
},
"app.update-toast.body": {
"message": "Ang Modrinth App v{version} ay handa nang ma-install. Mag-reload upang ma-update ngayon, o awtomatiko pagsara ng Modrinth App."
},
"app.update-toast.body.download-complete": {
"message": "Tapos nang ma-download ang Modrinth App v{version}. Mag-reload upang ma-update ngayon, o awtomatiko pagsara ng Modrinth App."
},
"app.update-toast.body.metered": {
"message": "Magagamit na ngayon ang Modrinth App v{version}! Hindi namin dinanload kaagad dahil naka-metro ang inyong network."
},
"app.update-toast.changelog": {
"message": "Changelog"
},
"app.update-toast.download": {
"message": "I-download ({size})"
},
"app.update-toast.downloading": {
"message": "Nagda-download..."
},
"app.update-toast.reload": {
"message": "Mag-reload"
},
"app.update-toast.title": {
"message": "May bagong update"
},
"app.update-toast.title.download-complete": {
"message": "Nakumpleto ang pagdownload"
},
"app.update.complete-toast.text": {
"message": "Magpindot rito upang matingnan ang changelog."
},
"app.update.complete-toast.title": {
"message": "Tagumpay na na-install ang bersiyong {version}!"
},
"app.update.download-update": {
"message": "I-download ang update"
},
"app.update.downloading-update": {
"message": "Nagdadownload ng update ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Handang ma-install ang update"
},
"friends.action.add-friend": {
"message": "Magdagdag ng kaibigan"
},
"friends.action.view-friend-requests": {
"message": "{count, plural, one {{count}} other {{count} na}} hiling na makipagkaibigan"
},
"friends.add-friend.submit": {
"message": "Magpadala ng hiling na makipagkaibigan"
},
"friends.add-friend.title": {
"message": "Pagdaragdag ng kaibigan"
},
"friends.add-friend.username.description": {
"message": "Maaaraing hindi pareho sa kanilang pangalan sa Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "Ilagay ang username sa Modrinth..."
},
"friends.add-friend.username.title": {
"message": "Ano ang pangalan ng iyong kaibigan sa Modrinth?"
},
"friends.add-friends-to-share": {
"message": "<link>Magdagdag ng mga kaibigan</link> upang makita ang kanilang nilalaro!"
},
"friends.friend.cancel-request": {
"message": "Kanselahin ang hiling"
},
"friends.friend.remove-friend": {
"message": "Tanggalin ang kaibing"
},
"friends.friend.request-sent": {
"message": "Ipinadala na ang hiling na makipagkaibigan"
},
"friends.friend.view-profile": {
"message": "Tingnan ang profile"
},
"friends.heading": {
"message": "Mga kaibigan"
},
"friends.heading.active": {
"message": "Aktibo"
},
"friends.heading.offline": {
"message": "Offline"
},
"friends.heading.online": {
"message": "Online"
},
"friends.heading.pending": {
"message": "Nakabinbin"
},
"friends.no-friends-match": {
"message": "Walang kaibigang tumugma sa \"{query}\""
},
"friends.search-friends-placeholder": {
"message": "Hanapin ang mga kaibigan..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Mag-sign-in sa Modrinth account</link> upang maidagdag ang mga kaibigan at malaman ang kanilang nilalaro!"
},
"instance.add-server.add-and-play": {
"message": "Idagdag at laruin"
},
"instance.add-server.add-server": {
"message": "Idagdag ang server"
},
"instance.add-server.resource-pack.disabled": {
"message": "Hindi pinahihintulotan"
},
"instance.add-server.resource-pack.enabled": {
"message": "Pinahihintulotan"
},
"instance.add-server.resource-pack.prompt": {
"message": "Magpahintulot"
},
"instance.add-server.title": {
"message": "Magdagdag ng server"
},
"instance.edit-server.title": {
"message": "Baguhin ang server"
},
"instance.edit-world.hide-from-home": {
"message": "Huwag ipakita sa Home na pahina"
},
"instance.edit-world.name": {
"message": "Pangalan"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft na Mundo"
},
"instance.edit-world.reset-icon": {
"message": "I-reset ang ikono"
},
"instance.edit-world.title": {
"message": "Baguhin ang mundo"
},
"instance.filter.disabled": {
"message": "Mga hindi pinapagang proyekto"
},
"instance.filter.updates-available": {
"message": "May bagong mga update"
},
"instance.server-modal.address": {
"message": "Adres"
},
"instance.server-modal.name": {
"message": "Pangalan"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft Server"
},
"instance.server-modal.resource-pack": {
"message": "Resource pack"
},
"instance.settings.tabs.general": {
"message": "General"
},
"instance.settings.tabs.general.delete": {
"message": "I-delete ang instansiya"
},
"instance.settings.tabs.general.delete.button": {
"message": "I-delete ang instansiya"
},
"instance.settings.tabs.general.delete.description": {
"message": "Permanenteng matatanggal ang instansiya sa iyong device, kasali na ang iyong mga mundo, konpigurasyon, at lahat ng nakainstall na kontento. Mag-ingat, kapag magtanggal ka ng instansiya ay hindi na ito mababawi."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Nagde-delete..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "I-duplicate"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Hindi makaka-duplicate habang nag-i-install."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "I-duplicate ang instansiya"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Gagawan ng kopya ng instansiyang ito, kasali na ang mga mundo, konpigurasyon, mods, at iba pa."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Baguhin ang ikono"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Tanggalin ang ikono"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Palitan ang ikono"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Pumili ng ikono"
},
"instance.settings.tabs.general.library-groups": {
"message": "Mga grupo ng librerya"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Gumawa ng bagong grupo"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Binibigyan ng mga grupo ng librerya na iyong maayos ang iyong mga instansiya sa iba't-ibang pangkat in iyong librerya."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Ilagay ang pangalan ng grupo"
},
"instance.settings.tabs.general.name": {
"message": "Pangalan"
},
"instance.settings.tabs.hooks": {
"message": "Mga launch hook"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Mga custom na launch hook"
},
"instance.settings.tabs.hooks.description": {
"message": "Binibigyan-daan ng mga hook ang mga ekspertong user na makapagtakbo ng mga system command bago at pagkatapos ma-launch ang laro."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Post-exist"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Ipapatakbo pagkatapos magsara ang laro."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Ilagay ang post-exit command..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Pre-launch"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Ipapatakbo bago mai-launch ang instansiya."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Ilagay ang pre-launch command..."
},
"instance.settings.tabs.hooks.title": {
"message": "Mga launch hook ng laro"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Wrapper command sa pag-launch ng Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Ilagay ang wrapper command..."
},
"instance.settings.tabs.installation": {
"message": "Instalasyon"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "Naka-install naman ang {platform} {version} para sa Minecraft {game_version}"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Naka-install naman ang Vanilla {game_version}"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Palitan ang bersiyon"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "I-install"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Ini-install"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Nagfe-fetch ng mga bersiyon ng modpack"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Ini-install ang bagong bersiyon"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Kasalukuyang naka-install"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Impormasyon sa pagdebug:"
},
"instance.settings.tabs.installation.game-version": {
"message": "Bersiyon ng laro"
},
"instance.settings.tabs.installation.install": {
"message": "I-install"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Nag-i-install ngayon"
},
"instance.settings.tabs.installation.loader-version": {
"message": "Bersiyon ng {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "Hindi magagamit ang {loader} sa Minecraft {version}. Sumubok ng ibang mod loader."
},
"instance.settings.tabs.installation.platform": {
"message": "Plataporma"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "I-reinstall ang modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Ini-re-reinstall ang modpack"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Ang pagrere-install ay maaaring mare-reset ang lahat ng na-install o binago na kontento sa kung anong ibibigay ng modpack, tatanggalin ang mga mods o kontentong idinagdag mo lalo na ang mga orihinal na modpack. Maaari nitong masiayos ang mga hindi inaasahang pag-uugali kung may pagbabagong naganap sa instansiya, ngunit kung dumedepende na ang iyong mundo sa karagdagang kontento, maaari nitong masira ang mga umiiral na mundo."
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "I-reset ang mga kontento ng instansiya sa orihinal niyang estado, tatanggalin ang mga mods o kontentong idinagdag mo lalo na ang mga orihinal na modpack."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "I-reinstall ang modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Ayusin"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Inaayos"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Sa pagre-repair, mare-reinstall ang mga dependency ng Minecraft at maghahanap ng mga kurapsiyon. Maaaring maresolbe nito ang mga isyu kung hindi malu-launch ang laro dahil sa mga launcher-related error, ngunit hindi nito mareresolbe ang mga isyu o pag-crash na dulot nga mga na-install na mod."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Ayusin ang instansiya?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Inaayos ngayon"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Sa kasalukuyan i-reset"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Ipakita ang lahat ng bersiyon"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "palitan ang bersiyon"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "i-install"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "i-reinstall"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "ayusin"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Hindi makaka-{action} habang nag-i-install"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Hindi makaka-{action} habang nasa offline"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Hindi makaka-{action} habang nag-aayos"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(hindi kilalang bersiyon)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "I-unlink sa instansiya"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Kapag ipagpatuloy mo, hindi mo na itong mai-link muli ng hindi gagawa ng bagong instansiya. Hindi ka makakatanggap ng mga update ng modpack at magiging normal na itong."
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Ang instansiyang ito ay naka-link sa isang modpack, ibig sabihin ang mga mod ay hindi mai-update at hindi mo mapapalitan ang mod loader o ang bersiyon ng Minecraft."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "I-unlink sa modpack"
},
"instance.settings.tabs.java": {
"message": "Java at memorya"
},
"instance.settings.tabs.java.hooks": {
"message": "Mga hook"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Mga java argument"
},
"instance.settings.tabs.java.java-installation": {
"message": "Instalasyon ng Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Memoryang inilaan"
},
"instance.settings.tabs.window": {
"message": "Window"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Mga setting sa custom na window"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Fullscreen"
},
"instance.settings.tabs.window.height": {
"message": "Taas"
},
"instance.settings.tabs.window.height.enter": {
"message": "Ilagay ang taas..."
},
"instance.settings.tabs.window.width": {
"message": "Lapad"
},
"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"
},
"instance.worlds.copy_address": {
"message": "Kopyahin ang adres"
},
"instance.worlds.dont_show_on_home": {
"message": "Huwag ipakita sa Home"
},
"instance.worlds.filter.available": {
"message": "Magagamit"
},
"instance.worlds.hardcore": {
"message": "Modong eksperto"
},
"instance.worlds.play_instance": {
"message": "Laruin ang instansiya"
},
"instance.worlds.type.server": {
"message": "Server"
},
"instance.worlds.type.singleplayer": {
"message": "Pang-isahang laro"
},
"instance.worlds.view_instance": {
"message": "Tingnan ang instansiya"
},
"instance.worlds.world_in_use": {
"message": "Ginagamit ang mundo"
},
"search.filter.locked.instance.sync": {
"message": "Maki-sync sa instansiya"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Mode développeur activé."
},
"app.settings.downloading": {
"message": "Téléchargement de la version {version}"
},
"app.settings.tabs.appearance": {
"message": "Apparence"
},
"app.settings.tabs.default-instance-options": {
"message": "Options dinstance par défaut"
},
"app.settings.tabs.feature-flags": {
"message": "Menu de fonctionnalité"
},
"app.settings.tabs.java-installations": {
"message": "Installations de Java"
},
"app.settings.tabs.privacy": {
"message": "Confidentialité"
},
"app.settings.tabs.resource-management": {
"message": "Gestion des ressources"
},
"app.update-toast.body": {
"message": "L'application Modrinth v{version} est prêtes à être installé ! Relancez l'application pour faire la mise à jour maintenant ou la mise à jour se fera automatiquement lorsque vous fermerez l'application Modrinth."
},
"app.update-toast.body.download-complete": {
"message": "L'application Modrinth v{version} a finis d'être téléchargé ! Relancez l'application pour faire la mise à jour maintenant ou la mise à jour se fera automatiquement lorsque vous fermerez l'application Modrinth."
},
"app.update-toast.body.metered": {
"message": "L'application Modrinth v{version} est disponible dès maintenant ! Lorsque vous êtes sur un réseau limité ou en donnée mobile, nous ne téléchargerons pas les mises à jour automatiquement."
},
"app.update-toast.changelog": {
"message": "Notes de changement"
},
"app.update-toast.download": {
"message": "Télécharger ({size})"
},
"app.update-toast.downloading": {
"message": "Téléchargement..."
},
"app.update-toast.reload": {
"message": "Rechargement"
},
"app.update-toast.title": {
"message": "Mise à jour disponible"
},
"app.update-toast.title.download-complete": {
"message": "Téléchargement terminé"
},
"app.update.complete-toast.text": {
"message": "Cliquez ici pour voir les changements récents."
},
"app.update.complete-toast.title": {
"message": "La version {version} a été téléchargée avec succès !"
},
"app.update.download-update": {
"message": "Télécharger la mise à jour"
},
"app.update.downloading-update": {
"message": "Téléchargement de la mise à jour ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Relancez l'application pour installer la mise à jour"
},
"friends.action.add-friend": {
"message": "Ajouter un ami"
},
"friends.action.view-friend-requests": {
"message": "{count} {count, plural,one {demande}other {demandes}} d'ami"
},
"friends.add-friend.submit": {
"message": "Envoyer une demande d'ami"
},
"friends.add-friend.title": {
"message": "Ajouter un ami"
},
"friends.add-friend.username.description": {
"message": "Ça peut être différent de son pseudo Minecraft !"
},
"friends.add-friend.username.placeholder": {
"message": "Entrez un pseudo Modrinth..."
},
"friends.add-friend.username.title": {
"message": "Quel est le pseudo Modrinth de votre ami ?"
},
"friends.add-friends-to-share": {
"message": "<link>Ajouter des amis</link> pour voir à quoi ils jouent !"
},
"friends.friend.cancel-request": {
"message": "Annuler la demande"
},
"friends.friend.remove-friend": {
"message": "Supprimer l'ami"
},
"friends.friend.request-sent": {
"message": "La demande d'ami a été envoyé"
},
"friends.friend.view-profile": {
"message": "Voir le profile"
},
"friends.heading": {
"message": "Amis"
},
"friends.heading.active": {
"message": "Actif"
},
"friends.heading.offline": {
"message": "Hors ligne"
},
"friends.heading.online": {
"message": "En ligne"
},
"friends.heading.pending": {
"message": "En attente"
},
"friends.no-friends-match": {
"message": "Aucuns amis ne correspondent à \"{query}\""
},
"friends.search-friends-placeholder": {
"message": "Chercher des amis..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Créer un compte Modrinth</link> pour ajouter des amis et voir à quoi ils jouent !"
},
"instance.add-server.add-and-play": {
"message": "Ajouter et jouer"
},
"instance.add-server.add-server": {
"message": "Ajouter le serveur"
},
"instance.add-server.resource-pack.disabled": {
"message": "Désactivé"
},
"instance.add-server.resource-pack.enabled": {
"message": "Activé"
},
"instance.add-server.resource-pack.prompt": {
"message": "Demander"
},
"instance.add-server.title": {
"message": "Ajouter un serveur"
},
"instance.edit-server.title": {
"message": "Modifier le serveur"
},
"instance.edit-world.hide-from-home": {
"message": "Cacher sur la page daccueil"
},
"instance.edit-world.name": {
"message": "Nom"
},
"instance.edit-world.placeholder-name": {
"message": "Monde Minecraft"
},
"instance.edit-world.reset-icon": {
"message": "Réinitialiser l'icône"
},
"instance.edit-world.title": {
"message": "Modifier le monde"
},
"instance.filter.disabled": {
"message": "Projets désactivés"
},
"instance.filter.updates-available": {
"message": "Mises à jour disponibles"
},
"instance.server-modal.address": {
"message": "Adresse"
},
"instance.server-modal.name": {
"message": "Nom"
},
"instance.server-modal.placeholder-name": {
"message": "Serveur Minecraft"
},
"instance.server-modal.resource-pack": {
"message": "Pack de ressources"
},
"instance.settings.tabs.general": {
"message": "Général"
},
"instance.settings.tabs.general.delete": {
"message": "Supprimer l'instance"
},
"instance.settings.tabs.general.delete.button": {
"message": "Supprimer l'instance"
},
"instance.settings.tabs.general.delete.description": {
"message": "Supprime définitivement une instance de votre appareil, y compris vos mondes, vos paramètres et tout le contenu installé. Attention, une fois supprimée, il est impossible de la récupérer."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Suppression..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Dupliquer"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Impossible de dupliquer pendant l'installation."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Dupliquer l'instance"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Crée une copie de cette instance, y compris les mondes, paramètres, mods etc."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Éditer l'icône"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Supprimer l'icône"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Remplacer l'icône"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Sélectionner l'icône"
},
"instance.settings.tabs.general.library-groups": {
"message": "Groupes de la bibliothèque"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Créer un nouveau groupe"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Les groupes vous permettent d'organiser vos instances dans différentes sections de votre bibliothèque."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Saisir le nom du groupe"
},
"instance.settings.tabs.general.name": {
"message": "Nom"
},
"instance.settings.tabs.hooks": {
"message": "Crochets de lancement"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Crochets de lancement custom"
},
"instance.settings.tabs.hooks.description": {
"message": "Les crochets permettent aux usagers avancés d'exécuter certaines commandes systèmes avant et après le lancement du jeu."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Post-fermeture"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Exécuté après fermeture."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Entrer commande de post-fermeture..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Pré-lancement"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Exécuté avant lancement."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Entrer commande de pré-lancement..."
},
"instance.settings.tabs.hooks.title": {
"message": "Crochets de lancement"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Commande wrapper pour lancer Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Entrer commande wrapper..."
},
"instance.settings.tabs.installation": {
"message": "Installation"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} pour Minecraft {game_version} est déjà installé"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} est déjà installé"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Changer de version"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Installer"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Installation"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Récupération des versions de modpack"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Installation d'une nouvelle version"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Actuellement installé"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Informations de débogage :"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Récupération des détails de modpack"
},
"instance.settings.tabs.installation.game-version": {
"message": "Version du jeu"
},
"instance.settings.tabs.installation.install": {
"message": "Installer"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Installation en cours"
},
"instance.settings.tabs.installation.loader-version": {
"message": "Version de {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Impossible de récupérer les détails du modpack lié. Veuillez vérifier votre connexion Internet."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} n'est pas disponible pour Minecraft {version}. Essayez avec un autre chargeur de mods."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Cette instance est liée à un modpack, mais le modpack n'a pas pu être trouvé sur Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Plateforme"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Réinstaller le modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Réinstallation du modpack"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "La réinstallation réinitialisera tout le contenu installé ou modifié à celui fourni par le modpack, supprimant ainsi tous les mods ou contenus ajoutés à l'installation d'origine. Cela peut corriger un comportement inattendu si des modifications ont été apportées à l'instance, mais si vos mondes dépendent désormais de contenu supplémentaire installé, cela peut endommager les mondes existants."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Êtes-vous sûr de vouloir réinstaller cette instance ?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Réinitialise le contenu de l'instance à son état d'origine, en supprimant tous les mods ou contenus que vous avez ajoutés au modpack d'origine."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Réinstaller le modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Réparer"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Réparation"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "La réparation réinstalle les dépendances de Minecraft et vérifie la corruption. Cela peut résoudre les problèmes de lancement du jeu en raison d'erreurs liées au lanceur, mais ne résoudra pas les problèmes ou plantages liés aux mods installés."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Réparer l'instance ?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Réparation en cours"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Restaurer à létat actuel"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Voir toutes les versions"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "changer la version"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "installer"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "réinstaller"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "réparer"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Impossible de {action} pendant l'installation"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Impossible de {action} hors ligne"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Impossible de {action} pendant la réparation"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(version inconnue)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Délier l'instance"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Si vous continuez, vous ne pourrez pas la relier de nouveau sans créer une toute nouvelle instance. Vous ne recevrez plus de mises à jour du modpack et elle deviendra une instance normale."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Êtes-vous sûr de vouloir délier cette instance ?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Cette instance est liée à un modpack, ce qui veut dire que les mods ne peuvent être mis à jour et vous ne pouvez pas changer le modloader ou la version de Minecraft. La délier va déconnecter l'instance du modpack de façon permanente."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Délier du modpack"
},
"instance.settings.tabs.java": {
"message": "Java et mémoire"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Variables d'environnement"
},
"instance.settings.tabs.java.hooks": {
"message": "Crochets"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Arguments Java"
},
"instance.settings.tabs.java.java-installation": {
"message": "Installations de Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Mémoire allouée"
},
"instance.settings.tabs.window": {
"message": "Fenêtre"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Paramètres de fenêtre personnalisés"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Plein écran"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Faire démarrer le jeu en plein écran au lancement (en utilisant options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Hauteur"
},
"instance.settings.tabs.window.height.description": {
"message": "La hauteur de la fenêtre du jeu au démarrage."
},
"instance.settings.tabs.window.height.enter": {
"message": "Entrer la hauteur..."
},
"instance.settings.tabs.window.width": {
"message": "Largeur"
},
"instance.settings.tabs.window.width.description": {
"message": "La largeur de la fenêtre du jeu au démarrage."
},
"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"
},
"instance.worlds.cant_connect": {
"message": "Impossible de se connecter au serveur"
},
"instance.worlds.copy_address": {
"message": "Copier l'adresse"
},
"instance.worlds.dont_show_on_home": {
"message": "Ne pas montrer dans l'Accueil"
},
"instance.worlds.filter.available": {
"message": "Libre"
},
"instance.worlds.game_already_open": {
"message": "L'instance est déjà ouverte"
},
"instance.worlds.hardcore": {
"message": "Mode Hardcore"
},
"instance.worlds.incompatible_server": {
"message": "Le serveur est incompatible"
},
"instance.worlds.no_contact": {
"message": "Le serveur n'a pas pu être contacté"
},
"instance.worlds.no_server_quick_play": {
"message": "Vous pouvez seulement entrer directement dans les serveurs sur Minecraft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Vous pouvez seulement entrer directement dans les mondes solo sur Minecraft Alpha 1.20+"
},
"instance.worlds.play_instance": {
"message": "Jouer à l'instance"
},
"instance.worlds.type.server": {
"message": "Serveur"
},
"instance.worlds.type.singleplayer": {
"message": "Solo"
},
"instance.worlds.view_instance": {
"message": "Voir l'instance"
},
"instance.worlds.world_in_use": {
"message": "Le monde en cours d'utilisation"
},
"search.filter.locked.instance": {
"message": "Procuré par l'instance"
},
"search.filter.locked.instance-game-version.title": {
"message": "La version du jeu est procuré par l'instance"
},
"search.filter.locked.instance-loader.title": {
"message": "Le modloader est procuré par l'instance"
},
"search.filter.locked.instance.sync": {
"message": "Synchroniser avec l'instance"
}
}

View File

@@ -0,0 +1,473 @@
{
"app.settings.developer-mode-enabled": {
"message": "מצב מפתח מופעל."
},
"app.settings.downloading": {
"message": "מוריד גרסה {version}"
},
"app.settings.tabs.appearance": {
"message": "מראה"
},
"app.settings.tabs.default-instance-options": {
"message": "אפשרויות ברירת מחדל של התקנה"
},
"app.settings.tabs.feature-flags": {
"message": "הגדרות ניסיוניות"
},
"app.settings.tabs.java-installations": {
"message": "התקנות ג'אווה"
},
"app.settings.tabs.privacy": {
"message": "פרטיות"
},
"app.settings.tabs.resource-management": {
"message": "ניהול משאבים"
},
"app.update-toast.body": {
"message": "Modrinth App גרסה: {version} מוכנה להורדה!\nרענן כדי להוריד עכשיו, או באופן אוטומטי כאשר תסגור את האפליקציה."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App גרסה {version} סיימה את תהליך ההורדה. רענן כדי לעדכן עכשיו, או באופן אוטומטי כאשר תסגור את האפליקציה."
},
"app.update-toast.body.metered": {
"message": "אפליקצית מודרינת' גרסה {version} זמינה עכשיו! מכיוון שאתה על נתונים, אנחנו לא הורדנו אותה אוטומטית."
},
"app.update-toast.changelog": {
"message": "יומן שינויים"
},
"app.update-toast.download": {
"message": "הורד ({size})"
},
"app.update-toast.downloading": {
"message": "מוריד..."
},
"app.update-toast.reload": {
"message": "רענן"
},
"app.update-toast.title": {
"message": "עדכונים זמינים"
},
"app.update-toast.title.download-complete": {
"message": "הורדה הושלמה"
},
"app.update.complete-toast.text": {
"message": "לחץ כאן כדי לראות את יומן השינויים."
},
"app.update.complete-toast.title": {
"message": "גרסה {version} הותקנה בהצלחה!"
},
"app.update.download-update": {
"message": "הורד עדכון"
},
"app.update.downloading-update": {
"message": "מוריד עדכון ({percent}%)"
},
"app.update.reload-to-update": {
"message": "רענן בכדי להתקין את העדכונים"
},
"friends.add-friends-to-share": {
"message": "<link>הוסף חברים</link> כדי לראות במה הם משחקים!"
},
"friends.heading": {
"message": "חברים"
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"instance.add-server.add-and-play": {
"message": "הוסף ושחק"
},
"instance.add-server.add-server": {
"message": "הוסף שרת"
},
"instance.add-server.resource-pack.disabled": {
"message": "מושבת"
},
"instance.add-server.resource-pack.enabled": {
"message": "מופעל"
},
"instance.add-server.resource-pack.prompt": {
"message": "שאל"
},
"instance.add-server.title": {
"message": "הוסף שרת"
},
"instance.edit-server.title": {
"message": "ערוך שרת"
},
"instance.edit-world.hide-from-home": {
"message": "הסתר מדף הבית"
},
"instance.edit-world.name": {
"message": "שם"
},
"instance.edit-world.placeholder-name": {
"message": "עולם מיינקראפט"
},
"instance.edit-world.reset-icon": {
"message": "אפס סמל"
},
"instance.edit-world.title": {
"message": "ערוך עולם"
},
"instance.filter.disabled": {
"message": "פרויקטים מושבתים"
},
"instance.filter.updates-available": {
"message": "עדכונים זמינים"
},
"instance.server-modal.address": {
"message": "כתובת"
},
"instance.server-modal.name": {
"message": "שם"
},
"instance.server-modal.placeholder-name": {
"message": "שרת מיינקראפט"
},
"instance.server-modal.resource-pack": {
"message": "חבילת משאבים"
},
"instance.settings.tabs.general": {
"message": "כללי"
},
"instance.settings.tabs.general.delete": {
"message": "מחק התקנה"
},
"instance.settings.tabs.general.delete.button": {
"message": "מחק התקנה"
},
"instance.settings.tabs.general.delete.description": {
"message": "מוחק לצמיתות את התקנה זו מהמכשיר שלך, כולל העולמות שלך, הגדרות, וכל התוכן המותקן. שים לב, לאחר מחיקת ההתקנה אין דרך להחזיר אותה."
},
"instance.settings.tabs.general.deleting.button": {
"message": "מוחק..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "שכפל"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "לא ניתן לשכפל בזמן התקנה."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "שכפל התקנה"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "יוצר עותק של התקנה זו, כולל עולמות, הגדרות, מודים, וכדומה."
},
"instance.settings.tabs.general.edit-icon": {
"message": "ערוך סמל"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "הסר סמל"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "החלף סמל"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "בחר סמל"
},
"instance.settings.tabs.general.library-groups": {
"message": "קבוצות ספרייה"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "צור קבוצה חדשה"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "קבוצות ספרייה מאפשרות לך לארגן את ההתקנות שלך לחלקים שונים בספרייה שלך."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "הכנס שם קבוצה"
},
"instance.settings.tabs.general.name": {
"message": "שם"
},
"instance.settings.tabs.hooks": {
"message": "פעולות בעת הפעלה"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "פעולות בעת הפעלה מותאמות אישית"
},
"instance.settings.tabs.hooks.description": {
"message": "פעולות בעת הפעלה מאפשרות למשתמשים מתקדמים להריץ פקודות מערכת מסוימות לפני ואחרי שהמשחק מופעל."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "לאחר יציאה"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "רץ לאחר שהמשחק נסגר."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "הכנס פקודה לאחר יציאה..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "טרום-הפעלה"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "מופעל לפני שההתקנה מופעלת."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "הכנס פקודה לפני ההפעלה..."
},
"instance.settings.tabs.hooks.title": {
"message": "פעולות הפעלה"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "מעטפת"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "פקודת מעטפת להפעלת מיינקראפט."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "הכנס פקודת מעטפת..."
},
"instance.settings.tabs.installation": {
"message": "התקנה"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} בשביל מיינקראפט {game_version} כבר מותקן"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "וונילה {game_version} כבר מותקן"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "שנה גרסה"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "התקן"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "מתקין"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "מאחזר גרסאות חבילת מודים"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "מתקין גרסה חדשה"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "מותקן כעת"
},
"instance.settings.tabs.installation.debug-information": {
"message": "מידע ניפוי שגיאות:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "מאחזר פרטי חבילת מודים"
},
"instance.settings.tabs.installation.game-version": {
"message": "גרסת משחק"
},
"instance.settings.tabs.installation.install": {
"message": "התקן"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "ההתקנה בתהליך"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} גרסה"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "מיינקראפט {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "לא ניתן לאחזר את פרטי חבילת המודים המקושרת. אנא בדוק את חיבור האינטרנט שלך."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} אינו זמין עבור מיינקראפט {version}. אנא נסה טוען מודים אחר."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "התקנה זאת מקושרת לחבילת מודים, אך חבילת המודים לא נמצאה במודרינת'."
},
"instance.settings.tabs.installation.platform": {
"message": "פלטפורמה"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "התקן מחדש את חבילת המודים"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "מתקין מחדש את חבילת המודים"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "התקנה מחדש תאפס את כל התוכן המותקן או ששונה, ותחזיר אותו למצב שסופק על ידי חבילת המודים, תוך הסרת כל מוד או תוכן שהוספתם מעבר להתקנה המקורית. פעולה זו עשויה לתקן תקלות שנגרמו משינויים בהתקנה, אך אם העולמות שלכם תלויים בתוכן נוסף שהותקן, היא עלולה לשבש אותם."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "האם אתה בטוח שברצונך להתקין מחדש instance זה?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "מאפס את התוכן שנמצא בהתקנה למצבו המקורי, תוך הסרת כל מוד או תוכן ששונה מעבר לחבילת המודים המקורית."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "התקן מחדש חבילת מודים"
},
"instance.settings.tabs.installation.repair.button": {
"message": "תיקון"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "מתקן"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "התיקון מתקין מחדש את התלויות של מיינקראפט ובודק דברים מקולקלים. פעולה זו עשויה לפתור בעיות שמונעות את הפעלת המשחק עקב שגיאות הקשורות למשגר, אך לא תפתור בעיות או קריסות הקשורות למודים המותקנים."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "תקן"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "תיקון בתהליך"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "אפס לגרסה הנוכחית"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "הצג את כל הגרסאות"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "שנה גרסה"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "התקן"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "התקן מחדש"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "תקן"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "לא ניתן לבצע {action} בזמן ההתקנה"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "לא ניתן לבצע {action} במצב לא מקוון"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "לא יכול {action} בזמן תיקון"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(גרסה לא ידועה)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "לבטל את הקישור של ההתקנה הזו"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "אם תמשיך, לא תוכל לקשר אותה מחדש מבלי ליצור התקנה חדשה לחלוטין. לא תקבל עוד עדכונים לחבילת המודים, והיא תהפוך להתקנה רגילה."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "האם אתה בטוח שברצונך לנתק את הקישור ל-instance הזה?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "התקנה זאת מקושרת לחבילת מודים, מה שאומר שלא ניתן לעדכן מודים ולא ניתן לשנות את טוען המודים או את גרסת המיינקראפט. הניתוק יבטל לצמיתות את הקישור של התקנה זאת לחבילת המודים."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "נתק קישור מחבילת מודים"
},
"instance.settings.tabs.java": {
"message": "ג'אווה וזיכרון"
},
"instance.settings.tabs.java.environment-variables": {
"message": "משתני סביבה"
},
"instance.settings.tabs.java.hooks": {
"message": "התחברויות"
},
"instance.settings.tabs.java.java-arguments": {
"message": "ארגומנטים של ג'אווה"
},
"instance.settings.tabs.java.java-installation": {
"message": "התקנת Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "זיכרון מוקצה"
},
"instance.settings.tabs.window": {
"message": "חלון"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "הגדרות חלון מותאמות אישית"
},
"instance.settings.tabs.window.fullscreen": {
"message": "מסך מלא"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "הגדר שהמשחק ייפתח במסך מלא בעת ההפעלה (באמצעות options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "גובה"
},
"instance.settings.tabs.window.height.description": {
"message": "גובה חלון המשחק בעת ההפעלה."
},
"instance.settings.tabs.window.height.enter": {
"message": "הכנס גובה..."
},
"instance.settings.tabs.window.width": {
"message": "רוחב"
},
"instance.settings.tabs.window.width.description": {
"message": "רוחב חלון המשחק בעת ההפעלה."
},
"instance.settings.tabs.window.width.enter": {
"message": "הכנס רוחב..."
},
"instance.settings.title": {
"message": "הגדרות"
},
"instance.worlds.a_minecraft_server": {
"message": "שרת מיינקראפט"
},
"instance.worlds.cant_connect": {
"message": "לא יכול להתחבר אל השרת"
},
"instance.worlds.copy_address": {
"message": "העתק כתובת"
},
"instance.worlds.dont_show_on_home": {
"message": "אל תציג בדף הבית"
},
"instance.worlds.filter.available": {
"message": "זמין"
},
"instance.worlds.game_already_open": {
"message": "התקנה כבר פתוחה"
},
"instance.worlds.hardcore": {
"message": "מצב הארדקור"
},
"instance.worlds.incompatible_server": {
"message": "שרת לא מתאים"
},
"instance.worlds.no_contact": {
"message": "לא ניתן ליצור קשר עם השרת"
},
"instance.worlds.no_server_quick_play": {
"message": "אתה יכול רק לקפוץ ישירות לשרתים מהגרסא אלפא 1.0.5 ואלך"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "אתה יכול לקפוץ ישירות לעולמות החל מהגרסא 1.20 ומעלה"
},
"instance.worlds.play_instance": {
"message": "שחק בהתקנה"
},
"instance.worlds.type.server": {
"message": "שרת"
},
"instance.worlds.type.singleplayer": {
"message": "שחקן יחיד"
},
"instance.worlds.view_instance": {
"message": "הצג התקנה"
},
"instance.worlds.world_in_use": {
"message": "עולם בשימוש"
},
"search.filter.locked.instance": {
"message": "מסופק על ידי ההתקנה"
},
"search.filter.locked.instance-game-version.title": {
"message": "גרסאת המשחק מסופקת על ידי ההתקנה"
},
"search.filter.locked.instance-loader.title": {
"message": "מטען מודים מסופק ע\"י ההתקן"
},
"search.filter.locked.instance.sync": {
"message": "סנכרן עם התקנה"
}
}

View File

@@ -0,0 +1,95 @@
{
"app.settings.developer-mode-enabled": {
"message": "विकासकर्ता विधि सक्रिय की गई।"
},
"app.settings.tabs.appearance": {
"message": "स्वरूप"
},
"app.settings.tabs.default-instance-options": {
"message": "पूर्वनिर्धारित प्रतिरूप विकल्प"
},
"app.settings.tabs.feature-flags": {
"message": "विशेषता ध्वज"
},
"app.settings.tabs.java-installations": {
"message": "जावा संस्थापना"
},
"app.settings.tabs.privacy": {
"message": "गोपनीयता"
},
"app.settings.tabs.resource-management": {
"message": "संसाधन प्रबंधन"
},
"instance.add-server.add-and-play": {
"message": "जोड़ें एवं चलाएँ"
},
"instance.add-server.add-server": {
"message": "सेवक जोड़ें"
},
"instance.add-server.resource-pack.disabled": {
"message": "निष्क्रिय"
},
"instance.add-server.resource-pack.enabled": {
"message": "सक्रिय"
},
"instance.add-server.resource-pack.prompt": {
"message": "प्रेरणा"
},
"instance.add-server.title": {
"message": "एक सेवक जोड़ें"
},
"instance.edit-server.title": {
"message": "सेवक का सम्पादन करें"
},
"instance.edit-world.name": {
"message": "Nam"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft ki dunia"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "चिह्न हटाएँ"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "चिह्न संपादित करें"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "चिह्न चुनें"
},
"instance.settings.tabs.general.library-groups": {
"message": "पुस्तकालय समूह"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "नया समूह बनाएं"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "लाइब्रेरी समूह आपको अपने इंस्टैंस को अपनी लाइब्रेरी में विभिन्न अनुभाग में व्यवस्थित करने की अनुमति देते हैं।"
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "समूह का नाम दर्ज करें"
},
"instance.settings.tabs.general.name": {
"message": "नाम"
},
"instance.settings.tabs.hooks": {
"message": "हुक लॉन्च करें"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "कस्टम लाँच हुक्स"
},
"instance.settings.tabs.hooks.description": {
"message": "हुक्स उन्नत उपयोगकर्ताओं को गेम लॉन्च करने से पहले और बाद में कुछ सिस्टम कमांड चलाने की अनुमति देते हैं।"
},
"instance.settings.tabs.hooks.post-exit": {
"message": "पोस्ट-एक्ज़िट"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "खेल समाप्त होने के बाद चला।"
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "पोस्ट-एग्जिट कमांड दर्ज करें..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "पूर्व-लाँच"
}
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Fejlesztői mód bekapcsolva."
},
"app.settings.downloading": {
"message": "v{version} letöltése"
},
"app.settings.tabs.appearance": {
"message": "Megjelenés"
},
"app.settings.tabs.default-instance-options": {
"message": "Alapértelmezett profil beállítások"
},
"app.settings.tabs.feature-flags": {
"message": "Funkciójelzők"
},
"app.settings.tabs.java-installations": {
"message": "Telepített Java példányok"
},
"app.settings.tabs.privacy": {
"message": "Adatvédelem"
},
"app.settings.tabs.resource-management": {
"message": "Erőforráskezelés"
},
"app.update-toast.body": {
"message": "A Modrinth App v{version} telepítésre kész! Frissítéshez indítsa újra a programot, vagy zárja be a Modrinth App alkalmazást, és a frissítés automatikusan megtörténik."
},
"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.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."
},
"app.update-toast.changelog": {
"message": "Változtatások"
},
"app.update-toast.download": {
"message": "Letöltés ({size})"
},
"app.update-toast.downloading": {
"message": "Letöltés..."
},
"app.update-toast.reload": {
"message": "Újratöltés"
},
"app.update-toast.title": {
"message": "Frissítések elérhetőek"
},
"app.update-toast.title.download-complete": {
"message": "Letöltés befejezve"
},
"app.update.complete-toast.text": {
"message": "Kattints ide a változások megtekintéséhez."
},
"app.update.complete-toast.title": {
"message": "Verzió {version} sikeresen telepítve!"
},
"app.update.download-update": {
"message": "Frissítés letöltése"
},
"app.update.downloading-update": {
"message": "Frissítés letöltése ({percent}%)"
},
"app.update.reload-to-update": {
"message": "A telepítéshez újraindítás szükséges"
},
"friends.action.add-friend": {
"message": "Barát hozzáadása"
},
"friends.action.view-friend-requests": {
"message": "{count} barát {count, plural, other {kérelem}}"
},
"friends.add-friend.submit": {
"message": "Barátkérelem elküldése"
},
"friends.add-friend.title": {
"message": "Barát hozzáadása"
},
"friends.add-friend.username.description": {
"message": "Más is lehet, mint a Minecraft felhasználóneve!"
},
"friends.add-friend.username.placeholder": {
"message": "Barát Modrinth felhasználóneve..."
},
"friends.add-friend.username.title": {
"message": "Mi a barátod Modrinth felhasználóneve?"
},
"friends.add-friends-to-share": {
"message": "<link>Vegyél fel barátokat</link>, hogy lásd mivel játszanak!"
},
"friends.friend.cancel-request": {
"message": "Barátkérelem visszavonása"
},
"friends.friend.remove-friend": {
"message": "Barát eltávolítása"
},
"friends.friend.request-sent": {
"message": "Barátkérelem elküldve"
},
"friends.friend.view-profile": {
"message": "Profil megtekintése"
},
"friends.heading": {
"message": "Barátok"
},
"friends.heading.active": {
"message": "Aktív"
},
"friends.heading.offline": {
"message": "Offline"
},
"friends.heading.online": {
"message": "Online"
},
"friends.heading.pending": {
"message": "Jóváhagyásra vár"
},
"friends.no-friends-match": {
"message": "Nincsen \"{query}\" nevű barátod"
},
"friends.search-friends-placeholder": {
"message": "Keresés a barátaid között..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Lépj be Modrinth fiókba</link>, hogy felvehess barátokat és lásd mivel játszanak!"
},
"instance.add-server.add-and-play": {
"message": "Hozzáadás és játék"
},
"instance.add-server.add-server": {
"message": "Szerver hozzáadása"
},
"instance.add-server.resource-pack.disabled": {
"message": "Kikapcsolva"
},
"instance.add-server.resource-pack.enabled": {
"message": "Engedélyezve"
},
"instance.add-server.resource-pack.prompt": {
"message": "Kérdezzen"
},
"instance.add-server.title": {
"message": "Adjon hozzá egy szervert"
},
"instance.edit-server.title": {
"message": "Szerver módosítása"
},
"instance.edit-world.hide-from-home": {
"message": "Elrejtés a Főoldalról"
},
"instance.edit-world.name": {
"message": "Név"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft világ"
},
"instance.edit-world.reset-icon": {
"message": "Ikon alaphelyzetbe állítása"
},
"instance.edit-world.title": {
"message": "Világ szerkesztése"
},
"instance.filter.disabled": {
"message": "Letiltott projektek"
},
"instance.filter.updates-available": {
"message": "Frissítések elérhetőek"
},
"instance.server-modal.address": {
"message": "Cím"
},
"instance.server-modal.name": {
"message": "Név"
},
"instance.server-modal.placeholder-name": {
"message": "Egy Minecraft szerver"
},
"instance.server-modal.resource-pack": {
"message": "Erőforráscsomag"
},
"instance.settings.tabs.general": {
"message": "Általános"
},
"instance.settings.tabs.general.delete": {
"message": "Példány törlése"
},
"instance.settings.tabs.general.delete.button": {
"message": "Példány törlése"
},
"instance.settings.tabs.general.delete.description": {
"message": "Örökké eltávolít egy példányt az eszközről, beleértve a világait, beállításait és minden telepített tartalmat. Legyen óvatos, mert ha egyszer kitöröl egy példányt azt többé nem lehet visszaállítani."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Törlés..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplikálás"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Telepítés közben nem lehet duplikálni."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Példány duplikálása"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Készít egy másolatot erről a példányról, beleértve a világokat, beállításokat, modokat, stb."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Ikon szerkesztése"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Ikon eltávolítása"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Ikon kicserélése"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Ikon kiválasztása"
},
"instance.settings.tabs.general.library-groups": {
"message": "Könyvtár gyűjtemények"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Új gyűjtemény létrehozása"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "A könyvtár gyűjtemények segítenek külön kategóriákba rendszerezni a profiljait."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Adja meg a gyűjtemény nevét"
},
"instance.settings.tabs.general.name": {
"message": "Név"
},
"instance.settings.tabs.hooks": {
"message": "Indítási horgok"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Saját indítási horgok"
},
"instance.settings.tabs.hooks.description": {
"message": "A horgok lehetővé teszik a haladó felhasználók számára, hogy bizonyos rendszerparancsokat futtassanak a játék elindítása előtt és után."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Kilépés után"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Játék bezárása után fut."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Írjon be kilépés utáni parancsokat..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Indítás előtt"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Futtatás a példány futtatása előtt."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Írjon be indítás előtti parancsokat..."
},
"instance.settings.tabs.hooks.title": {
"message": "Játék indítási parancsok"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Indítóparancs"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Wrapper kommand a Minecraft elindításához."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Írd ide a wrapper kommandot..."
},
"instance.settings.tabs.installation": {
"message": "Telepítés"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} a Minecraft-hoz {game_version} már telepítve van"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "A vanilla {game_version} már telepítve van"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Verzióváltás"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Telepítés"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Telepítés folyamatban"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Modpack verzióinak lekérése"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Új verzió telepítése"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Jelenleg telepítve"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Debug információ:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Modpack részleteinek lekérése"
},
"instance.settings.tabs.installation.game-version": {
"message": "Játék verziója"
},
"instance.settings.tabs.installation.install": {
"message": "Telepítés"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "A telepítés folyamatban"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} verzió"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"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 loader-t."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "A \"Példányod\" linkelve van egy Modrinth modpack-hoz, de a modpack nem található online."
},
"instance.settings.tabs.installation.platform": {
"message": "Platform"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Modpack újratelepítése"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"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 modpack á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."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Biztosan szeretnéd újratelepíteni ezt a példányt?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Visszaállítja a Példányod tartalmát az eredeti állapotába, eltávolítva az eredeti modpackhoz hozzáadott összes modot és tartalmat."
},
"instance.settings.tabs.installation.reinstall.title": {
"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"
},
"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 launcherrel kapcsolatos hibák miatt nem indul el, de nem oldja meg a telepített modokkal kapcsolatos problémákat vagy összeomlásokat."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Példány javítása?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Javítás folyamatban"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Visszaállítás az aktuális állapotra"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Összes verzió mutatása"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "verzió váltás"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "telepítés"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "újratelepítés"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "javítás"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Nem lehet {action} telepítés közben"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Offline állapotban nem lehet {action} végrehajtani"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Nem lehet {action} javítás közben"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(ismeretlen verzió)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Példány leválasztása"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": ""
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Biztosan szeretné ezt az példányt leválasztani?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Ez az példány egy modpackhoz van kapcsolva, ami azt jelenti, hogy a modok nem frissíthetőek, és nem lehet megváltoztatni a mod betöltőt vagy a Minecraft verziót. A kapcsolódás megszüntetése véglegesen leválasztja ezt a példányt a modpackről."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Modpack-ről való leválasztás"
},
"instance.settings.tabs.java": {
"message": "Java és memória"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Környezeti változók"
},
"instance.settings.tabs.java.hooks": {
"message": "Hookok"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java argumentumok"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java telepítés"
},
"instance.settings.tabs.java.java-memory": {
"message": "Hozzárendelt memória"
},
"instance.settings.tabs.window": {
"message": "Ablak"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Egyedi ablak beállítások"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Teljesképernyő"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "A játék indításakor teljes képernyős módban indítsa el (az options.txt fájl segítségével)."
},
"instance.settings.tabs.window.height": {
"message": "Magasság"
},
"instance.settings.tabs.window.height.description": {
"message": "A játék ablakának magassága indításkor."
},
"instance.settings.tabs.window.height.enter": {
"message": "Magaság megadása..."
},
"instance.settings.tabs.window.width": {
"message": "Szélesség"
},
"instance.settings.tabs.window.width.description": {
"message": "A játék ablakának szélessége indításkor."
},
"instance.settings.tabs.window.width.enter": {
"message": "Hosszúság megadása..."
},
"instance.settings.title": {
"message": "Beállítások"
},
"instance.worlds.a_minecraft_server": {
"message": "Egy Minecraft szerver"
},
"instance.worlds.cant_connect": {
"message": "A szerverhez nem lehet csatlakozni"
},
"instance.worlds.copy_address": {
"message": "Cím másolása"
},
"instance.worlds.dont_show_on_home": {
"message": "Ne mutasd a kezdőlapon"
},
"instance.worlds.filter.available": {
"message": "Elérhető"
},
"instance.worlds.game_already_open": {
"message": "Példány már megnyitva"
},
"instance.worlds.hardcore": {
"message": "Hardcore mód"
},
"instance.worlds.incompatible_server": {
"message": "A Szerver nem kompatibilis"
},
"instance.worlds.no_contact": {
"message": "A szerverrel nem lehet kapcsolatott létesíteni"
},
"instance.worlds.no_server_quick_play": {
"message": "Csak Minecraft Alpha 1.0.5+ tól tudsz egyből szerverhez csatlakozni"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Csak Minecraft 1.20+ tól tudsz egyből egyjátékos világba belépni"
},
"instance.worlds.play_instance": {
"message": "Példány "
},
"instance.worlds.type.server": {
"message": "Szerver"
},
"instance.worlds.type.singleplayer": {
"message": "Egyjátékos"
},
"instance.worlds.view_instance": {
"message": "Profil megtekintése"
},
"instance.worlds.world_in_use": {
"message": "A világ használatban van"
},
"search.filter.locked.instance": {
"message": "Profil által van megadva"
},
"search.filter.locked.instance-game-version.title": {
"message": "A játék verzió a profil által van megadva"
},
"search.filter.locked.instance-loader.title": {
"message": "A betöltő a profil által van megadva"
},
"search.filter.locked.instance.sync": {
"message": "Profil Szinkronizálása"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Mode pengembang dihidupkan."
},
"app.settings.downloading": {
"message": "Mengunduh v{version}"
},
"app.settings.tabs.appearance": {
"message": "Tampilan"
},
"app.settings.tabs.default-instance-options": {
"message": "Pilihan wujud asali"
},
"app.settings.tabs.feature-flags": {
"message": "Bendera fitur"
},
"app.settings.tabs.java-installations": {
"message": "Pemasangan Java"
},
"app.settings.tabs.privacy": {
"message": "Privasi"
},
"app.settings.tabs.resource-management": {
"message": "Manajemen sumber"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} siap dipasang! Muat ulang untuk memperbarui sekarang, atau secara otomatis saat Anda menutup Modrinth App."
},
"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.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"
},
"app.update-toast.download": {
"message": "Unduh ({size})"
},
"app.update-toast.downloading": {
"message": "Mengunduh..."
},
"app.update-toast.reload": {
"message": "Muat ulang"
},
"app.update-toast.title": {
"message": "Pembaruan tersedia"
},
"app.update-toast.title.download-complete": {
"message": "Selesai mengunduh"
},
"app.update.complete-toast.text": {
"message": "Klik di sini untuk melihat log perubahan."
},
"app.update.complete-toast.title": {
"message": "Versi {version} berhasil dipasang!"
},
"app.update.download-update": {
"message": "Unduh pembaruan"
},
"app.update.downloading-update": {
"message": "Mengunduh pembaruan ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Muat ulang untuk memasang pembaruan"
},
"friends.action.add-friend": {
"message": "Tambah teman"
},
"friends.action.view-friend-requests": {
"message": "{count} {count, plural, other {permintaan}} teman"
},
"friends.add-friend.submit": {
"message": "Kirim permintaan teman"
},
"friends.add-friend.title": {
"message": "Menambah teman"
},
"friends.add-friend.username.description": {
"message": "Ia mungkin memiliki nama yang berbeda dari nama pengguna Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "Masukkan nama pengguna Modrinth..."
},
"friends.add-friend.username.title": {
"message": "Apakah nama pengguna Modrinth teman Anda?"
},
"friends.add-friends-to-share": {
"message": "<link>Tambah teman</link> untuk melihat apa yang mereka mainkan!"
},
"friends.friend.cancel-request": {
"message": "Batalkan permintaan"
},
"friends.friend.remove-friend": {
"message": "Hapus teman"
},
"friends.friend.request-sent": {
"message": "Permintaan teman dikirim"
},
"friends.friend.view-profile": {
"message": "Lihat profil"
},
"friends.heading": {
"message": "Teman"
},
"friends.heading.active": {
"message": "Aktif"
},
"friends.heading.offline": {
"message": "Luring"
},
"friends.heading.online": {
"message": "Daring"
},
"friends.heading.pending": {
"message": "Menunggu"
},
"friends.no-friends-match": {
"message": "Tidak ada teman dengan nama \"{query}\""
},
"friends.search-friends-placeholder": {
"message": "Cari teman..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Masuk ke akun Modrinth</link> untuk menambah teman dan melihat apa yang mereka mainkan!"
},
"instance.add-server.add-and-play": {
"message": "Tambah dan mainkan"
},
"instance.add-server.add-server": {
"message": "Tambah peladen"
},
"instance.add-server.resource-pack.disabled": {
"message": "Dimatikan"
},
"instance.add-server.resource-pack.enabled": {
"message": "Dihidupkan"
},
"instance.add-server.resource-pack.prompt": {
"message": "Konfirmasi"
},
"instance.add-server.title": {
"message": "Tambah peladen"
},
"instance.edit-server.title": {
"message": "Sunting peladen"
},
"instance.edit-world.hide-from-home": {
"message": "Sembunyikan dari Beranda"
},
"instance.edit-world.name": {
"message": "Nama"
},
"instance.edit-world.placeholder-name": {
"message": "Dunia Minecraft"
},
"instance.edit-world.reset-icon": {
"message": "Atur ulang ikon"
},
"instance.edit-world.title": {
"message": "Sunting dunia"
},
"instance.filter.disabled": {
"message": "Proyek takaktif"
},
"instance.filter.updates-available": {
"message": "Pembaruan tersedia"
},
"instance.server-modal.address": {
"message": "Alamat"
},
"instance.server-modal.name": {
"message": "Nama"
},
"instance.server-modal.placeholder-name": {
"message": "Peladen Minecraft"
},
"instance.server-modal.resource-pack": {
"message": "Paket sumber"
},
"instance.settings.tabs.general": {
"message": "Umum"
},
"instance.settings.tabs.general.delete": {
"message": "Hapus wujud"
},
"instance.settings.tabs.general.delete.button": {
"message": "Hapus wujud"
},
"instance.settings.tabs.general.delete.description": {
"message": "Menghapus wujud secara permanen dari perangkat Anda, termasuk dunia, konfigurasi, dan konten terpasang Anda. Berhati-hatilah, karena Anda tidak dapat memulihkan wujud yang telah dihapus."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Menghapus..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Gandakan"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Tidak dapat menggandakan saat memasang."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Gandakan wujud"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Membuat salinan dari wujud ini, termasuk dunia, konfig, modifikasi, dsb."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Sunting ikon"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Hapus ikon"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Ganti ikon"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Pilih ikon"
},
"instance.settings.tabs.general.library-groups": {
"message": "Pengelompokan koleksi"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Buat kelompok baru"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Pengelompokan koleksi membolehkan Anda mengorganisasi wujud ke dalam bagian-bagian berbeda dalam koleksi Anda."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Masukkan nama kelompok"
},
"instance.settings.tabs.general.name": {
"message": "Nama"
},
"instance.settings.tabs.hooks": {
"message": "Luncurkan kait"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Luncurkan kait ubah suaian"
},
"instance.settings.tabs.hooks.description": {
"message": "Kait membolehkan pengguna ahli untuk menjalankan beberapa perintah sistem sebelum dan setelah meluncurkan permainan."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Pascakeluar"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Berjalan setelah permainan tertutup."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Masukkan perintah pascakeluar..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Praluncur"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Berjalan sebelum wujud diluncurkan."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Masukkan perintah praluncur..."
},
"instance.settings.tabs.hooks.title": {
"message": "Kait peluncuran permainan"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Pembungkus"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Perintah pembungkus untuk meluncurkan Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Masukkan perintah pembungkus..."
},
"instance.settings.tabs.installation": {
"message": "Pemasangan"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} untuk Minecraft {game_version} sudah terpasang"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "{game_version} murni sudah terpasang"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Ubah versi"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Pasang"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Memasang"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Memperoleh versi paket modifikasi"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Memasang versi baru"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Saat ini terpasang"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Informasi awakutu:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Memperoleh perincian paket modifikasi"
},
"instance.settings.tabs.installation.game-version": {
"message": "Versi permainan"
},
"instance.settings.tabs.installation.install": {
"message": "Pasang"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Pemasangan sedang berjalan"
},
"instance.settings.tabs.installation.loader-version": {
"message": "Versi {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Tidak dapat memperoleh perincian paket modifikasi 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."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Wujud ini berkaitan dengan paket modifikasi, tetapi paket modifikasi tersebut tidak dapat ditemukan pada Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Platform"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Pasang ulang paket modifikasi"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Memasang ulang paket modifikasi"
},
"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."
},
"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."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Pasang ulang paket modifikasi"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Perbaiki"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"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."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Perbaiki wujud?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Perbaikan sedang berlangsung"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Atur ulang ke saat ini"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Tampilkan semua versi"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "mengubah versi"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "memasang"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "memasang ulang"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "memperbaiki"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Tidak dapat {action} saat memasang"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Tidak dapat {action} saat luring"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Tidak dapat {action} saat memperbaiki"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(versi tidak dikenal)"
},
"instance.settings.tabs.installation.unlink.button": {
"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."
},
"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."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Lepas kaitan dari paket modifikasi"
},
"instance.settings.tabs.java": {
"message": "Java dan memori"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Variabel lingkungan"
},
"instance.settings.tabs.java.hooks": {
"message": "Kait"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Argumen Java"
},
"instance.settings.tabs.java.java-installation": {
"message": "Pemasangan Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Memori yang teralokasikan"
},
"instance.settings.tabs.window": {
"message": "Jendela"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Pengaturan jendela ubah suaian"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Layar penuh"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Permainan berada dalam layar penuh ketika diluncurkan (menggunakan options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Tinggi"
},
"instance.settings.tabs.window.height.description": {
"message": "Tinggi jendela permainan ketika diluncurkan."
},
"instance.settings.tabs.window.height.enter": {
"message": "Masukkan tinggi..."
},
"instance.settings.tabs.window.width": {
"message": "Lebar"
},
"instance.settings.tabs.window.width.description": {
"message": "Lebar jendela permainan ketika diluncurkan."
},
"instance.settings.tabs.window.width.enter": {
"message": "Masukkan lebar..."
},
"instance.settings.title": {
"message": "Pengaturan"
},
"instance.worlds.a_minecraft_server": {
"message": "Peladen Minecraft"
},
"instance.worlds.cant_connect": {
"message": "Tidak dapat menghubungkan ke peladen"
},
"instance.worlds.copy_address": {
"message": "Salin alamat"
},
"instance.worlds.dont_show_on_home": {
"message": "Jangan tampilkan di Beranda"
},
"instance.worlds.filter.available": {
"message": "Tersedia"
},
"instance.worlds.game_already_open": {
"message": "Wujud telah dibuka"
},
"instance.worlds.hardcore": {
"message": "Mode Menantang"
},
"instance.worlds.incompatible_server": {
"message": "Peladen tidak cocok"
},
"instance.worlds.no_contact": {
"message": "Peladen tidak dapat dihubungi"
},
"instance.worlds.no_server_quick_play": {
"message": "Anda hanya dapat memasuki peladen secara langsung pada Minecraft versi Alpha 1.0.5 ke atas"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Anda hanya dapat memasuki dunia bermain sendiri secara langsung pada Minecraft versi Alpha 1.20 ke atas"
},
"instance.worlds.play_instance": {
"message": "Mainkan wujud"
},
"instance.worlds.type.server": {
"message": "Peladen"
},
"instance.worlds.type.singleplayer": {
"message": "Bermain sendiri"
},
"instance.worlds.view_instance": {
"message": "Lihat wujud"
},
"instance.worlds.world_in_use": {
"message": "Dunia sedang dimainkan"
},
"search.filter.locked.instance": {
"message": "Disediakan oleh wujud"
},
"search.filter.locked.instance-game-version.title": {
"message": "Versi permainan disediakan oleh wujud"
},
"search.filter.locked.instance-loader.title": {
"message": "Pemuat disediakan oleh wujud"
},
"search.filter.locked.instance.sync": {
"message": "Sinkronkan dengan wujud"
}
}

View File

@@ -0,0 +1,170 @@
{
"app.settings.developer-mode-enabled": {
"message": "Kveikt er á forritaraham."
},
"app.settings.tabs.appearance": {
"message": "Útlit"
},
"app.settings.tabs.feature-flags": {
"message": "Virknirofar"
},
"app.settings.tabs.java-installations": {
"message": "Java uppsetningar"
},
"app.settings.tabs.privacy": {
"message": "Persónuvernd"
},
"instance.add-server.add-and-play": {
"message": "Bæta við og spila"
},
"instance.add-server.add-server": {
"message": "Bæta við þjóni"
},
"instance.add-server.resource-pack.disabled": {
"message": "Óvirkt"
},
"instance.add-server.resource-pack.enabled": {
"message": "Virkt"
},
"instance.add-server.resource-pack.prompt": {
"message": "Spyrja"
},
"instance.add-server.title": {
"message": "Bæta við þjóni"
},
"instance.edit-server.title": {
"message": "Breyta þjóni"
},
"instance.edit-world.hide-from-home": {
"message": "Fela frá Heimasíðu"
},
"instance.edit-world.name": {
"message": "Nafn"
},
"instance.edit-world.placeholder-name": {
"message": "Nýr Heimur"
},
"instance.edit-world.reset-icon": {
"message": "Endursetja táknmynd"
},
"instance.edit-world.title": {
"message": "Breyta heim"
},
"instance.filter.updates-available": {
"message": "Uppfærslur mögulegar"
},
"instance.server-modal.address": {
"message": "Vistfang þjóns"
},
"instance.server-modal.name": {
"message": "Nafn þjóns"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft Netþjónn"
},
"instance.settings.tabs.general.deleting.button": {
"message": "Eyðir..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Tvöfalda"
},
"instance.settings.tabs.general.edit-icon": {
"message": "Breyta táknmynd"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Fjarlægja táknmynd"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Skipta út táknmynd"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Velja táknmynd"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Búa til nýjan hóp"
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Sláðu inn hópnafn"
},
"instance.settings.tabs.general.name": {
"message": "Nafn"
},
"instance.settings.tabs.hooks": {
"message": "Ræsikrókar"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Sérsniðnir ræsikrókar"
},
"instance.settings.tabs.installation": {
"message": "Uppsetning"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Minecraft Vanilla {game_version} er nú þegar sett upp"
},
"instance.settings.tabs.installation.game-version": {
"message": "Leikjaútgafa"
},
"instance.settings.tabs.installation.install": {
"message": "Setja upp"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Gera við"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Gerir við"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Verið er að gera við"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Endursetja til núverandi"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Sýna allar útgáfur"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(Óþekkt útgáfa)"
},
"instance.settings.tabs.java": {
"message": "Java og vinnsluminni"
},
"instance.settings.tabs.java.hooks": {
"message": "Krókar"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java uppsetning"
},
"instance.settings.tabs.java.java-memory": {
"message": "Vinnsluminni gefið"
},
"instance.settings.tabs.window": {
"message": "Gluggi"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Sérsniðnar gluggastillingar"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Fullur skjár"
},
"instance.settings.tabs.window.height": {
"message": "Hæð"
},
"instance.settings.tabs.window.height.enter": {
"message": "Sláðu inn hæð..."
},
"instance.settings.tabs.window.width": {
"message": "Breidd"
},
"instance.settings.tabs.window.width.enter": {
"message": "Sláðu inn breidd..."
},
"instance.settings.title": {
"message": "Stillingar"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft Netþjónn"
},
"instance.worlds.dont_show_on_home": {
"message": "Ekki sýna á heimasíðu"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "Modalità sviluppatore attiva."
},
"app.settings.downloading": {
"message": "Scaricando v{version}"
},
"app.settings.tabs.appearance": {
"message": "Aspetto"
},
"app.settings.tabs.default-instance-options": {
"message": "Opzioni istanza predefinite"
},
"app.settings.tabs.feature-flags": {
"message": "Flag delle funzionalità"
},
"app.settings.tabs.java-installations": {
"message": "Installazioni Java"
},
"app.settings.tabs.privacy": {
"message": "Privacy"
},
"app.settings.tabs.resource-management": {
"message": "Gestione risorse"
},
"app.update-toast.body": {
"message": "Modrinth App v{version} è pronta per essere installata! Ricarica per aggiornare ora, altrimenti ciò avverrà in automatico alla chiusura di Modrinth App."
},
"app.update-toast.body.download-complete": {
"message": "Modrinth App v{version} è stata scaricata. Ricarica per aggiornare ora, altrimenti ciò avverrà in automatico alla chiusura di Modrinth App."
},
"app.update-toast.body.metered": {
"message": "Modrinth App v{version} è ora disponibile! Poiché sei su una rete a consumo, non l'abbiamo scaricata automaticamente."
},
"app.update-toast.changelog": {
"message": "Changelog"
},
"app.update-toast.download": {
"message": "Scarica ({size})"
},
"app.update-toast.downloading": {
"message": "Scaricando..."
},
"app.update-toast.reload": {
"message": "Ricarica"
},
"app.update-toast.title": {
"message": "Aggiornamento disponibile"
},
"app.update-toast.title.download-complete": {
"message": "Download completato"
},
"app.update.complete-toast.text": {
"message": "Clicca qui per leggere il changelog."
},
"app.update.complete-toast.title": {
"message": "La versione {version} è stata installata con successo!"
},
"app.update.download-update": {
"message": "Scarica aggiornamento"
},
"app.update.downloading-update": {
"message": "Scaricando aggiornamento ({percent}%)"
},
"app.update.reload-to-update": {
"message": "Ricarica per installare aggiornamento"
},
"friends.action.add-friend": {
"message": "Stringi un'amicizia"
},
"friends.action.view-friend-requests": {
"message": "{count} {count, plural, one {richiesta} other {richieste}} d'amicizia"
},
"friends.add-friend.submit": {
"message": "Invia richiesta d'amicizia"
},
"friends.add-friend.title": {
"message": "Stringendo l'amicizia"
},
"friends.add-friend.username.description": {
"message": "Potrebbe essere diverso dal nome utente di Minecraft!"
},
"friends.add-friend.username.placeholder": {
"message": "Inserisci il nome utente Modrinth..."
},
"friends.add-friend.username.title": {
"message": "Con quale utente Modrinth vuoi stringere l'amicizia?"
},
"friends.add-friends-to-share": {
"message": "<link>Stringi un'amicizia</link> per sapere a cosa stanno giocando!"
},
"friends.friend.cancel-request": {
"message": "Annulla richiesta"
},
"friends.friend.remove-friend": {
"message": "Annulla amicizia"
},
"friends.friend.request-sent": {
"message": "Richiesta d'amicizia inviata"
},
"friends.friend.view-profile": {
"message": "Visita profilo"
},
"friends.heading": {
"message": "Amicizie"
},
"friends.heading.active": {
"message": "Attivo"
},
"friends.heading.offline": {
"message": "Offline"
},
"friends.heading.online": {
"message": "Online"
},
"friends.heading.pending": {
"message": "In sospeso"
},
"friends.no-friends-match": {
"message": "Nessuna amicizia pertinente a ''{query}''"
},
"friends.search-friends-placeholder": {
"message": "Cerca amicizie..."
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Accedi all'account Modrinth</link> per stringere amicizie e sapere a cosa stanno giocando!"
},
"instance.add-server.add-and-play": {
"message": "Aggiungi e gioca"
},
"instance.add-server.add-server": {
"message": "Aggiungi server"
},
"instance.add-server.resource-pack.disabled": {
"message": "No"
},
"instance.add-server.resource-pack.enabled": {
"message": "Sì"
},
"instance.add-server.resource-pack.prompt": {
"message": "Chiedi"
},
"instance.add-server.title": {
"message": "Aggiungi server"
},
"instance.edit-server.title": {
"message": "Modifica server"
},
"instance.edit-world.hide-from-home": {
"message": "Nascondi dalla pagina Home"
},
"instance.edit-world.name": {
"message": "Nome"
},
"instance.edit-world.placeholder-name": {
"message": "Mondo di Minecraft"
},
"instance.edit-world.reset-icon": {
"message": "Resetta icona"
},
"instance.edit-world.title": {
"message": "Modifica mondo"
},
"instance.filter.disabled": {
"message": "Progetti disattivati"
},
"instance.filter.updates-available": {
"message": "Aggiornamenti disponibili"
},
"instance.server-modal.address": {
"message": "Indirizzo"
},
"instance.server-modal.name": {
"message": "Nome"
},
"instance.server-modal.placeholder-name": {
"message": "Server di Minecraft"
},
"instance.server-modal.resource-pack": {
"message": "Pacchetto risorse"
},
"instance.settings.tabs.general": {
"message": "Generale"
},
"instance.settings.tabs.general.delete": {
"message": "Elimina istanza"
},
"instance.settings.tabs.general.delete.button": {
"message": "Elimina istanza"
},
"instance.settings.tabs.general.delete.description": {
"message": "Elimina permanentemente un'istanza dal tuo dispositivo, compresi i tuoi mondi, file di configurazione, e tutto il contenuto installato. Fai attenzione: eliminata un'istanza non c'è modo di recuperarla."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Eliminando..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Duplica"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "Impossibile duplicare durante l'installazione."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Duplica istanza"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Crea una copia di questa istanza, compresi mondi, file di configurazione, mod, ecc."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Modifica icona"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Rimuovi icona"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Cambia icona"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Seleziona icona"
},
"instance.settings.tabs.general.library-groups": {
"message": "Gruppi della libreria"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Crea nuovo gruppo"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "I gruppi della libreria ti permettono di organizzare le tue istanze in più sezioni nella tua libreria."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Inserisci il nome del gruppo"
},
"instance.settings.tabs.general.name": {
"message": "Nome"
},
"instance.settings.tabs.hooks": {
"message": "Appigli di lancio"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Appigli di lancio personalizzati"
},
"instance.settings.tabs.hooks.description": {
"message": "Gli appigli, o hook, permettono a utenti avanzati di eseguire comandi di sistema prima e dopo il lancio del gioco."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Post-uscita"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Eseguito dopo la chiusura del gioco."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Inserisci comando post-uscita..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Pre-lancio"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Eseguito prima dell'avvio dell'istanza."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Inserisci comando pre-lancio..."
},
"instance.settings.tabs.hooks.title": {
"message": "Appigli all'avvio del gioco"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrapper"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Comando wrapper per avviare Minecraft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Inserisci comando wrapper..."
},
"instance.settings.tabs.installation": {
"message": "Installazione"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} per Minecraft {game_version} è già installato"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} è già installata"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Cambia versione"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Installa"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Installando"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Ottenendo versioni del modpack"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Installando nuova versione"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Già installato"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Informazioni per il debug:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Ottenendo dettagli del modpack"
},
"instance.settings.tabs.installation.game-version": {
"message": "Versione del gioco"
},
"instance.settings.tabs.installation.install": {
"message": "Installa"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Installazione in corso"
},
"instance.settings.tabs.installation.loader-version": {
"message": "Versione di {loader}"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "Non è stato possibile ottenere i dettagli del modpack collegato. Si prega di verificare la connessione a internet."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} non è disponibile per Minecraft {version}. Prova un altro loader."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "L'istanza è collegata a un modpack, ma non è stato possibile trovarlo su Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Piattaforma"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Reinstalla modpack"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Reinstallando modpack"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "La reinstallazione resetterà tutto il contenuto installato o modificato a ciò che è fornito dal modpack, rimuovendo ogni mod o contenuto che tu abbia aggiunto all'installazione originale. Questo potrebbe risolvere comportamenti inaspettati se ci sono state modifiche all'istanza, ma se ora i tuoi mondi dipendessero da contenuto aggiuntivo installato, essi verrebbero corrotti."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Vuoi davvero reinstallare questa istanza?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "Resetta il contenuto dell'istanza al suo stato originale, rimuovendo ogni mod o contenuto che tu abbia aggiunto al modpack originale."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Reinstalla modpack"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Ripara"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Riparando"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "La riparazione reinstalla le dipendenze di Minecraft e verifica eventuali corruzioni. Questo potrebbe risolvere problemi di avvio del gioco se dovuti a errori legati al launcher, ma non risolverà problemi o crash legati alle mod installate."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Riparare l'istanza?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Riparazione in corso"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Resetta a corrente"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Mostra tutte le versioni"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "cambia versione"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "installa"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "reinstalla"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "ripara"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "Impossibile {action} durante l'installazione"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "Impossibile {action} senza connessione"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "Impossibile {action} durante la riparazione"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(versione sconosciuta)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Scollega istanza"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "Se procedi, non potrai ricollegarla senza creare una nuova istanza da zero. Non riceverai più aggiornamenti dal modpack e diventerà una normale installazione."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Vuoi davvero scollegare questa istanza?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Questa istanza è collegata a un modpack, cioè le mod non possono essere aggiornate manualmente, e non puoi cambiare loader di mod né versione di Minecraft. Lo scollegamento disconnetterà definitivamente questa istanza dal modpack."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Scollega dal modpack"
},
"instance.settings.tabs.java": {
"message": "Java e memoria"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Variabili d'ambiente"
},
"instance.settings.tabs.java.hooks": {
"message": "Appigli"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Argomenti Java"
},
"instance.settings.tabs.java.java-installation": {
"message": "Installazione Java"
},
"instance.settings.tabs.java.java-memory": {
"message": "Memoria allocata"
},
"instance.settings.tabs.window": {
"message": "Finestra"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Personalizza le opzioni della finestra"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Schermo intero"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Fa in modo che il gioco si avvii a schermo intero (tramite options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Altezza"
},
"instance.settings.tabs.window.height.description": {
"message": "L'altezza della finestra del gioco all'avvio."
},
"instance.settings.tabs.window.height.enter": {
"message": "Inserisci altezza..."
},
"instance.settings.tabs.window.width": {
"message": "Larghezza"
},
"instance.settings.tabs.window.width.description": {
"message": "La larghezza della finestra del gioco all'avvio."
},
"instance.settings.tabs.window.width.enter": {
"message": "Inserisci larghezza..."
},
"instance.settings.title": {
"message": "Impostazioni"
},
"instance.worlds.a_minecraft_server": {
"message": "Un Server Minecraft"
},
"instance.worlds.cant_connect": {
"message": "Impossibile connettersi al server"
},
"instance.worlds.copy_address": {
"message": "Copia indirizzo"
},
"instance.worlds.dont_show_on_home": {
"message": "Non mostrare nella Home"
},
"instance.worlds.filter.available": {
"message": "Disponibile"
},
"instance.worlds.game_already_open": {
"message": "Istanza già aperta"
},
"instance.worlds.hardcore": {
"message": "Modalità estrema"
},
"instance.worlds.incompatible_server": {
"message": "Server non è compatibile"
},
"instance.worlds.no_contact": {
"message": "Impossibile contattare il server"
},
"instance.worlds.no_server_quick_play": {
"message": "È possibile avviare direttamente un server solo su Minecraft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "È possibile avviare direttamente un mondo in Giocatore Singolo solo su Minecraft 1.20+"
},
"instance.worlds.play_instance": {
"message": "Gioca istanza"
},
"instance.worlds.type.server": {
"message": "Server"
},
"instance.worlds.type.singleplayer": {
"message": "Giocatore Singolo"
},
"instance.worlds.view_instance": {
"message": "Mostra istanza"
},
"instance.worlds.world_in_use": {
"message": "Mondo già in uso"
},
"search.filter.locked.instance": {
"message": "Fornito dall'istanza"
},
"search.filter.locked.instance-game-version.title": {
"message": "La versione del gioco è fornita dall'istanza"
},
"search.filter.locked.instance-loader.title": {
"message": "Il loader è fornito dall'istanza"
},
"search.filter.locked.instance.sync": {
"message": "Sincronizza con l'istanza"
}
}

View File

@@ -0,0 +1,527 @@
{
"app.settings.developer-mode-enabled": {
"message": "開発者モードがオンになっています。"
},
"app.settings.downloading": {
"message": "v{version}をダウンロード中"
},
"app.settings.tabs.appearance": {
"message": "外観"
},
"app.settings.tabs.default-instance-options": {
"message": "インスタンスの基本設定"
},
"app.settings.tabs.feature-flags": {
"message": "機能設定"
},
"app.settings.tabs.java-installations": {
"message": "Javaのインストール"
},
"app.settings.tabs.privacy": {
"message": "プライバシー"
},
"app.settings.tabs.resource-management": {
"message": "リソース管理"
},
"app.update-toast.body": {
"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}は今すぐダウンロードできます!従量課金制ネットワークを使用しているため自動でダウンロードはされていません。"
},
"app.update-toast.changelog": {
"message": "更新履歴"
},
"app.update-toast.download": {
"message": "ダウンロード ({size})"
},
"app.update-toast.downloading": {
"message": "ダウンロード中..."
},
"app.update-toast.reload": {
"message": "再起動"
},
"app.update-toast.title": {
"message": "アップデートが可能"
},
"app.update-toast.title.download-complete": {
"message": "ダウンロード完了"
},
"app.update.complete-toast.text": {
"message": "クリックすると更新履歴を表示できます。"
},
"app.update.complete-toast.title": {
"message": "バージョン {version} のインストールが正常に完了しました!"
},
"app.update.download-update": {
"message": "アップデートをダウンロード"
},
"app.update.downloading-update": {
"message": "アップデートをダウンロード中 ({percent}%)"
},
"app.update.reload-to-update": {
"message": "再起動して今すぐ更新"
},
"friends.action.add-friend": {
"message": "フレンドを追加"
},
"friends.action.view-friend-requests": {
"message": "{count}件の友達リクエスト"
},
"friends.add-friend.submit": {
"message": "フレンド申請を送信"
},
"friends.add-friend.title": {
"message": "フレンドを追加中"
},
"friends.add-friend.username.description": {
"message": "これはMinecraftユーザーネームと違う可能性があります"
},
"friends.add-friend.username.placeholder": {
"message": "Modrinthユーザーネームを入力..."
},
"friends.add-friend.username.title": {
"message": "あなたのフレンドのModrinthユーザーネームは何ですか"
},
"friends.add-friends-to-share": {
"message": "<link>友達を追加</link>して、彼らが何をしているか見てみよう!"
},
"friends.friend.cancel-request": {
"message": "申請をキャンセル"
},
"friends.friend.remove-friend": {
"message": "フレンドを削除"
},
"friends.friend.request-sent": {
"message": "フレンド申請が送信されました"
},
"friends.friend.view-profile": {
"message": "プロフィールを表示"
},
"friends.heading": {
"message": "フレンド"
},
"friends.heading.active": {
"message": "活動中"
},
"friends.heading.offline": {
"message": "オフライン"
},
"friends.heading.online": {
"message": "オンライン"
},
"friends.heading.pending": {
"message": "保留中"
},
"friends.no-friends-match": {
"message": "フレンド\"{query}\"は見つかりませんでした"
},
"friends.search-friends-placeholder": {
"message": "フレンドを検索…"
},
"friends.section.heading": {
"message": "{title} - {count}"
},
"friends.sign-in-to-add-friends": {
"message": "<link>Modrinthアカウントにサインイン</link>して友達を追加し、彼らがプレイしているゲームをチェックしよう!"
},
"instance.add-server.add-and-play": {
"message": "追加してプレイ"
},
"instance.add-server.add-server": {
"message": "サーバーを追加する"
},
"instance.add-server.resource-pack.disabled": {
"message": "無効"
},
"instance.add-server.resource-pack.enabled": {
"message": "有効"
},
"instance.add-server.resource-pack.prompt": {
"message": "毎回確認"
},
"instance.add-server.title": {
"message": "サーバーの追加"
},
"instance.edit-server.title": {
"message": "サーバーを編集する"
},
"instance.edit-world.hide-from-home": {
"message": "ホームページから非表示にする"
},
"instance.edit-world.name": {
"message": "名前"
},
"instance.edit-world.placeholder-name": {
"message": "Mincraft ワールド"
},
"instance.edit-world.reset-icon": {
"message": "アイコンをリセット"
},
"instance.edit-world.title": {
"message": "ワールドを編集"
},
"instance.filter.disabled": {
"message": "無効なプロジェクト"
},
"instance.filter.updates-available": {
"message": "アップデートが可能"
},
"instance.server-modal.address": {
"message": "アドレス"
},
"instance.server-modal.name": {
"message": "名前"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraftサーバー"
},
"instance.server-modal.resource-pack": {
"message": "リソースパック"
},
"instance.settings.tabs.general": {
"message": "一般"
},
"instance.settings.tabs.general.delete": {
"message": "インスタンスを削除"
},
"instance.settings.tabs.general.delete.button": {
"message": "インスタンスを削除"
},
"instance.settings.tabs.general.delete.description": {
"message": "デバイスからインスタンスを削除します。これらには、ワールド、設定、他、全てのインストール済みのファイルが含まれます。インスタンスを削除すると復元することはできません。"
},
"instance.settings.tabs.general.deleting.button": {
"message": "削除中…"
},
"instance.settings.tabs.general.duplicate-button": {
"message": "複製"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "インストール中に複製することはできません。"
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "インスタンスを複製"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "ワールド、設定、Mod等を含めたインスタンスのコピーを作成します。"
},
"instance.settings.tabs.general.edit-icon": {
"message": "アイコンを編集"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "アイコンを削除"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "アイコンを置き換え"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "アイコンを選択"
},
"instance.settings.tabs.general.library-groups": {
"message": "ライブラリグループ"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "新しいグループを作成"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "ライブラリグループを使用することで、インスタンスをライブラリ内で整理することができます。"
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "グループ名を入力"
},
"instance.settings.tabs.general.name": {
"message": "名前"
},
"instance.settings.tabs.hooks": {
"message": "起動フック"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "カスタム起動フック"
},
"instance.settings.tabs.hooks.description": {
"message": "フックを使用して、ゲームの起動前後にシステムコマンドを実行するようにできます。"
},
"instance.settings.tabs.hooks.post-exit": {
"message": "終了後"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "ゲームが閉じられた後に実行されます。"
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "終了後のコマンドを入力"
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "起動前"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "ゲームが起動する前に実行されます。"
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "起動前のコマンドを入力"
},
"instance.settings.tabs.hooks.title": {
"message": "ゲーム起動フック"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "ラッパー"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Minecraftを起動用のラッパーコマンド。"
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "ラッパーのコマンドを入力…"
},
"instance.settings.tabs.installation": {
"message": "インストール"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "Minecraft {game_version} の {platform} {version} はすでにインストールされています"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} はすでにインストールされています"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "バージョンを変更"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "インストール"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "インストール中"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "ModPackのバージョンを取得しています"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "新しいバージョンをインストール中"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "インストール済"
},
"instance.settings.tabs.installation.debug-information": {
"message": "デバッグ情報:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "ModPackの情報を取得しています"
},
"instance.settings.tabs.installation.game-version": {
"message": "ゲームバージョン"
},
"instance.settings.tabs.installation.install": {
"message": "インストール"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "インストール中"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} バージョン"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "リンクされたModpackの情報が取得できませんでした。インターネット接続を確認してください。"
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader}はMinecraft {version}で使用できません。別のローダーを選択してください。"
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "このインスタンスはModpackにリンクされていますが、ModrinthではModpackが見つかりません。"
},
"instance.settings.tabs.installation.platform": {
"message": "プラットフォーム"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Modpackを再インストール"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Modpackを再インストール中"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "再インストールすると、全てのコンテンツがModpackで提供される内容にリセットされ、元のコンテンツに追加されたMod等やコンテンツは全て削除されます。インスタンスに変更を加えていた場合、予期せぬ動作が修正がされる場合がありますが、ワールドが追加でインストールされたコンテンツに依存している場合、既存のワールドで動かなくなる可能性があります。"
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "本当にインスタンスを再インストールしますか?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "インスタンスの状態をもとの状態にリセットし、元のModpackに追加されたModやコンテンツ等を削除します。"
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Modpackを再インストール"
},
"instance.settings.tabs.installation.repair.button": {
"message": "修復"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "修復中"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "修復を行うと、Minecraftの依存関係が再インストールされ、破損がないかのチェックが行われます。ランチャー関連の問題の場合は、修復によって解決する可能性がありますが、インストール済みのModに関する問題は解決されません。"
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "インスタンスを修復しますか?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "修復中"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "現在の状態にリセット"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "全てのバージョンを表示"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "バージョンを変更"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "インストール"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "再インストール"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "修復"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "インストール中に{action}することはできません"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "オフラインの時に{action}することはできません"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "修復中に{action}することはできません"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(不明なバージョン)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "インスタンスのリンク解除"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "この操作を行うと、新しいインスタンスを作らなければ再びリンクすることはできなくなります。通常のインスタンスになるので、modpackのバージョンアップは利用できなくなります。"
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "本当にインスタンスのリンクを解除しますか?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "このインスタンスはmodpackにリンクされているので、modやmodローダー、Minecraftのバージョンを変更することはできません。リンクを解除するとこのインスタンスとmodpackは永久に分離されます。"
},
"instance.settings.tabs.installation.unlink.title": {
"message": "modpackとのリンクを解除する"
},
"instance.settings.tabs.java": {
"message": "Javaとメモリ"
},
"instance.settings.tabs.java.environment-variables": {
"message": "環境変数"
},
"instance.settings.tabs.java.hooks": {
"message": "フック"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java コマンドライン引数"
},
"instance.settings.tabs.java.java-installation": {
"message": "Javaのインストール"
},
"instance.settings.tabs.java.java-memory": {
"message": "メモリ割り当て量"
},
"instance.settings.tabs.window": {
"message": "ウィンドウ"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "カスタムウィンドウ設定"
},
"instance.settings.tabs.window.fullscreen": {
"message": "フルスクリーン"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "起動時に全画面で起動するようにします。(options.txtを使用)"
},
"instance.settings.tabs.window.height": {
"message": "高さ"
},
"instance.settings.tabs.window.height.description": {
"message": "起動時のゲームウィンドウの高さ。"
},
"instance.settings.tabs.window.height.enter": {
"message": "高さを入力…"
},
"instance.settings.tabs.window.width": {
"message": "幅"
},
"instance.settings.tabs.window.width.description": {
"message": "起動時のゲームウィンドウの幅。"
},
"instance.settings.tabs.window.width.enter": {
"message": "幅を入力…"
},
"instance.settings.title": {
"message": "設定"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraftサーバー"
},
"instance.worlds.cant_connect": {
"message": "サーバーに接続できません"
},
"instance.worlds.copy_address": {
"message": "アドレスをコピー"
},
"instance.worlds.dont_show_on_home": {
"message": "ホームに表示しない"
},
"instance.worlds.filter.available": {
"message": "利用可能"
},
"instance.worlds.game_already_open": {
"message": "インスタンスは既に開いています"
},
"instance.worlds.hardcore": {
"message": "ハードコアモード"
},
"instance.worlds.incompatible_server": {
"message": "サーバーに互換性がありません"
},
"instance.worlds.no_contact": {
"message": "サーバーに接続できませんでした"
},
"instance.worlds.no_server_quick_play": {
"message": "サーバーに直接入ることができるのはMinecraft Alpha 1.0.5以降です"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Minecraft 1.20以降はシングルプレイヤーワールドのみに直接入ることができます"
},
"instance.worlds.play_instance": {
"message": "インスタンスを起動"
},
"instance.worlds.type.server": {
"message": "サーバー"
},
"instance.worlds.type.singleplayer": {
"message": "シングルプレイ"
},
"instance.worlds.view_instance": {
"message": "インスタンスを表示する"
},
"instance.worlds.world_in_use": {
"message": "ワールドは使用中"
},
"search.filter.locked.instance": {
"message": "インスタンスより提供"
},
"search.filter.locked.instance-game-version.title": {
"message": "ゲームバージョンはインスタンスより提供"
},
"search.filter.locked.instance-loader.title": {
"message": "ローダーはインスタンスにより提供"
},
"search.filter.locked.instance.sync": {
"message": "インスタンスと同期"
}
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,434 @@
{
"app.settings.developer-mode-enabled": {
"message": "개발자 모드가 활성화되어 있습니다."
},
"app.settings.downloading": {
"message": "v{version} 다운로드 중"
},
"app.settings.tabs.appearance": {
"message": "모양"
},
"app.settings.tabs.default-instance-options": {
"message": "인스턴스 기본 옵션"
},
"app.settings.tabs.feature-flags": {
"message": "기능 플래그"
},
"app.settings.tabs.java-installations": {
"message": "Java 설치"
},
"app.settings.tabs.privacy": {
"message": "개인정보 보호"
},
"app.settings.tabs.resource-management": {
"message": "리소스 관리"
},
"app.update-toast.changelog": {
"message": "변경사항"
},
"app.update-toast.download": {
"message": "다운로드 ({size})"
},
"app.update-toast.downloading": {
"message": "다운로드 중..."
},
"app.update-toast.reload": {
"message": "리로드"
},
"instance.add-server.add-and-play": {
"message": "추가하고 플레이"
},
"instance.add-server.add-server": {
"message": "서버 추가"
},
"instance.add-server.resource-pack.disabled": {
"message": "비활성화"
},
"instance.add-server.resource-pack.enabled": {
"message": "활성화"
},
"instance.add-server.resource-pack.prompt": {
"message": "물어보기"
},
"instance.add-server.title": {
"message": "서버 추가"
},
"instance.edit-server.title": {
"message": "서버 편집"
},
"instance.edit-world.hide-from-home": {
"message": "홈 화면에서 숨기기"
},
"instance.edit-world.name": {
"message": "이름"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft 세계"
},
"instance.edit-world.reset-icon": {
"message": "아이콘 재설정"
},
"instance.edit-world.title": {
"message": "세계 편집"
},
"instance.filter.disabled": {
"message": "비활성화된 프로젝트"
},
"instance.filter.updates-available": {
"message": "업데이트 가능"
},
"instance.server-modal.address": {
"message": "주소"
},
"instance.server-modal.name": {
"message": "이름"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft 서버"
},
"instance.server-modal.resource-pack": {
"message": "리소스 팩"
},
"instance.settings.tabs.general": {
"message": "일반"
},
"instance.settings.tabs.general.delete": {
"message": "인스턴스 삭제"
},
"instance.settings.tabs.general.delete.button": {
"message": "인스턴스 삭제"
},
"instance.settings.tabs.general.delete.description": {
"message": "기기에서 인스턴스를 완전히 삭제합니다. 월드, 설정, 설치된 모든 콘텐츠가 함께 제거됩니다. 주의하세요, 한 번 삭제하면 인스턴스를 복구할 방법은 없습니다."
},
"instance.settings.tabs.general.deleting.button": {
"message": "삭제중..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "복제"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "설치중에는 복제할 수 없습니다."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "인스턴스 복제"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "인스턴스의 복사본을 생성합니다. 월드, 설정, 모드, 기타 등등도 함께 복사됩니다."
},
"instance.settings.tabs.general.edit-icon": {
"message": "아이콘 수정"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "아이콘 제거"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "아이콘 대체"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "아이콘 선택"
},
"instance.settings.tabs.general.library-groups": {
"message": "라이브러리 그룹"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "새 그룹 만들기"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "라이브러리 그룹을 사용하면 라이브러리 내에서 인스턴스를 서로 다른 섹션으로 구성할 수 있습니다."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "그룹 이름 입력"
},
"instance.settings.tabs.general.name": {
"message": "이름"
},
"instance.settings.tabs.hooks": {
"message": "실행 후크"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "사용자 지정 실행 후크"
},
"instance.settings.tabs.hooks.description": {
"message": "후크 기능을 사용하면 고급 사용자가 게임을 실행하기 전후에 특정 시스템 명령을 실행할 수 있습니다."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "종료 후"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "게임이 꺼진 후 실행됩니다."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "종료 후 명령어 입력..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "실행 전"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "인스턴스를 켜기 전에 실행됩니다."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "실행 전 명령어 입력..."
},
"instance.settings.tabs.hooks.title": {
"message": "게임 실행 후크"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "래퍼"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Minecraft를 실행을 위한 래퍼 명령어 입니다."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "래퍼 명령어 입력..."
},
"instance.settings.tabs.installation": {
"message": "설치"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "Minecraft {game_version} {platform} {version} 설치됨"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "바닐라 {game_version} 설치됨"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "버전 변경"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "설치"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "설치 중"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "모드팩 버전을 가져오는 중"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "새 버전을 설치하는 중"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "현재 설치됨"
},
"instance.settings.tabs.installation.debug-information": {
"message": "디버그 정보:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "모드팩 세부 정보를 가져오는 중"
},
"instance.settings.tabs.installation.game-version": {
"message": "게임 버전"
},
"instance.settings.tabs.installation.install": {
"message": "설치"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "설치가 진행중입니다"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} 버전"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecraft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "연결된 모드팩의 세부 정보를 가져올 수 없습니다. 인터넷 연결 상태를 확인하세요."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader}(은)는 Minecraft {version}에서 사용할 수 없습니다. 다른 모드 로더를 사용하세요."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "이 인스턴스가 모드팩에 연결되어 있지만, 모드팩을 Modrinth에서 찾을 수 없습니다."
},
"instance.settings.tabs.installation.platform": {
"message": "플랫폼"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "모드팩 재설치"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "모드팩 재설치 중"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "재설치하면 설치 또는 수정된 모든 콘텐츠가 모드팩에서 제공하는 콘텐츠로 초기화되며, 기존 팩에 추가한 모드나 콘텐츠는 모두 제거됩니다. 인스턴스에 변경 사항이 있는 경우 예상치 못한 동작은 해결할 수 있지만, 현재 월드가 추가로 설치된 콘텐츠에 의존하고 있다면 기존 월드가 손상될 수 있습니다."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "정말로 이 인스턴스를 다시 설치하시겠습니까?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "인스턴스를 초기 상태로 복원하고, 원본 모드팩에 추가된 모드나 콘텐츠를 모두 제거합니다."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "모드팩 재설치"
},
"instance.settings.tabs.installation.repair.button": {
"message": "복구"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "복구 중"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "복구 시 Minecraft 의존성을 재설치하고 무결성을 검사합니다. 런처 오류로 인해 게임이 실행되지 않을 경우 문제 해결에 도움이 될 수 있지만, 설치된 모드로 인한 오류나 충돌은 해결되지 않습니다."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "인스턴스를 복구하시겠습니까?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "복구 진행 중"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "현재 상태로 되돌리기"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "모든 버전 보이기"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "버전 변경"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "설치"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "재설치"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "복구"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "설치 중에는 {action} 할 수 없음"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "오프라인 상태에서는 {action} 할 수 없음"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "복구 중에는 {action} 할 수 없음"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(알 수 없는 버전)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "인스턴스 연결 해제"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "계속 진행하면 새 인스턴스를 만들지 않는 한 다시 연결할 수 없습니다. 또한 모드팩 업데이트를 더 이상 받을 수 없으며, 일반 인스턴스로 전환됩니다."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "정말로 이 인스턴스의 연결을 해제하시겠습니까?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "이 인스턴스는 모드팩에 연결되어 있으므로, 모드를 개별적으로 업데이트하거나 모드 로더 및 Minecraft 버전을 변경할 수 없습니다. 연결을 해제하면 이 인스턴스는 모드팩과 영구적으로 분리됩니다."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "모드팩에서 연결 해제"
},
"instance.settings.tabs.java": {
"message": "Java 및 메모리"
},
"instance.settings.tabs.java.environment-variables": {
"message": "환경 변수"
},
"instance.settings.tabs.java.hooks": {
"message": "후크"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Java 매개변수"
},
"instance.settings.tabs.java.java-installation": {
"message": "Java 설치"
},
"instance.settings.tabs.java.java-memory": {
"message": "할당된 메모리"
},
"instance.settings.tabs.window": {
"message": "창"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "사용자 지정 창 설정 활성화"
},
"instance.settings.tabs.window.fullscreen": {
"message": "전체 화면"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "게임을 전체 화면으로 시작합니다. (options.txt 사용)"
},
"instance.settings.tabs.window.height": {
"message": "높이"
},
"instance.settings.tabs.window.height.description": {
"message": "게임 시작 시 창 높이입니다."
},
"instance.settings.tabs.window.height.enter": {
"message": "높이 입력..."
},
"instance.settings.tabs.window.width": {
"message": "너비"
},
"instance.settings.tabs.window.width.description": {
"message": "게임 시작 시 창 너비입니다."
},
"instance.settings.tabs.window.width.enter": {
"message": "너비 입력..."
},
"instance.settings.title": {
"message": "설정"
},
"instance.worlds.a_minecraft_server": {
"message": "Minecraft 서버"
},
"instance.worlds.cant_connect": {
"message": "서버에 연결할 수 없음"
},
"instance.worlds.copy_address": {
"message": "주소 복사"
},
"instance.worlds.dont_show_on_home": {
"message": "홈에서 숨기기"
},
"instance.worlds.filter.available": {
"message": "이용 가능"
},
"instance.worlds.game_already_open": {
"message": "인스턴스가 이미 실행중입니다"
},
"instance.worlds.hardcore": {
"message": "하드코어 모드"
},
"instance.worlds.incompatible_server": {
"message": "서버가 호환되지 않음"
},
"instance.worlds.no_contact": {
"message": "서버가 응답하지 않음"
},
"instance.worlds.no_server_quick_play": {
"message": "Minecraft 알파 1.0.5 이후 버전에서만 서버에 바로 진입할 수 있습니다."
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "Minecraft 1.20 이후 버전에서만 싱글플레이 세계로 바로 진입할 수 있습니다."
},
"instance.worlds.play_instance": {
"message": "인스턴스 플레이"
},
"instance.worlds.type.server": {
"message": "서버"
},
"instance.worlds.type.singleplayer": {
"message": "싱글 플레이"
},
"instance.worlds.view_instance": {
"message": "인스턴스 보기"
},
"instance.worlds.world_in_use": {
"message": "사용중인 월드"
},
"search.filter.locked.instance": {
"message": "인스턴스에서 관리"
},
"search.filter.locked.instance-game-version.title": {
"message": "인스턴스가 게임 버전을 관리합니다"
},
"search.filter.locked.instance-loader.title": {
"message": "인스턴스가 로더를 관리합니다"
},
"search.filter.locked.instance.sync": {
"message": "인스턴스와 동기화"
}
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,419 @@
{
"app.settings.developer-mode-enabled": {
"message": "Dev mode iz on."
},
"app.settings.tabs.appearance": {
"message": "Lookz"
},
"app.settings.tabs.default-instance-options": {
"message": "Defawlt instanz opshuns"
},
"app.settings.tabs.feature-flags": {
"message": "Feeechurrr flaaagz"
},
"app.settings.tabs.java-installations": {
"message": "Jawa installz"
},
"app.settings.tabs.privacy": {
"message": "Pwiwacy"
},
"app.settings.tabs.resource-management": {
"message": "Managez da stuffz"
},
"instance.add-server.add-and-play": {
"message": "Plop n playz"
},
"instance.add-server.add-server": {
"message": "Gimme servah"
},
"instance.add-server.resource-pack.disabled": {
"message": "Offd modez"
},
"instance.add-server.resource-pack.enabled": {
"message": "Ond modez"
},
"instance.add-server.resource-pack.prompt": {
"message": "Askz"
},
"instance.add-server.title": {
"message": "Addin' new servah"
},
"instance.edit-server.title": {
"message": "Tweak servah"
},
"instance.edit-world.hide-from-home": {
"message": "Hush on da frontie"
},
"instance.edit-world.name": {
"message": "Naem"
},
"instance.edit-world.placeholder-name": {
"message": "Minecwaft wrold"
},
"instance.edit-world.reset-icon": {
"message": "Resetz iconz"
},
"instance.edit-world.title": {
"message": "Tweak da landz"
},
"instance.filter.disabled": {
"message": "No worky projectz"
},
"instance.filter.updates-available": {
"message": "Fun patchez here"
},
"instance.server-modal.address": {
"message": "Placey"
},
"instance.server-modal.name": {
"message": "Naem"
},
"instance.server-modal.placeholder-name": {
"message": "Minecwaft servah"
},
"instance.server-modal.resource-pack": {
"message": "Resource Packz"
},
"instance.settings.tabs.general": {
"message": "Generulz"
},
"instance.settings.tabs.general.delete": {
"message": "Shoo away instansh"
},
"instance.settings.tabs.general.delete.button": {
"message": "Shoo away instansh"
},
"instance.settings.tabs.general.delete.description": {
"message": "Fur-ever zaps da instansh frum ur device, inkluding all ur worldz, configz, n shiny stuffz. Be careful hooman, once u zapp it, no can haz it back."
},
"instance.settings.tabs.general.deleting.button": {
"message": "Deletin'..."
},
"instance.settings.tabs.general.duplicate-button": {
"message": "Cloney"
},
"instance.settings.tabs.general.duplicate-button.tooltip.installing": {
"message": "No can haz cloney while installin'."
},
"instance.settings.tabs.general.duplicate-instance": {
"message": "Cloney instansh"
},
"instance.settings.tabs.general.duplicate-instance.description": {
"message": "Makez a cloney-clone of dis instansh, inkluding worldz, configz, tweakiez, n all da shiny stuffz."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Tweak iconz"
},
"instance.settings.tabs.general.edit-icon.remove": {
"message": "Shoo away iconz"
},
"instance.settings.tabs.general.edit-icon.replace": {
"message": "Swap iconz"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Choose da iconz"
},
"instance.settings.tabs.general.library-groups": {
"message": "Bookz gang"
},
"instance.settings.tabs.general.library-groups.create": {
"message": "Makez bookz gang"
},
"instance.settings.tabs.general.library-groups.description": {
"message": "Bookz gang lets u sort ur instansh into diffnt sectionz in ur library."
},
"instance.settings.tabs.general.library-groups.enter-name": {
"message": "Type gang namez"
},
"instance.settings.tabs.general.name": {
"message": "Naem"
},
"instance.settings.tabs.hooks": {
"message": "Hooky thingz"
},
"instance.settings.tabs.hooks.custom-hooks": {
"message": "Purrsonal hookz thingz"
},
"instance.settings.tabs.hooks.description": {
"message": "Hookz lets smrt hoomanz run special system thingz befur n after startin da game."
},
"instance.settings.tabs.hooks.post-exit": {
"message": "Aftah leevin"
},
"instance.settings.tabs.hooks.post-exit.description": {
"message": "Did a runny-run aftah da game go bye-bye."
},
"instance.settings.tabs.hooks.post-exit.enter": {
"message": "Type aftah-game magic thingy..."
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Before game go"
},
"instance.settings.tabs.hooks.pre-launch.description": {
"message": "Did a runny-run befurr da instansh go zoom."
},
"instance.settings.tabs.hooks.pre-launch.enter": {
"message": "Type runny-run befurr magic thingy..."
},
"instance.settings.tabs.hooks.title": {
"message": "Gaem hooky thingz"
},
"instance.settings.tabs.hooks.wrapper": {
"message": "Wrappah"
},
"instance.settings.tabs.hooks.wrapper.description": {
"message": "Wrappah magic thingy to blast-off Minecwaft."
},
"instance.settings.tabs.hooks.wrapper.enter": {
"message": "Type Wrappah thingy..."
},
"instance.settings.tabs.installation": {
"message": "Setupzy"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} fur Minecwaft {game_version} iz already snug in da box"
},
"instance.settings.tabs.installation.change-version.already-installed.vanilla": {
"message": "Vanilla {game_version} iz already snug in da box"
},
"instance.settings.tabs.installation.change-version.button": {
"message": "Flip flop verzhun"
},
"instance.settings.tabs.installation.change-version.button.install": {
"message": "Setupzy time"
},
"instance.settings.tabs.installation.change-version.button.installing": {
"message": "Setupzy in progress"
},
"instance.settings.tabs.installation.change-version.cannot-while-fetching": {
"message": "Grabbin modpackz verzhun"
},
"instance.settings.tabs.installation.change-version.in-progress": {
"message": "Setupzy da fresh verzhun"
},
"instance.settings.tabs.installation.currently-installed": {
"message": "Right meow setupzy"
},
"instance.settings.tabs.installation.debug-information": {
"message": "Trouble sniffin info:"
},
"instance.settings.tabs.installation.fetching-modpack-details": {
"message": "Grabbin modpack deetz"
},
"instance.settings.tabs.installation.game-version": {
"message": "Gamey verzhun"
},
"instance.settings.tabs.installation.install": {
"message": "Setupzy time"
},
"instance.settings.tabs.installation.install.in-progress": {
"message": "Setupzy goin on"
},
"instance.settings.tabs.installation.loader-version": {
"message": "{loader} verzhun"
},
"instance.settings.tabs.installation.minecraft-version": {
"message": "Minecwaft {version}"
},
"instance.settings.tabs.installation.no-connection": {
"message": "No can haz linked modpack deetz. Check ur shiny hooman webz."
},
"instance.settings.tabs.installation.no-loader-versions": {
"message": "{loader} iz no can haz fur Minecwaft {version}. Try anudda mody-loady thingy."
},
"instance.settings.tabs.installation.no-modpack-found": {
"message": "Dis instansh iz linked to a modpackz, but da modpackz iz no can haz on Modrinth."
},
"instance.settings.tabs.installation.platform": {
"message": "Platfurrm"
},
"instance.settings.tabs.installation.reinstall.button": {
"message": "Snuggly modpackz redo"
},
"instance.settings.tabs.installation.reinstall.button.reinstalling": {
"message": "Snuggly modpackz redo in progress"
},
"instance.settings.tabs.installation.reinstall.confirm.description": {
"message": "Redoing da snuggly tweakie bundlez will reset all da stuffz u added or changed back to what da tweakie bundle givz, removin any extra modz or shiny contentz u plopped on top. It may fix da oopsies if da instansh iz borked, but if ur worldz need ur extra stuffz, it might break dem."
},
"instance.settings.tabs.installation.reinstall.confirm.title": {
"message": "Iz u sure u wanna reinstall dis instansh?"
},
"instance.settings.tabs.installation.reinstall.description": {
"message": "I iz gonna reset mah stuffz bak to da way it wuz! All ur fancy add-onz? Gone! Just da original tweakie bundle againz."
},
"instance.settings.tabs.installation.reinstall.title": {
"message": "Snuggly modpackz redo"
},
"instance.settings.tabs.installation.repair.button": {
"message": "Fixy-fix"
},
"instance.settings.tabs.installation.repair.button.repairing": {
"message": "Fixy-fixin"
},
"instance.settings.tabs.installation.repair.confirm.description": {
"message": "Fixy-fixin reinstalls all da Minecwaft stuffz it needs and checks if anythin iz borked. It may fix da oopsies if da game no start cause of launcher stuff, but it wont fix borked modz or crashy gamez."
},
"instance.settings.tabs.installation.repair.confirm.title": {
"message": "Fixy-fix dis instansh?"
},
"instance.settings.tabs.installation.repair.in-progress": {
"message": "Fixy-fixin goin on"
},
"instance.settings.tabs.installation.reset-selections": {
"message": "Go bakk to right meow"
},
"instance.settings.tabs.installation.show-all-versions": {
"message": "Show all da verzhun"
},
"instance.settings.tabs.installation.tooltip.action.change-version": {
"message": "pick new shiny verzhun"
},
"instance.settings.tabs.installation.tooltip.action.install": {
"message": "setupzy"
},
"instance.settings.tabs.installation.tooltip.action.reinstall": {
"message": "snuggly redo"
},
"instance.settings.tabs.installation.tooltip.action.repair": {
"message": "fixy-fix"
},
"instance.settings.tabs.installation.tooltip.cannot-while-installing": {
"message": "No can haz {action} while setupzy goin on"
},
"instance.settings.tabs.installation.tooltip.cannot-while-offline": {
"message": "No can haz {action} while hooman webz iz sleepin"
},
"instance.settings.tabs.installation.tooltip.cannot-while-repairing": {
"message": "No can haz {action} while fixy-fixin"
},
"instance.settings.tabs.installation.unknown-version": {
"message": "(kitteh dunno verzhun)"
},
"instance.settings.tabs.installation.unlink.button": {
"message": "Break da instansh link"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
"message": "If u go furder, no can haz re-link til u make a brand new instansh. U wont get shiny modpack updatez no more, n it will become a plain ol instansh."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "R u sure u wanna break da instansh link?"
},
"instance.settings.tabs.installation.unlink.description": {
"message": "Dis instansh iz linked to a tweakie bundlez, which means modz no can haz updates and u no can change da mod loader or Minecwaft version. Unlinkin will fur-ever disconnect dis instansh from da tweakie bundle."
},
"instance.settings.tabs.installation.unlink.title": {
"message": "Break modpack tie"
},
"instance.settings.tabs.java": {
"message": "Jawa and memowy"
},
"instance.settings.tabs.java.environment-variables": {
"message": "Env pawramz"
},
"instance.settings.tabs.java.hooks": {
"message": "Hooky thingz"
},
"instance.settings.tabs.java.java-arguments": {
"message": "Jawa spellz"
},
"instance.settings.tabs.java.java-installation": {
"message": "Jawa setupzy"
},
"instance.settings.tabs.java.java-memory": {
"message": "Memowy assigned"
},
"instance.settings.tabs.window": {
"message": "Shiny frame"
},
"instance.settings.tabs.window.custom-window-settings": {
"message": "Purrsonal shiny frame tweaks"
},
"instance.settings.tabs.window.fullscreen": {
"message": "Big shiny frame"
},
"instance.settings.tabs.window.fullscreen.description": {
"message": "Make da game go big when startin (using shiny options.txt)."
},
"instance.settings.tabs.window.height": {
"message": "Tallness"
},
"instance.settings.tabs.window.height.description": {
"message": "How tall da shiny frame iz when da game go zoom."
},
"instance.settings.tabs.window.height.enter": {
"message": "Type tallness..."
},
"instance.settings.tabs.window.width": {
"message": "Wideness"
},
"instance.settings.tabs.window.width.description": {
"message": "How wide da shiny frame iz when da game go zoom."
},
"instance.settings.tabs.window.width.enter": {
"message": "Enter wideness..."
},
"instance.settings.title": {
"message": "Tweaks"
},
"instance.worlds.a_minecraft_server": {
"message": "A blocky hooman hangout"
},
"instance.worlds.cant_connect": {
"message": "No can haz connect to servah"
},
"instance.worlds.copy_address": {
"message": "Snag hooman placey"
},
"instance.worlds.dont_show_on_home": {
"message": "Shush on da homez"
},
"instance.worlds.filter.available": {
"message": "Can haz now"
},
"instance.worlds.game_already_open": {
"message": "Instansh iz already openz"
},
"instance.worlds.hardcore": {
"message": "Hawd inside mode"
},
"instance.worlds.incompatible_server": {
"message": "Servah iz borked wif dis"
},
"instance.worlds.no_contact": {
"message": "No can haz talk to servah"
},
"instance.worlds.no_server_quick_play": {
"message": "U can only jumpz straight into servahz on Minecwaft Alpha 1.0.5+"
},
"instance.worlds.no_singleplayer_quick_play": {
"message": "U can only jumpz straight into loneleh kitteh worldz on Minecwaft 1.20+"
},
"instance.worlds.play_instance": {
"message": "Startz da thingy"
},
"instance.worlds.type.server": {
"message": "Servah"
},
"instance.worlds.type.singleplayer": {
"message": "Loneleh kitteh"
},
"instance.worlds.view_instance": {
"message": "Peek at instansh"
},
"instance.worlds.world_in_use": {
"message": "World iz busy playin'"
},
"search.filter.locked.instance": {
"message": "Instansh gived me dis"
},
"search.filter.locked.instance-game-version.title": {
"message": "Da gamez verzhun iz gived by da instansh, iz rite"
},
"search.filter.locked.instance-loader.title": {
"message": "Loadar iz gived by teh instansh"
},
"search.filter.locked.instance.sync": {
"message": "Syncz wif da instansh"
}
}

View File

@@ -0,0 +1,11 @@
{
"instance.add-server.add-server": {
"message": "Prideti Serverį"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft Serveris"
},
"instance.settings.tabs.hooks.pre-launch": {
"message": "Prieš paleidimą"
}
}

View File

@@ -0,0 +1,62 @@
{
"app.settings.developer-mode-enabled": {
"message": "Izstrādātājs mods ieslēgts."
},
"app.settings.downloading": {
"message": "Lejuplādē v{version}"
},
"app.settings.tabs.appearance": {
"message": "Izskats"
},
"app.settings.tabs.privacy": {
"message": "Konfidencialitāte"
},
"instance.add-server.add-and-play": {
"message": "Pievienot un spēlēt"
},
"instance.add-server.add-server": {
"message": "Pievienot serveri"
},
"instance.add-server.title": {
"message": "Pievienot Serveri"
},
"instance.edit-server.title": {
"message": "Rediģēt serveri"
},
"instance.edit-world.name": {
"message": "Nosaukums"
},
"instance.edit-world.placeholder-name": {
"message": "Minecraft Pasaule"
},
"instance.server-modal.address": {
"message": "Adrese"
},
"instance.server-modal.name": {
"message": "Nosaukums"
},
"instance.server-modal.placeholder-name": {
"message": "Minecraft Serveris"
},
"instance.server-modal.resource-pack": {
"message": "Resursu paka"
},
"instance.settings.tabs.general.deleting.button": {
"message": "Dzēš..."
},
"instance.settings.tabs.general.edit-icon": {
"message": "Rediģēt ikonu"
},
"instance.settings.tabs.general.edit-icon.select": {
"message": "Izvēlēties ikonu"
},
"instance.settings.tabs.installation": {
"message": "Instalācija"
},
"instance.settings.tabs.installation.change-version.already-installed.modded": {
"message": "{platform} {version} priekš Minecraft {game_version} ir jau ieinstalēta"
},
"instance.settings.title": {
"message": "Iestatījumi"
}
}

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