diff --git a/xmcl-keystone-ui/locales/de.yaml b/xmcl-keystone-ui/locales/de.yaml
index 9557fdcd0..3f4abe972 100644
--- a/xmcl-keystone-ui/locales/de.yaml
+++ b/xmcl-keystone-ui/locales/de.yaml
@@ -470,6 +470,11 @@ instanceTemplate:
instanceUpdate:
basic: Aktualisieren Sie Ihre Einstellungen
files: Dateien aktualisieren
+ loaderChanged: >-
+ Der Modloader dieser Instanz wurde geändert.
+
+ Der alte Modloader ist {modloader} und der neue Modloader ist
+ {newModloader}.
title: Aktualisieren Sie Ihre Instanz
update: Aktualisierung beginnen
instances:
diff --git a/xmcl-keystone-ui/locales/en.yaml b/xmcl-keystone-ui/locales/en.yaml
index 4c115c4e1..e5d01cae4 100644
--- a/xmcl-keystone-ui/locales/en.yaml
+++ b/xmcl-keystone-ui/locales/en.yaml
@@ -432,6 +432,7 @@ instanceUpdate:
files: File Updates
title: Update Instance
update: Start Update
+ loaderChanged: The modloader of this instance has been changed. The old modloader is {modloader}, and the new modloader is {newModloader}.
instances:
add: Create Game
addDescription: Create a new instance from scratch
diff --git a/xmcl-keystone-ui/locales/es-ES.yaml b/xmcl-keystone-ui/locales/es-ES.yaml
index bb7ff94e3..9d16ce115 100644
--- a/xmcl-keystone-ui/locales/es-ES.yaml
+++ b/xmcl-keystone-ui/locales/es-ES.yaml
@@ -394,6 +394,9 @@ instanceTemplate:
instanceUpdate:
basic: Actualización de Ajustes
files: Actualización de Archivos
+ loaderChanged: |-
+ Se ha cambiado el cargador de mods de esta instancia.
+ El antiguo modloader es {modloader} y el nuevo modloader es {newModloader}.
title: Actualizar Instancia
update: Iniciar Actualización
instances:
diff --git a/xmcl-keystone-ui/locales/fr.yaml b/xmcl-keystone-ui/locales/fr.yaml
index 8ee093504..6d52717f0 100644
--- a/xmcl-keystone-ui/locales/fr.yaml
+++ b/xmcl-keystone-ui/locales/fr.yaml
@@ -475,6 +475,11 @@ instanceTemplate:
instanceUpdate:
basic: Mise à jour des Paramètres
files: Mise à jour des Fichiers
+ loaderChanged: >-
+ Le modloader de cette instance a été modifié.
+
+ L'ancien modloader est {modloader} et le nouveau modloader est
+ {newModloader}.
title: Mettre à jour l'Instance
update: Démarrer la Mise à Jour
instances:
diff --git a/xmcl-keystone-ui/locales/gl.yaml b/xmcl-keystone-ui/locales/gl.yaml
index 7bf8d39b8..f4b15efe2 100644
--- a/xmcl-keystone-ui/locales/gl.yaml
+++ b/xmcl-keystone-ui/locales/gl.yaml
@@ -230,6 +230,10 @@ disable: Desactivar
downloadUpdate: Descargar actualización
errors:
NotFoundError: 404 non atopado
+instanceUpdate:
+ loaderChanged: |-
+ Cambiouse o modloader desta instancia.
+ O modloader antigo é {modloader} e o novo modloader é {newModloader}.
instances:
addServerDescription: Isto creará un xogo que se lanzará directamente ao servidor.
launchBlocked:
diff --git a/xmcl-keystone-ui/locales/hu.yaml b/xmcl-keystone-ui/locales/hu.yaml
index 4f92fcd86..250ee3374 100644
--- a/xmcl-keystone-ui/locales/hu.yaml
+++ b/xmcl-keystone-ui/locales/hu.yaml
@@ -440,6 +440,9 @@ instanceTemplate:
instanceUpdate:
basic: Beállítás frissítése
files: Fájl frissítések
+ loaderChanged: |-
+ Ennek a példánynak a modloadere megváltozott.
+ A régi modloader {modloader}, az új modloader pedig {newModloader}.
title: Példány frissítése
update: Frissítés indítása
instances:
diff --git a/xmcl-keystone-ui/locales/pl.yaml b/xmcl-keystone-ui/locales/pl.yaml
index ff5967488..f06b6b058 100644
--- a/xmcl-keystone-ui/locales/pl.yaml
+++ b/xmcl-keystone-ui/locales/pl.yaml
@@ -38,7 +38,9 @@ HomeJavaIssueDialog:
incompatibleJava: Niekompatybilna Java
incompatibleJavaHint: Aktualna Java może być niekompatybilna z wybraną wersją Minecrafta!
missingJava: Brakująca Java
- missingJavaHint: 'Program uruchamiający nie może wykryć żadnej aplikacji Java na komputerze. Możesz:'
+ missingJavaHint: >-
+ Program uruchamiający nie może wykryć żadnej aplikacji Java na komputerze.
+ Możesz:
needDownloadHint: >-
Nie można znaleźć odpowiedniej wersji Java w komputerze. Zalecamy pobranie
nową.
@@ -48,18 +50,21 @@ HomeJavaIssueDialog:
optionManualDownload: {}
optionSelectJava:
message: >-
- Być może program uruchamiający nie znalazł Twojej aplikacji Java. Możesz powiedzieć programowi uruchamiającemu
- gdzie ona jest.
+ Być może program uruchamiający nie znalazł Twojej aplikacji Java. Możesz
+ powiedzieć programowi uruchamiającemu gdzie ona jest.
name: Wybierz Java na swoim komputerze
optionSwitch:
disabled: W bazie danych nie znaleziono obecnie wersji Java {version}!
message: Użyj istniejącej wersji Java {version} na swoim komputerze
name: Przełącz na {version}
recommendedVersionHint: Wersja {version} zaleca używanie Javy z zakresem {range}。
- selectMatchedHint: Znaleziono odpowiednie lokalne wersje Java. Możesz wybrać te lokalne wersje Java.
+ selectMatchedHint: >-
+ Znaleziono odpowiednie lokalne wersje Java. Możesz wybrać te lokalne wersje
+ Java.
selectSecondaryHint: >-
Znalazłem kilka lokalnych wersji Java, ale mogą one nie spełniać kryteriów.
- Nadal można ich użyć do uruchomienia, ale ten problem nadal będzie się pojawiał.
+ Nadal można ich użyć do uruchomienia, ale ten problem nadal będzie się
+ pojawiał.
HomeLaunchMultiInstanceDialog:
confirm: Tak, Uruchomienie
description: Uruchamiasz wiele instancji gry Minecraft. Czy na pewno?
@@ -74,8 +79,8 @@ HomeSyncDialogPull:
update: Aktualizacja
HomeSyncDialogPush:
authError: >-
- Nieprawidłowe uwierzytelnianie użytkownika. Upewnij się, że masz uprawnienia do przesyłania plików
- z serwera!
+ Nieprawidłowe uwierzytelnianie użytkownika. Upewnij się, że masz uprawnienia
+ do przesyłania plików z serwera!
refresh: Odświeżanie
unknownError: Nieznany błąd serwera. Spróbuj ponownie.
upload: Wgrywanie instancji
@@ -131,22 +136,26 @@ dataMigration:
directoryCriteriaHint: Upewnij się, że nowa lokalizacja katalogu to pusty katalog!
migrationDestinationIsFile: Miejscem docelowym migracji jest plik! Wybierz pusty katalog!
migrationDestinationIsNotEmptyDirectory: >-
- Miejsce docelowe migracji nie jest pustym katalogiem! Upewnij się, że wybrałeś
- pusty katalog!
+ Miejsce docelowe migracji nie jest pustym katalogiem! Upewnij się, że
+ wybrałeś pusty katalog!
migrationNoPermission: >-
Brak uprawnień do zmiany nazwy starego katalogu na nowy! Upewnij się, że
program uruchamiający ma dostęp do obu miejsc!
placeholder: Kliknij tutaj, aby wybrać katalog
setRootCause: >-
- Utracisz swoje dane (mapy, pakiety zasobów, mody), jeśli zamkniesz
- Launchera w tym momencie!
- setRootDescription: Spowoduje to zmianę głównego folderu danych tego programu uruchamiającego i Minecrafta.
+ Utracisz swoje dane (mapy, pakiety zasobów, mody), jeśli zamkniesz Launchera
+ w tym momencie!
+ setRootDescription: >-
+ Spowoduje to zmianę głównego folderu danych tego programu uruchamiającego i
+ Minecrafta.
setRootTitle: Ustawienie nowej lokalizacji przechowywania
unknownError: Nieznany błąd! Spróbuj ponownie lub skontaktuj się z deweloperem!
- waitReload: Migracja danych. Nie zamykaj programu uruchamiającego, ponieważ spowoduje to utratę danych.
+ waitReload: >-
+ Migracja danych. Nie zamykaj programu uruchamiającego, ponieważ spowoduje to
+ utratę danych.
delete:
name: Usuń {name}
- 'no': 'Nie'
+ 'no': Nie
'yes': Usuń
dependencies:
embedded: Wbudowany
@@ -171,8 +180,8 @@ diagnosis:
corruptedLibraries:
message: Launcher zainstaluje biblioteki za ciebie
name: >-
- Uszkodzona biblioteka: {name} | Uszkodzona biblioteka: {name} | {count} biblioteki
- uszkodzony
+ Uszkodzona biblioteka: {name} | Uszkodzona biblioteka: {name} | {count}
+ biblioteki uszkodzony
corruptedVersionJar:
message: Kliknij, aby zainstalować tę wersję
name: Uszkodzona wersja słoika dla gry Minecraft %{version}.
@@ -190,7 +199,9 @@ diagnosis:
name: Nieprawidłowa lokalizacja java.
missingAssets:
message: Launcher zainstaluje zasoby za ciebie
- name: 'Brakujący zasób: {name} | Brakujący zasób: {name} | Brakujący %{count} aktywa.'
+ name: >-
+ Brakujący zasób: {name} | Brakujący zasób: {name} | Brakujący %{count}
+ aktywa.
missingAssetsIndex:
message: Launcher pobierze dla ciebie indeks zasobów
name: Brakujący plik indeksu zasobów {version}.
@@ -201,8 +212,8 @@ diagnosis:
missingLibraries:
message: Launcher zainstaluje biblioteki za ciebie
name: >-
- Brakująca {name} Brakująca | Biblioteka {name} Brakująca | Biblioteka {count}
- Brakująca | Biblioteka {count} Biblioteka
+ Brakująca {name} Brakująca | Biblioteka {name} Brakująca | Biblioteka
+ {count} Brakująca | Biblioteka {count} Biblioteka
missingVersion:
message: Kliknij, aby zainstalować tę wersję
name: Wersja {version} nie jest zainstalowany!
@@ -220,36 +231,37 @@ duration:
day: '{duration} dzień | {duration} dni'
hour: '{duration} godzina | {duration} godziny'
minute: '{duration} minuta | {duration} minuty'
- second: '{duration} drugi | {duration} sekundy' # Якщо читаєте це, то дайте мені тарелку риса для мотивації, а ще задонь для CIO0, теж для мотивації #
+ second: '{duration} drugi | {duration} sekundy'
edit: Edytuj
enable: Włącz
error:
name: Błąd | Błędy
errors:
BadForgeInstallerJarError: >-
- Nie można przeanalizować pliku jar instalatora forge. Może forge ma nowy format pliku instalatora
- format pliku? Skontaktuj się z programistami, jeśli ten problem nadal występuje.
+ Nie można przeanalizować pliku jar instalatora forge. Może forge ma nowy
+ format pliku instalatora format pliku? Skontaktuj się z programistami, jeśli
+ ten problem nadal występuje.
BadInstanceType: 'Nieprawidłowa instancja: {type}'
BodyTimeoutError: Limit czasu HTTP Body
ChecksumNotMatchError: Suma kontrolna nie pasuje! Oczekiwanie {expect}. Rzeczywisty {actual}.
ConnectTimeoutError: Limit czasu połączenia z serwerem.
DNSNotFoundError: Błąd wyszukiwania DNS
DatabaseNotOpened: >-
- Baza danych nie jest otwarta! Program uruchamiający nie będzie działał prawidłowo! Wybierz katalog
- do którego program uruchamiający ma dostęp. Możesz spróbować zresetować katalog główny danych
- na stronie ustawień.
+ Baza danych nie jest otwarta! Program uruchamiający nie będzie działał
+ prawidłowo! Wybierz katalog do którego program uruchamiający ma dostęp.
+ Możesz spróbować zresetować katalog główny danych na stronie ustawień.
DownloadAggregateError: Nie można pobrać pliku.
DownloadFileSystemError: >-
- Błąd podczas uzyskiwania dostępu do ścieżki pobierania pliku. Upewnij się, że program uruchamiający
- ma uprawnienia do zapisu.
+ Błąd podczas uzyskiwania dostępu do ścieżki pobierania pliku. Upewnij się,
+ że program uruchamiający ma uprawnienia do zapisu.
HeadersTimeoutError: Limit czasu nagłówka HTTP
NotFoundError: 404 Nie znaleziono
SocketError: Błąd gniazda serwera
exception:
http: >-
- Żądanie HTTP do {url} nie powiodło się. Kod statusu {statusCode}. {code}. Spróbuj ponownie
- lub sprawdź sieć. Jeśli ten błąd będzie się powtarzał, wyślij raport do
- zespół deweloperów.
+ Żądanie HTTP do {url} nie powiodło się. Kod statusu {statusCode}. {code}.
+ Spróbuj ponownie lub sprawdź sieć. Jeśli ten błąd będzie się powtarzał,
+ wyślij raport do zespół deweloperów.
existed: Existed
exportModpackTarget:
curseforge: Plik Curseforge
@@ -275,7 +287,9 @@ feedback:
githubDescription: Otwórz wątek na Github, aby podzielić się swoimi przemyśleniami
githubOpenIssue: Github
kook: Kook
- kookDescription: Kook to alternatywna aplikacja dla użytkownika Discord w Chinach kontynentalnych
+ kookDescription: >-
+ Kook to alternatywna aplikacja dla użytkownika Discord w Chinach
+ kontynentalnych
name: Informacje zwrotne
qq: Grupa QQ
qqDescription: >-
@@ -289,8 +303,8 @@ filter: Filtr
finish: Zakończenie
forgeConfig:
hint: >-
- Przynajmniej raz uruchom grę z tym modem, abyśmy mogli wykryć jego plik konfiguracyjny.
- jego plik konfiguracyjny!
+ Przynajmniej raz uruchom grę z tym modem, abyśmy mogli wykryć jego plik
+ konfiguracyjny. jego plik konfiguracyjny!
forgeVersion:
common: Wspólny
disable: Wyłącz Forge
@@ -369,11 +383,15 @@ instance:
addServer: Dodaj serwer
current: Bieżąca instancja
delete: Usuń grę
- deleteHint: Dane instancji zostaną usunięte z dysku na zawsze. Na pewno chcesz to zrobić?
+ deleteHint: >-
+ Dane instancji zostaną usunięte z dysku na zawsze. Na pewno chcesz to
+ zrobić?
duplicate: Duplicate Game
duplicatedName: Zduplikowana nazwa
fileApi: Adres URL interfejsu API serwera synchronizacji plików
- fileApiHint: Adres URL do synchronizacji plików instancji ze zdalnego serwera konfiguracji.
+ fileApiHint: >-
+ Adres URL do synchronizacji plików instancji ze zdalnego serwera
+ konfiguracji.
gameVersion: Wersja gry
icon: Ikona profilu
iconUrl: Ikona Adres URL
@@ -406,18 +424,20 @@ instanceFileOperation:
instanceSetting:
disableAuthlibInjector: Wyłącz wtryskiwacz authlib
disableAuthlibInjectorDescription: >-
- Jeśli korzystasz ze skórki innej firmy. Wtryskiwacz authlib może pomóc
- w wyświetlaniu skórki w grze.
+ Jeśli korzystasz ze skórki innej firmy. Wtryskiwacz authlib może pomóc w
+ wyświetlaniu skórki w grze.
disableElyByAuthlib: Wyłącz zastępowanie authlib przez ely.by
disableElyByAuthlibDescription: >-
- Ely.by ma unikalny zamiennik authlib do wyświetlania skórki uniwersalnie na każdym serwerze.
- serwerze.
+ Ely.by ma unikalny zamiennik authlib do wyświetlania skórki uniwersalnie na
+ każdym serwerze. serwerze.
fastLaunch: Turbo Launch
fastLaunchHint: Ignorowanie statusu użytkownika i istniejących nierozwiązanych problemów
hideLauncher: Ukryj program uruchamiający po uruchomieniu
icon: Wybierz obraz
showLog: Pokaż dziennik Minecraft
- showLogHint: Spowoduje to wyświetlenie okna do strumieniowego przesyłania dziennika Minecraft po uruchomieniu gry
+ showLogHint: >-
+ Spowoduje to wyświetlenie okna do strumieniowego przesyłania dziennika
+ Minecraft po uruchomieniu gry
instanceTemplate:
curseforge: To jest modpack Curseforge
ftb: To jest modpack FTB
@@ -430,6 +450,11 @@ instanceTemplate:
instanceUpdate:
basic: Aktualizacja ustawień
files: Aktualizacje plików
+ loaderChanged: >-
+ Modloader tej instancji został zmieniony.
+
+ Stary moduł ładujący to {modloader}, a nowy moduł ładujący to
+ {newModloader}.
title: Aktualizacja instancji
update: Rozpoczęcie aktualizacji
instances:
@@ -440,16 +465,16 @@ instances:
MultiMC.
addManually: Ręczne tworzenie
addModrinthDescription: >-
- Zaimportuj istniejącą instancję Modrinth. Musisz wybrać folder instancji Modrinth
- folder.
+ Zaimportuj istniejącą instancję Modrinth. Musisz wybrać folder instancji
+ Modrinth folder.
addServer: Utwórz z serwera
addServerDescription: Spowoduje to bezpośrednie uruchomienie gry na serwerze.
addTemplate: Utwórz z szablonu
addTemplateDescription: Import z pobranego pakietu Modpack
addVanilla: Tworzenie z Minecrafta w stylu vanilla
addVanillaDescription: >-
- Import ze wspólnego folderu .minecraft. Spowoduje to zduplikowanie oryginalnego profilu gry
- do XMCL.
+ Import ze wspólnego folderu .minecraft. Spowoduje to zduplikowanie
+ oryginalnego profilu gry do XMCL.
choose: Wybierz grę
importFolder: Importuj z folderu
importFolderDescription: Importowanie Minecrafta do programu uruchamiającego
@@ -492,13 +517,14 @@ launchBlocked:
title: Uruchomienie nie powiodło się
launchInvalidJavaPath:
description: >-
- Brakuje wybranej Java lub jest ona nieprawidłowa. Proszę wybrać nowy. {javaPath}
+ Brakuje wybranej Java lub jest ona nieprawidłowa. Proszę wybrać nowy.
+ {javaPath}
title: Nieprawidłowa ścieżka Java
launchJavaNoPermission:
description: >-
Program uruchamiający nie ma uprawnień do wykonania java {javaPath} . Albo zmień uprawnienia pliku
- java lub podnieść uprawnienia programu uruchamiającego.
+ class="highlight"> {javaPath} . Albo zmień uprawnienia pliku java
+ lub podnieść uprawnienia programu uruchamiającego.
title: Brak pozwolenia na uruchomienie
launchNoProperJava:
description: >-
@@ -506,29 +532,35 @@ launchBlocked:
nieważny?)
title: Nie znaleziono odpowiedniej javy
launchNoVersionInstalled:
- description: Nie można rozpoznać wersji {version} do uruchomienia.
+ description: >-
+ Nie można rozpoznać wersji {version} do
+ uruchomienia.
title: Nie wybrano wersji
launchSpawnProcessFailed:
description: >-
- Sprawdź java lub nadaj więcej uprawnień programowi uruchamiającemu i spróbuj ponownie.
- Jeśli to nadal nie działa, skontaktuj się z twórcami gry.
+ Sprawdź java lub nadaj więcej uprawnień programowi uruchamiającemu i
+ spróbuj ponownie. Jeśli to nadal nie działa, skontaktuj się z twórcami
+ gry.
title: Nie można uruchomić procesu gry
launchUserStatusRefreshFailed:
description: Nie można odświeżyć aktualnie wybranego statusu użytkownika.
title: Niepowodzenie weryfikacji statusu użytkownika
unexpectedText: >-
- Jest to nieoczekiwane. Możesz ponownie uruchomić program uruchamiający, aby złagodzić ten problem.
- Prosimy o kontakt z autorem, jeśli problem się powtórzy.
+ Jest to nieoczekiwane. Możesz ponownie uruchomić program uruchamiający, aby
+ złagodzić ten problem. Prosimy o kontakt z autorem, jeśli problem się
+ powtórzy.
userAcquireMicrosoftTokenFailed: >-
- Pozyskanie tokena Microsoft nie powiodło się. Spróbuj ponownie lub sprawdź swoje konto Microsoft
- konto.
- userCheckGameOwnershipFailed: Nie udało się sprawdzić własności Minecraft. Spróbuj ponownie lub sprawdź sieć.
- userExchangeXboxTokenFailed: >-
- Nie udało się wymienić tokenu xbox z tokenem Microsoft. Spróbuj ponownie lub sprawdź
+ Pozyskanie tokena Microsoft nie powiodło się. Spróbuj ponownie lub sprawdź
+ swoje konto Microsoft konto.
+ userCheckGameOwnershipFailed: >-
+ Nie udało się sprawdzić własności Minecraft. Spróbuj ponownie lub sprawdź
sieć.
+ userExchangeXboxTokenFailed: >-
+ Nie udało się wymienić tokenu xbox z tokenem Microsoft. Spróbuj ponownie lub
+ sprawdź sieć.
userLoginMinecraftByXboxFailed: >-
- Nie udało się zalogować do Minecraft przy użyciu tokena xbox. Spróbuj ponownie lub sprawdź
- sieć.
+ Nie udało się zalogować do Minecraft przy użyciu tokena xbox. Spróbuj
+ ponownie lub sprawdź sieć.
launchFailed:
crash: Gra się zawiesiła!!!
description: Nie ma raportu o awarii. To jest dziennik błędów i najnowszy dziennik.
@@ -555,8 +587,8 @@ localVersion:
auto: Automatyczne obliczanie
delete: Usuń wersję lokalną
deleteDescription: >-
- Ta operacja usunie lokalną wersję json i jar. Musisz
- pobrać ją ponownie, jeśli chcesz jej ponownie użyć.
+ Ta operacja usunie lokalną wersję json i jar. Musisz pobrać ją ponownie,
+ jeśli chcesz jej ponownie użyć.
empty: Nie zainstalowano żadnej wersji
hint: Bezpośrednie uruchomienie określonej wersji lokalnej
refresh: Odśwież wersje
@@ -582,11 +614,11 @@ loginError:
acquireMicrosoftTokenFailed: >-
Nie można uzyskać tokena Microsoft. Może to być problem z siecią. Proszę
ponów próbę.
- badNetworkOrServer: >-
- Sprawdź połączenie sieciowe! A może serwer uwierzytelniania
- nie działa!
+ badNetworkOrServer: Sprawdź połączenie sieciowe! A może serwer uwierzytelniania nie działa!
checkOwnershipFailed: Nie udało się sprawdzić własności gry. Spróbuj ponownie.
- connectionReset: Nie można się zalogować, ponieważ połączenie zostało zresetowane przez serwer
+ connectionReset: >-
+ Nie można się zalogować, ponieważ połączenie zostało zresetowane przez
+ serwer
fetchMinecraftProfileFailed: 'Nie można pobrać profilu Minecraft: {reason}'
illegalEmail: E-mail musi być prawidłowy
invalidCredentials: Nieprawidłowe poświadczenia. Nieprawidłowa nazwa użytkownika lub hasło.
@@ -594,9 +626,11 @@ loginError:
Nie udało się wymienić tokena Minecraft na token XBox. Upewnij się, że masz
Minecraft w Xbox lub spróbuj ponownie.
loginXboxFailed: >-
- Nie można zalogować się do Xbox za pomocą tokena Microsoft. Upewnij się, że masz
- niezależne konto Xbox od konta Microsoft. Spróbuj ponownie.
- requestFailed: Logowanie nie powiodło się, nie znamy dokładnej przyczyny. Prosimy o ponowienie próby.
+ Nie można zalogować się do Xbox za pomocą tokena Microsoft. Upewnij się, że
+ masz niezależne konto Xbox od konta Microsoft. Spróbuj ponownie.
+ requestFailed: >-
+ Logowanie nie powiodło się, nie znamy dokładnej przyczyny. Prosimy o
+ ponowienie próby.
requireEmail: Wymagany jest adres e-mail
requirePassword: Wymagane jest hasło
requireUsername: Nazwa użytkownika jest wymagana
@@ -624,9 +658,8 @@ mod:
currentVersion: Aktualny {current}
deletion: Usuń mod
deletionHint: >-
- Utracisz ten mod i jego metadane na zawsze. Czy na pewno chcesz
- go usunąć? | Utracisz ten mod i jego metadane na zawsze. Czy na pewno
- chcesz to zrobić?
+ Utracisz ten mod i jego metadane na zawsze. Czy na pewno chcesz go usunąć? |
+ Utracisz ten mod i jego metadane na zawsze. Czy na pewno chcesz to zrobić?
deletionRestHint: I {rest} więcej modów...
dropHint: Upuść .jar/.litemod moda tutaj, aby zaimportować.
enabled: '{count} Modyfikacje włączone'
@@ -650,7 +683,6 @@ mod:
switchDefaultSource: Domyślne źródło modów
toUpdate: '{count} aktualizować'
modInstall:
- recommendation: Odkryj {first} lub {second} mod w {modrinth} i {curseforge}!
checkUpgrade: Sprawdź aktualizację modów
checkedUpgrade: Aktualizacja sprawdzona
currentVersion: Wybrana wersja
@@ -659,6 +691,7 @@ modInstall:
installHint: Zainstaluje się {file} plik z {dependencies} zależności
installed: Zainstalowany
noVersionSupported: Mod nie obsługuje aktualnej wersji Minecrafta
+ recommendation: Odkryj {first} lub {second} mod w {modrinth} i {curseforge}!
search: Wynik wyszukiwania
searchHint: SWyszukaj i wybierz projekt
source: Mod Source
@@ -677,12 +710,14 @@ modpack:
author: Nazwa autora
authorHint: Może to być używane do podpisywania wyeksportowanych modpacków (Curseforge)
delete:
- hint: Spowoduje to usunięcie modpacka {name} wraz z jego metadanymi. Jesteś pewien?
+ hint: >-
+ Spowoduje to usunięcie modpacka {name} wraz z jego metadanymi. Jesteś
+ pewien?
title: Usuń modpack
description: Opis
descriptionHint: >-
- Ogólny opis modpacka. Może być używany do eksportowania jako
- curseforge modpack.
+ Ogólny opis modpacka. Może być używany do eksportowania jako curseforge
+ modpack.
dropHint: Upuść modpack zip tutaj, aby zaimportować
emitCurseforge: Emit Curseforge Modpack
emitMcbbs: Emit MCBBS Modpack
@@ -854,21 +889,22 @@ modrinth:
modrinthCard:
currentVersion: Aktualna wersja
projectHint: >
- Aktualna wersja Ta instancja jest tworzona przez Modrinth modpack z {title}
(project id:
+ Aktualna wersja Ta instancja jest tworzona przez Modrinth modpack z {title}
+ (project id:
{id}
)
multiplayer:
allowTurn: Włącz serwer przekaźnikowy
allowTurnHint: >-
- Zezwól na serwer przekaźnikowy, jeśli nie możesz połączyć się ze znajomym. Jednak korzystanie z
- może spowolnić połączenie. Należy używać go ostrożnie.
+ Zezwól na serwer przekaźnikowy, jeśli nie możesz połączyć się ze znajomym.
+ Jednak korzystanie z może spowolnić połączenie. Należy używać go ostrożnie.
complete: Kompletny
confirm: Potwierdzenie
connections: Połączenia
copied: Skopiowane!
copy: Kopia
copyGroupToFriendHint: Pozwól znajomym dołączyć do grupy za pomocą tego identyfikatora
- copyLocalHint: >
+ copyLocalHint: |
"Skopiuj lokalny tekst SDP i wyślij go do swojego obiektu, aby otrzymać swój
obiekt wpisz ten tekst w połączeniu łączenia Token może być używany tylko
dla jednego równorzędnego! Nie możesz
@@ -885,27 +921,26 @@ multiplayer:
disconnected: odłączony
enterRemoteToken: Wprowadź zdalny token
enterRemoteTokenHint: >-
- Gdy użytkownik wprowadzi swój token, należy wprowadzić jego token w polu tekstowym poniżej.
- poniżej. Kliknij przycisk Potwierdź, aby się połączyć.
+ Gdy użytkownik wprowadzi swój token, należy wprowadzić jego token w polu
+ tekstowym poniżej. poniżej. Kliknij przycisk Potwierdź, aby się połączyć.
gatheringIce: >
- Proszę poczekać, aż serwer ICE zbierze wystarczającą ilość informacji o Twoim
- sieć. Jeśli jesteś niecierpliwy i jest wystarczająco dużo informacji, możesz dać
- aktualny SDP drugiej stronie z wyprzedzeniem i kliknij Dalej. Proszę o przesłanie
-
- Token lokalny do partnera, wprowadź swój token w Dołącz
- Sekcja połączenia .
Serwer ICE może potrzebować trochę czasu
- zbierz swoje dane, aby utworzyć Token lokalny.
Nie musisz czekać
- aż do uzyskania statusu ICE. Jeśli poniższy token pozostanie niezmieniony, możesz to zrobić
- skopiuj go i wyślij swojemu koledze.”
+ Proszę poczekać, aż serwer ICE zbierze wystarczającą ilość informacji o
+ Twoim sieć. Jeśli jesteś niecierpliwy i jest wystarczająco dużo informacji,
+ możesz dać aktualny SDP drugiej stronie z wyprzedzeniem i kliknij Dalej.
+ Proszę o przesłanie Token lokalny do partnera, wprowadź
+ swój token w Dołącz Sekcja połączenia .
+ Serwer ICE może potrzebować trochę czasu zbierz swoje dane, aby utworzyć
+ Token lokalny.
Nie musisz czekać aż do uzyskania statusu
+ ICE. Jeśli poniższy token pozostanie niezmieniony, możesz to zrobić skopiuj
+ go i wyślij swojemu koledze.”
groupId: Identyfikator grupy
illegalTokenDescription: Nielegalny token. Upewnij się, że token od innego partnera jest poprawny
initiateConnection: Zainicjuj połączenie
inviteLink: Zaproś łącze
- joinConnection: >-
- Jeśli Twój partner już zainicjował połączenie, musisz dołączyć
- Połączenie.
+ joinConnection: Jeśli Twój partner już zainicjował połączenie, musisz dołączyć Połączenie.
joinManual: Dołącz
joinOrCreateGroup: Dołącz/utwórz grupę
joinOrCreateGroupHint: Uzyskaj identyfikator grupy od znajomych lub utwórz grupę
@@ -947,7 +982,7 @@ news:
name: Aktualności
readMore: Czytaj więcej
next: Następny
-'no': 'Nie'
+'no': Nie
ok: OK
optifineVersion:
disable: Wyłączanie Optifine
@@ -1000,10 +1035,12 @@ resourcepack:
defaultDescription: Domyślny wygląd i sposób działania Minecrafta
delete:
content: >-
- Spowoduje to usunięcie pliku pakietu zasobów z dysku i nie będzie można go ponownie utworzyć.
- Czy na pewno chcesz to zrobić?
+ Spowoduje to usunięcie pliku pakietu zasobów z dysku i nie będzie można go
+ ponownie utworzyć. Czy na pewno chcesz to zrobić?
title: Usuń pakiet zasobów
- dropHint: Usuń pakiet zasobówUpuść folder/zip pakietu zasobów tutaj, aby go zaimportować.
+ dropHint: >-
+ Usuń pakiet zasobówUpuść folder/zip pakietu zasobów tutaj, aby go
+ zaimportować.
enable: '{count} Pakiet zasobów jest włączony'
import: Importuj pakiet zasobów
incompatible: >-
@@ -1032,16 +1069,16 @@ save:
cancel: Anuluj
confirm: Rozpocznij kopiowanie
description: >-
- Możesz wdrożyć zapisywanie do tej instancji z innych instancji lub z zarządzanych zasobów (curseforge).
- zasobów (curseforge)
+ Możesz wdrożyć zapisywanie do tej instancji z innych instancji lub z
+ zarządzanych zasobów (curseforge). zasobów (curseforge)
from: Od {src}
fromProfile: Z innych instancji
fromResource: Z zarządzanych zasobów
title: Importuj zapis z zarządzanego źródła
createdWorlds: Masz {count} światów
deleteHint: >-
- Tej operacji nie można przywrócić. Zapisane dane zostaną utracone na zawsze. Czy
- na pewno usunąć ten zapis?
+ Tej operacji nie można przywrócić. Zapisane dane zostaną utracone na zawsze.
+ Czy na pewno usunąć ten zapis?
deleteTitle: Usuń Zapisz
detail: Więcej informacji
dropHint: Przeciągnij zapisz zip tutaj, aby zaimportować
@@ -1095,8 +1132,8 @@ setting:
official: Oficjalny (Mojang)
appearance: Wygląd
appxUpdateHint: >-
- Program uruchamiający pobierze i uruchomi instalator. Jeśli instalator popup nie powiódł się,
- należy uruchomić go ręcznie.
+ Program uruchamiający pobierze i uruchomi instalator. Jeśli instalator popup
+ nie powiódł się, należy uruchomić go ręcznie.
autoDownload: Automatyczne pobieranie
autoDownloadDescription: Automatyczne pobieranie aktualizacji, jeśli jest dostępna
autoInstallOnAppQuit: Autoinstalacja
@@ -1165,18 +1202,20 @@ setting:
layout:
default: Układ domyślny
focus: Focus Layout
- layoutDescription: Układ programu uruchamiającego reprezentujący inną logikę interfejsu użytkownika
+ layoutDescription: >-
+ Układ programu uruchamiającego reprezentujący inną logikę interfejsu
+ użytkownika
layoutTitle: Układ
linuxTitlebar: Natywny pasek tytułu
linuxTitlebarDescription: Użyj natywnego linuksowego paska tytułu dla programu uruchamiającego
location: Lokalizacja sklepu
maunalUpdateHint: >-
- Wersja nie może być automatycznie aktualizowana. Prosimy o ponowne pobranie programu uruchamiającego ze strony
- strony internetowej!
+ Wersja nie może być automatycznie aktualizowana. Prosimy o ponowne pobranie
+ programu uruchamiającego ze strony strony internetowej!
maxSockets: Na hosta
maxSocketsDescription: >-
- Ograniczenie maksymalnej liczby gniazd na host lub dla wszystkich hostów łącznie.
- łącznie. 0 oznacza brak limitu.
+ Ograniczenie maksymalnej liczby gniazd na host lub dla wszystkich hostów
+ łącznie. łącznie. 0 oznacza brak limitu.
maxSocketsTitle: Max HTTP sockets
name: Ustawienia globalne | Ustawienia globalne
network: Ustawienia sieciowe
@@ -1197,7 +1236,9 @@ setting:
showNewsHeader: Odkryj wizytówkę wiadomości
showRoot: Pokaż
streamerMode: Tryb przesyłania strumieniowego
- streamerModeDescription: Spowoduje to ukrycie prywatnych informacji, takich jak adres e-mail, w programie uruchamiającym.
+ streamerModeDescription: >-
+ Spowoduje to ukrycie prywatnych informacji, takich jak adres e-mail, w
+ programie uruchamiającym.
theme:
dark: Ciemny motyw
light: Motyw świetlny
@@ -1213,8 +1254,8 @@ setting:
update: Aktualizacja
useBmclAPI: Korzystanie z interfejsu API BMCL
useBmclAPIDescription: >-
- Użyj BMCLAPI, aby pobrać Minecrafta, gdy jesteś w Chinach kontynentalnych. (To
- nie będzie miało wpływu, jeśli nie jesteś w Chinach kontynentalnych)
+ Użyj BMCLAPI, aby pobrać Minecrafta, gdy jesteś w Chinach kontynentalnych.
+ (To nie będzie miało wpływu, jeśli nie jesteś w Chinach kontynentalnych)
useProxy: HTTP Proxy
useProxyDescription: Adres serwera proxy dla żądania http
viewBackgroundMusic: Wyświetl muzykę
@@ -1225,52 +1266,58 @@ settingLabel:
localHint: To ustawienie jest modyfikowane przez bieżącą instancję
setup:
account:
- description: Zaloguj się na swoje konto w grze. Jeśli go nie posiadasz, możesz je na razie pominąć.
+ description: >-
+ Zaloguj się na swoje konto w grze. Jeśli go nie posiadasz, możesz je na
+ razie pominąć.
name: Dodaj konto gry
skip: Na razie pomiń
appearance:
name: '@:setting.appearance'
dataRoot:
description: >-
- Korzeń danych nie jest zwykłym katalogiem .minecraft. Ponieważ struktura katalogów danych XMCL
- różni się od struktury katalogu vanilla, nie zalecamy używania
- wspólnego katalogu .minecraft jako katalogu głównego danych.
+ Korzeń danych nie jest zwykłym katalogiem .minecraft. Ponieważ struktura
+ katalogów danych XMCL różni się od struktury katalogu vanilla, nie
+ zalecamy używania wspólnego katalogu .minecraft jako katalogu głównego
+ danych.
drives: Polecane lokalizacje
name: Ustaw katalog danych
defaultLayoutDescription: >-
- Domyślny układ stara się wzmocnić koncepcję "instancji" gry. To
- przypomina aplikacje takie jak Discord. Jest również inspirowany innymi aplikacjami do uruchamiania gier
- jak Steam itp.
+ Domyślny układ stara się wzmocnić koncepcję "instancji" gry. To przypomina
+ aplikacje takie jak Discord. Jest również inspirowany innymi aplikacjami do
+ uruchamiania gier jak Steam itp.
defaultPath: Ścieżka domyślna
error:
- badDataRoot: Nieprawidłowy katalog dla danych programu uruchamiającego! Spróbuj użyć innego katalogu!
+ badDataRoot: >-
+ Nieprawidłowy katalog dla danych programu uruchamiającego! Spróbuj użyć
+ innego katalogu!
exists: >-
- Wybrany katalog nie jest pusty. W porządku, ale upewnij się, że wykonałeś kopię zapasową
- danych.
- noPermission: >-
- Launcher nie ma uprawnień dostępu do wybranego katalogu! Spróbuj
- inny.
+ Wybrany katalog nie jest pusty. W porządku, ale upewnij się, że wykonałeś
+ kopię zapasową danych.
+ noPermission: Launcher nie ma uprawnień dostępu do wybranego katalogu! Spróbuj inny.
nonDictionary: Selected path is a file! Please select a directory!
focusLayoutDescription: >-
- Układ główny jest starszym układem programu uruchamiającego Minecraft. Został zaprojektowany
- do użycia z pojedynczą instancją lub kilkoma instancjami.
+ Układ główny jest starszym układem programu uruchamiającego Minecraft.
+ Został zaprojektowany do użycia z pojedynczą instancją lub kilkoma
+ instancjami.
game:
description: >-
- Wybierz istniejący katalog gry (.minecraft), aby zaimportować istniejące zasoby.
- Dzięki temu można szybko zidentyfikować mody, pakiety zasobów itp.
+ Wybierz istniejący katalog gry (.minecraft), aby zaimportować istniejące
+ zasoby. Dzięki temu można szybko zidentyfikować mody, pakiety zasobów itp.
name: Import istniejącej gry
locale:
description: >-
- Wybierz preferowany język, jeśli go mamy! Jeśli nie widzisz swojego języka ojczystego
- języka i chcesz pomóc, możesz odwiedzić nasz Github, aby przesłać pull
- prośby o tłumaczenie!
+ Wybierz preferowany język, jeśli go mamy! Jeśli nie widzisz swojego języka
+ ojczystego języka i chcesz pomóc, możesz odwiedzić nasz Github, aby
+ przesłać pull prośby o tłumaczenie!
language: Język
name: Ustaw język
path: Bieżąca ścieżka
title: 'Witamy w X Minecraft Launcher. Zanim zaczniesz, musisz '
shaderPack:
deletion: Usuń pakiet shaderów
- deletionHint: Spowoduje to usunięcie pliku pakietu shaderów {path} i nie będzie można go przywrócić.
+ deletionHint: >-
+ Spowoduje to usunięcie pliku pakietu shaderów {path} i nie będzie można go
+ przywrócić.
disabled: Wyłączony pakiet shaderów
dropHint: Import Shader Pack
empty: No shader pack allocated
@@ -1290,7 +1337,7 @@ store:
name: Rynek Modpack
popular: Popularne modpacki
recentUpdated: Ostatnia aktualizacja
-summery: Podsumowanie
+summery: Podsumowanie
tag:
create: Utwórz tag
createSelected: Utwórz znacznik dla wybranych
@@ -1323,10 +1370,12 @@ transportType:
relay: Kandydat na sztafetę
srflx: Kandydat refleksyjny serwera
tutorial:
- feedbackDescription: Jeśli napotkasz jakikolwiek problem, kliknij ten przycisk, aby wysłać opinię!
+ feedbackDescription: >-
+ Jeśli napotkasz jakikolwiek problem, kliknij ten przycisk, aby wysłać
+ opinię!
hideNewsHeaderDescription: >-
- Po lewej stronie wyświetlane są wiadomości. Kliknięcie tego przycisku może ukryć
- tę gablotę.
+ Po lewej stronie wyświetlane są wiadomości. Kliknięcie tego przycisku może
+ ukryć tę gablotę.
instance:
iconDescription: Kliknij, aby zmienić ikonę.`
iconTitle: Ikona instancji
@@ -1335,45 +1384,48 @@ tutorial:
javaImportTitle: Import java
javaTitle: Lista Java
instanceAddDescription: >-
- Kliknij ten przycisk, aby zaimportować istniejącą grę Minecraft lub utworzyć nową z
- lub modpack.
- instanceSelectDescription: Kliknięcie tego przycisku spowoduje przejście do strony, na której można wybrać grę i przeczytać wiadomości.
+ Kliknij ten przycisk, aby zaimportować istniejącą grę Minecraft lub utworzyć
+ nową z lub modpack.
+ instanceSelectDescription: >-
+ Kliknięcie tego przycisku spowoduje przejście do strony, na której można
+ wybrać grę i przeczytać wiadomości.
launchDescription: Kliknij ten przycisk, aby zainstalować lub uruchomić grę.
mod:
defaultSourceDescription: >-
- Możesz wybrać źródło szczegółów modów tutaj. Dostępne są mody
- opublikowane zarówno na Modrinth, jak i Curseforge. Jeśli chcesz przełączać się między
+ Możesz wybrać źródło szczegółów modów tutaj. Dostępne są mody opublikowane
+ zarówno na Modrinth, jak i Curseforge. Jeśli chcesz przełączać się między
tymi dwoma dostawcami treści. Możesz zmienić wartość tutaj.
defaultSourceTitle: Wybierz źródło zawartości modu
detailDescription: >-
- Po wybraniu elementu po lewej stronie. Zobaczysz szczegóły moda.
- Zawartość może pochodzić z Modrinth, Curseforge lub sparsowanej zawartości moda.
+ Po wybraniu elementu po lewej stronie. Zobaczysz szczegóły moda. Zawartość
+ może pochodzić z Modrinth, Curseforge lub sparsowanej zawartości moda.
detailTitle: Mod Detail
listDescription: >-
- Wyświetlimy zainstalowane mody, gdy nie masz żadnych danych wejściowych. Zobaczysz
- wyszukiwane mody po wprowadzeniu słowa kluczowego lub wybranej kategorii.
+ Wyświetlimy zainstalowane mody, gdy nie masz żadnych danych wejściowych.
+ Zobaczysz wyszukiwane mody po wprowadzeniu słowa kluczowego lub wybranej
+ kategorii.
listTitle: Zainstalowany lub wyszukiwany mod
searchDescription: >-
- Możesz wyszukiwać mody z Modrinth, Curseforge lub lokalnej pamięci podręcznej za pomocą
- to pole wyszukiwania.
+ Możesz wyszukiwać mody z Modrinth, Curseforge lub lokalnej pamięci
+ podręcznej za pomocą to pole wyszukiwania.
searchTitle: Wyszukiwanie modów
multiplayer:
contentDescription: Połączenia między Tobą a Twoimi rówieśnikami będą wymienione tutaj.
contentTitle: '@:multiplayer.connections'
groupDescription: >-
- Możesz utworzyć lub dołączyć do grupy z innymi graczami. Program uruchamiający spróbuje
- utworzyć połączenia P2P między Tobą a Twoimi znajomymi według
- grupy. Możesz wprowadzić nazwę grupy podaną przez znajomych. Możesz też
- utworzyć własną, unikalną nazwę.
+ Możesz utworzyć lub dołączyć do grupy z innymi graczami. Program
+ uruchamiający spróbuje utworzyć połączenia P2P między Tobą a Twoimi
+ znajomymi według grupy. Możesz wprowadzić nazwę grupy podaną przez
+ znajomych. Możesz też utworzyć własną, unikalną nazwę.
groupTitle: Dołącz do grupy
joinDescription: >-
- Po wprowadzeniu nazwy grupy. Możesz kliknąć ten przycisk, aby dołączyć lub utworzyć
- grupy. Jeśli nazwa grupy jest pusta, program uruchamiający wygeneruje nazwę
- nazwę.
+ Po wprowadzeniu nazwy grupy. Możesz kliknąć ten przycisk, aby dołączyć lub
+ utworzyć grupy. Jeśli nazwa grupy jest pusta, program uruchamiający
+ wygeneruje nazwę nazwę.
manualDescription: >-
- Jeśli ty lub twój znajomy nie możecie połączyć się z grupą. Możesz spróbować ręcznie
- wymienić token, klikając opcję Połącz ręcznie. Jeśli to również się nie powiedzie
- może to być problem z internetem.
+ Jeśli ty lub twój znajomy nie możecie połączyć się z grupą. Możesz
+ spróbować ręcznie wymienić token, klikając opcję Połącz ręcznie. Jeśli to
+ również się nie powiedzie może to być problem z internetem.
recentPlayDescription: >-
Utworzone gry zostaną wyświetlone tutaj. Możesz przełączać widoki tutaj, aby
zobaczyć zainstalowane wersje i pobrane modpacki.
@@ -1381,7 +1433,9 @@ tutorial:
W tej sekcji zobaczysz najpopularniejsze modpacki w Curseforge i Modrinth.
sekcji.
storeSearchCategoryDescription: Można tu również przełączać kategorie lub filtry.
- storeSearchDescription: Możesz wyszukać Modpack, wprowadzając dane w tym polu tekstowym. Naciśnij Enter, aby wyszukać.
+ storeSearchDescription: >-
+ Możesz wyszukać Modpack, wprowadzając dane w tym polu tekstowym. Naciśnij
+ Enter, aby wyszukać.
storeSearchResultDescription: Tutaj wyświetlone zostaną wszystkie wyniki wyszukiwania.
userAccountDescription: Kliknij tę ikonę, aby dodać konto Minecraft lub zarządzać nim.
universalDrop:
@@ -1396,8 +1450,8 @@ upstream:
missingModpackMetadata: >-
Nie znaleziono metadanych starego modpacka.
- Nadal możesz dokonać aktualizacji, ale wynik może być błędny. Wykonaj kopię zapasową
- plików instancji.
+ Nadal możesz dokonać aktualizacji, ale wynik może być błędny. Wykonaj kopię
+ zapasową plików instancji.
onlyShowCurrentVersion: Pokazuje tylko aktualną wersję Minecrafta
update: Aktualizacja
user:
@@ -1410,7 +1464,9 @@ user:
forgetChallenges: Zapomniałem tych pytań i chcę je zmienić
id: User Id
info: Informacje o użytkowniku
- insecureClient: Klient nie jest zabezpieczony! Potwierdź swoją tożsamość, aby przesłać skórkę!
+ insecureClient: >-
+ Klient nie jest zabezpieczony! Potwierdź swoją tożsamość, aby przesłać
+ skórkę!
name: Nazwa użytkownika
nameHint: Nazwa wyświetlana w grze
profile: Profile
@@ -1426,9 +1482,9 @@ userAccount:
userCape:
changeTitle: Zmień pelerynę
description: >-
- Peleryny to specjalne nagrody, które gracze mogą odblokować poprzez różne wydarzenia,
- kampanie i inne szczęśliwe wydarzenia. Tutaj możesz wybrać między peleryną
- które aktualnie posiadasz:
+ Peleryny to specjalne nagrody, które gracze mogą odblokować poprzez różne
+ wydarzenia, kampanie i inne szczęśliwe wydarzenia. Tutaj możesz wybrać
+ między peleryną które aktualnie posiadasz:
noCape: Bez przylądka
userService:
add: Dodaj więcej usług
@@ -1475,4 +1531,4 @@ versionType:
beta: Beta
name: Status
release: Release
-'yes': 'Tak'
+'yes': Tak
diff --git a/xmcl-keystone-ui/locales/ru.yaml b/xmcl-keystone-ui/locales/ru.yaml
index 944d7741c..8b7889eee 100644
--- a/xmcl-keystone-ui/locales/ru.yaml
+++ b/xmcl-keystone-ui/locales/ru.yaml
@@ -429,6 +429,11 @@ instanceTemplate:
instanceUpdate:
basic: Обновление настроек
files: Обновление файлов
+ loaderChanged: >-
+ Модлоадер этого экземпляра был изменен.
+
+ Старый загрузчик модов — {modloader}, а новый загрузчик модов —
+ {newModloader}.
title: Обновление экземпляра
update: Начать обновление
instances:
diff --git a/xmcl-keystone-ui/locales/uk.yaml b/xmcl-keystone-ui/locales/uk.yaml
index 89cf59f23..5ac154ed1 100644
--- a/xmcl-keystone-ui/locales/uk.yaml
+++ b/xmcl-keystone-ui/locales/uk.yaml
@@ -432,6 +432,9 @@ instanceTemplate:
instanceUpdate:
basic: Оновлення налаштувань
files: Оновлення файлів
+ loaderChanged: |-
+ Завантажувач модів цього екземпляра змінено.
+ Старий завантажувач модів — {modloader}, а новий — {newModloader}.
title: Оновити екземпляр
update: Почати оновлення
instances:
diff --git a/xmcl-keystone-ui/locales/zh-CN.yaml b/xmcl-keystone-ui/locales/zh-CN.yaml
index aa604541d..860cef921 100644
--- a/xmcl-keystone-ui/locales/zh-CN.yaml
+++ b/xmcl-keystone-ui/locales/zh-CN.yaml
@@ -446,6 +446,9 @@ instanceTemplate:
instanceUpdate:
basic: 设置更新
files: 文件更新
+ loaderChanged: |-
+ 该实例的模组加载器已更改。
+ 旧的 modloader 是 {modloader},新的 modloader 是 {newModloader}。
title: 更新实例
update: 开始更新实例
instances:
diff --git a/xmcl-keystone-ui/locales/zh-TW.yaml b/xmcl-keystone-ui/locales/zh-TW.yaml
index 6ee30795f..10116fd9a 100644
--- a/xmcl-keystone-ui/locales/zh-TW.yaml
+++ b/xmcl-keystone-ui/locales/zh-TW.yaml
@@ -180,6 +180,10 @@ instanceTemplate:
importing: 模板導入
preview: 預覽
title: 模板設置
+instanceUpdate:
+ loaderChanged: |-
+ 該實例的模組載入器已變更。
+ 舊的 modloader 是 {modloader},新的 modloader 是 {newModloader}。
instances:
add: 創建遊戲
addManually: 手動建立
diff --git a/xmcl-keystone-ui/src/views/HomeInstanceUpdateDialog.vue b/xmcl-keystone-ui/src/views/HomeInstanceUpdateDialog.vue
index 155d06834..a7dae6419 100644
--- a/xmcl-keystone-ui/src/views/HomeInstanceUpdateDialog.vue
+++ b/xmcl-keystone-ui/src/views/HomeInstanceUpdateDialog.vue
@@ -80,6 +80,38 @@
+
+
+
+
+ {{ loaderDifferences.old.join(', ') }}
+
+
+
+
+ {{ loaderDifferences.new.join(', ') }}
+
+
+
+
+
{{ t('instanceUpdate.files') }}
@@ -140,8 +172,9 @@ import { basename } from '@/util/basename'
import { getFTBTemplateAndFile } from '@/util/ftb'
import { injection } from '@/util/inject'
import { getUpstreamFromResource } from '@/util/upstream'
-import { EditInstanceOptions, InstanceData, InstanceFileOperation, InstanceFileUpdate, InstanceInstallServiceKey, InstanceUpdateServiceKey, Resource } from '@xmcl/runtime-api'
+import { EditInstanceOptions, InstanceData, InstanceFileOperation, InstanceFileUpdate, InstanceInstallServiceKey, InstanceUpdateServiceKey, Resource, ResourceServiceKey } from '@xmcl/runtime-api'
import { useDialog } from '../composables/dialog'
+import { resolveModpackInstanceConfig } from '@/util/modpackFilesResolver'
const selected = ref([] as string[])
@@ -229,6 +262,7 @@ const { runtime: oldRuntime, path: instancePath } = injection(kInstance)
const { all: javas } = injection(kJavaContext)
const { refresh, refreshing, error } = useRefreshable(async () => {
if (newManifest.value && oldManifest.value) {
+ // FTB
const [config, newVersionFiles] = getFTBTemplateAndFile(newManifest.value, javas.value)
const [_, oldVersionFiles] = getFTBTemplateAndFile(oldManifest.value, javas.value)
upgrade.value = {
@@ -246,19 +280,46 @@ const { refresh, refreshing, error } = useRefreshable(async () => {
}
return
}
- const path = newResource.value?.path
- if (path) {
+ const res = newResource.value
+ const path = res?.path
+ if (res && path) {
+ const config = resolveModpackInstanceConfig(res) as EditInstanceOptions
+
+ const files = await getInstanceUpdateProfile({
+ instancePath: instancePath.value,
+ oldModpack: oldResource.value && 'path' in oldResource.value ? oldResource.value.path : undefined,
+ newModpack: res.path,
+ })
+
upgrade.value = {
- ...await getInstanceUpdateProfile({
- instancePath: instancePath.value,
- oldModpack: oldResource.value && 'path' in oldResource.value ? oldResource.value.path : undefined,
- newModpack: newResource.value.path,
- }),
+ instance: config,
+ files,
upstream: getUpstreamFromResource(newResource.value),
}
}
})
+const loaderDifferences = computed(() => {
+ const old = oldRuntime.value
+ const newR = runtime.value
+ const loaders = ['forge', 'fabricLoader', 'quiltLoader', 'neoForged']
+ const oldL = [] as string[]
+ const newL = [] as string[]
+ for (const l of loaders) {
+ if (!!old[l] !== !!newR[l]) {
+ if (old[l]) {
+ oldL.push(l)
+ } else {
+ newL.push(l)
+ }
+ }
+ }
+ return {
+ old: oldL,
+ new: newL,
+ }
+})
+
const confirm = async () => {
if (upgrade.value) {
const { instance, files, upstream } = upgrade.value
diff --git a/xmcl-runtime-api/src/services/InstanceUpdateService.ts b/xmcl-runtime-api/src/services/InstanceUpdateService.ts
index 5062e9cb6..e8b73a921 100644
--- a/xmcl-runtime-api/src/services/InstanceUpdateService.ts
+++ b/xmcl-runtime-api/src/services/InstanceUpdateService.ts
@@ -20,10 +20,6 @@ export type UpgradeModpackRawOptions = {
oldVersionFiles: InstanceFile[]
newVersionFiles: InstanceFile[]
}
-export interface InstanceUpdateProfile {
- instance: EditInstanceOptions
- files: InstanceFileUpdate[]
-}
export type InstanceFileUpdate = {
file: InstanceFile
@@ -35,7 +31,7 @@ export type InstanceFileUpdate = {
}
export interface InstanceUpdateService {
- getInstanceUpdateProfile(options: UpgradeModpackOptions): Promise
+ getInstanceUpdateProfile(options: UpgradeModpackOptions): Promise
getInstanceUpdateProfileRaw(options: UpgradeModpackRawOptions): Promise
}
diff --git a/xmcl-runtime/instanceIO/InstanceUpdateService.ts b/xmcl-runtime/instanceIO/InstanceUpdateService.ts
index 29eceb1ec..b2415ad08 100644
--- a/xmcl-runtime/instanceIO/InstanceUpdateService.ts
+++ b/xmcl-runtime/instanceIO/InstanceUpdateService.ts
@@ -9,9 +9,7 @@ import { AbstractService, ExposeServiceKey } from '~/service'
type Upstream = Required['upstream']
-type UpstreamResolver = (upstream: Upstream) => Promise<{
- files: InstanceFile[]
-} | undefined>
+type UpstreamResolver = (upstream: Upstream) => Promise
@ExposeServiceKey(InstanceUpdateServiceKey)
export class InstanceUpdateService extends AbstractService implements IInstanceUpdateService {
@@ -30,13 +28,13 @@ export class InstanceUpdateService extends AbstractService implements IInstanceU
const res = upstream.sha1 ? await resourceService.getResourceByHash(upstream.sha1) : (await resourceService.getResourcesByUris([`modrinth:${upstream.projectId}:${upstream.versionId}`]))[0]
if (res) {
if (res.metadata.instance) {
- return res.metadata.instance
+ return res.metadata.instance.files
}
- return await this.modpackService.getModpackInstallProfile(res.path).catch(() => undefined)
+ return await this.modpackService.getModpackInstallFiles(res.path).catch(() => undefined)
}
const resMetadata = upstream.sha1 ? await resourceService.getResourceMetadataByHash(upstream.sha1) : (await resourceService.getResourceMetadataByUri(`modrinth:${upstream.projectId}:${upstream.versionId}`))[0]
if (resMetadata?.instance) {
- return resMetadata.instance
+ return resMetadata.instance.files
}
}
return undefined
@@ -47,13 +45,13 @@ export class InstanceUpdateService extends AbstractService implements IInstanceU
const res = upstream.sha1 ? await resourceService.getResourceByHash(upstream.sha1) : (await resourceService.getResourcesByUris([`curseforge:${upstream.modId}:${upstream.fileId}`]))[0]
if (res) {
if (res.metadata.instance) {
- return res.metadata.instance
+ return res.metadata.instance.files
}
- return await this.modpackService.getModpackInstallProfile(res.path).catch(() => undefined)
+ return await this.modpackService.getModpackInstallFiles(res.path).catch(() => undefined)
}
const resMetadata = upstream.sha1 ? await resourceService.getResourceMetadataByHash(upstream.sha1) : (await resourceService.getResourceMetadataByUri(`curseforge:${upstream.modId}:${upstream.fileId}`))[0]
if (resMetadata?.instance) {
- return resMetadata.instance
+ return resMetadata.instance.files
}
}
return undefined
@@ -67,8 +65,8 @@ export class InstanceUpdateService extends AbstractService implements IInstanceU
private async resolveOldFiles(instancePath: string, instance: InstanceData, oldModpack?: string): Promise {
if (oldModpack) {
// If old modpack path present, try to get modpack content
- const profile = await this.modpackService.getModpackInstallProfile(oldModpack)
- return profile.files
+ const files = await this.modpackService.getModpackInstallFiles(oldModpack)
+ return files
}
if (instance.upstream) {
@@ -78,7 +76,7 @@ export class InstanceUpdateService extends AbstractService implements IInstanceU
for (const resolver of this.resolvers) {
const result = await resolver(upstream)
if (result) {
- return result.files
+ return result
}
}
}
@@ -160,15 +158,12 @@ export class InstanceUpdateService extends AbstractService implements IInstanceU
const oldFiles = await this.resolveOldFiles(instancePath, instance, options.oldModpack)
- const { files: newFiles, instance: instanceOptions } = await this.modpackService.getModpackInstallProfile(options.newModpack)
+ const newFiles = await this.modpackService.getModpackInstallFiles(options.newModpack)
const manifest = await this.instanceManifestService.getInstanceManifest({ path: instancePath, hashes: ['sha1'] })
const result = this.#getInstanceFilesUpdate(oldFiles, manifest.files, newFiles)
- return {
- instance: instanceOptions,
- files: result.filter(r => !r.file.path.endsWith('/')),
- }
+ return result.filter(r => !r.file.path.endsWith('/'))
}
}