diff options
| -rw-r--r-- | MultiMC.cpp | 2 | ||||
| -rw-r--r-- | gui/ConsoleWindow.cpp | 7 | ||||
| -rw-r--r-- | gui/MainWindow.cpp | 7 | ||||
| -rw-r--r-- | gui/dialogs/VersionSelectDialog.cpp | 4 | ||||
| -rw-r--r-- | logic/LegacyInstance.cpp | 5 | ||||
| -rw-r--r-- | logic/LegacyInstance.h | 1 | ||||
| -rw-r--r-- | logic/LegacyUpdate.cpp | 169 | ||||
| -rw-r--r-- | logic/LegacyUpdate.h | 13 | ||||
| -rw-r--r-- | logic/net/URLConstants.cpp | 2 | ||||
| -rw-r--r-- | logic/net/URLConstants.h | 2 | ||||
| -rw-r--r-- | translations/mmc_de.ts | 197 | ||||
| -rw-r--r-- | translations/mmc_fr.ts | 3808 |
12 files changed, 4187 insertions, 30 deletions
diff --git a/MultiMC.cpp b/MultiMC.cpp index ddc1fca7..a0ff8b66 100644 --- a/MultiMC.cpp +++ b/MultiMC.cpp @@ -412,6 +412,7 @@ void MultiMC::initGlobalSettings() // Console m_settings->registerSetting("ShowConsole", true); + m_settings->registerSetting("RaiseConsole", true); m_settings->registerSetting("AutoCloseConsole", true); m_settings->registerSetting("LogPrePostOutput", true); @@ -470,6 +471,7 @@ void MultiMC::initHttpMetaCache() m_metacache->addBase("versions", QDir("versions").absolutePath()); m_metacache->addBase("libraries", QDir("libraries").absolutePath()); m_metacache->addBase("minecraftforge", QDir("mods/minecraftforge").absolutePath()); + m_metacache->addBase("fmllibs", QDir("mods/minecraftforge/libs").absolutePath()); m_metacache->addBase("liteloader", QDir("mods/liteloader").absolutePath()); m_metacache->addBase("skins", QDir("accounts/skins").absolutePath()); m_metacache->addBase("root", QDir(root()).absolutePath()); diff --git a/gui/ConsoleWindow.cpp b/gui/ConsoleWindow.cpp index 621f035f..18a617e0 100644 --- a/gui/ConsoleWindow.cpp +++ b/gui/ConsoleWindow.cpp @@ -265,6 +265,13 @@ void ConsoleWindow::onEnded(BaseInstance *instance, int code, QProcess::ExitStat */ if (!isVisible()) show(); + + // Raise Window + if (MMC->settings()->get("RaiseConsole").toBool()) + { + raise(); + activateWindow(); + } } void ConsoleWindow::onLaunchFailed(BaseInstance *instance) diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index dcb6d3b5..2e70a6a6 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -35,6 +35,7 @@ #include <QToolButton> #include <QWidgetAction> #include <QProgressDialog> +#include <QShortcut> #include "osutils.h" #include "userutils.h" @@ -116,6 +117,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi // OSX magic. // setUnifiedTitleAndToolBarOnMac(true); + // Global shortcuts + { + auto q = new QShortcut(QKeySequence::Quit, this); + connect(q, &QShortcut::activated, qApp, &QCoreApplication::quit); + } + // The instance action toolbar customizations { // disabled until we have an instance selected diff --git a/gui/dialogs/VersionSelectDialog.cpp b/gui/dialogs/VersionSelectDialog.cpp index 3277fd2f..f4d314b6 100644 --- a/gui/dialogs/VersionSelectDialog.cpp +++ b/gui/dialogs/VersionSelectDialog.cpp @@ -100,7 +100,9 @@ void VersionSelectDialog::on_refreshButton_clicked() void VersionSelectDialog::setFilter(int column, QString filter) { m_proxyModel->setFilterKeyColumn(column); - m_proxyModel->setFilterFixedString(filter); + // m_proxyModel->setFilterFixedString(filter); + m_proxyModel->setFilterRegExp(QRegExp(QString("^%1$").arg(filter.replace(".", "\\.")), + Qt::CaseInsensitive, QRegExp::RegExp)); /* QStringList filteredTypes; if (!ui->filterSnapshotsCheckbox->isChecked()) diff --git a/logic/LegacyInstance.cpp b/logic/LegacyInstance.cpp index 4f2dfd9b..d06b8827 100644 --- a/logic/LegacyInstance.cpp +++ b/logic/LegacyInstance.cpp @@ -159,6 +159,11 @@ QString LegacyInstance::binDir() const return PathCombine(minecraftRoot(), "bin"); } +QString LegacyInstance::libDir() const +{ + return PathCombine(minecraftRoot(), "lib"); +} + QString LegacyInstance::savesDir() const { return PathCombine(minecraftRoot(), "saves"); diff --git a/logic/LegacyInstance.h b/logic/LegacyInstance.h index 636addeb..badaf7e3 100644 --- a/logic/LegacyInstance.h +++ b/logic/LegacyInstance.h @@ -41,6 +41,7 @@ public: std::shared_ptr<ModList> texturePackList(); ////// Directories ////// + QString libDir() const; QString savesDir() const; QString texturePacksDir() const; QString jarModsDir() const; diff --git a/logic/LegacyUpdate.cpp b/logic/LegacyUpdate.cpp index 5d82a76b..15c99234 100644 --- a/logic/LegacyUpdate.cpp +++ b/logic/LegacyUpdate.cpp @@ -26,9 +26,56 @@ #include <JlCompress.h> #include "logger/QsLog.h" #include "logic/net/URLConstants.h" +#include <QStringList> LegacyUpdate::LegacyUpdate(BaseInstance *inst, QObject *parent) : Task(parent), m_inst(inst) { + // 1.3 - 1.3.2 + auto libs13 = QList<FMLlib>{ + {"argo-2.25.jar", "bb672829fde76cb163004752b86b0484bd0a7f4b", false}, + {"guava-12.0.1.jar", "b8e78b9af7bf45900e14c6f958486b6ca682195f", false}, + {"asm-all-4.0.jar", "98308890597acb64047f7e896638e0d98753ae82", false}}; + + fmlLibsMapping["1.3.2"] = libs13; + + auto libs14 = QList<FMLlib>{ + {"argo-2.25.jar", "bb672829fde76cb163004752b86b0484bd0a7f4b", false}, + {"guava-12.0.1.jar", "b8e78b9af7bf45900e14c6f958486b6ca682195f", false}, + {"asm-all-4.0.jar", "98308890597acb64047f7e896638e0d98753ae82", false}, + {"bcprov-jdk15on-147.jar", "b6f5d9926b0afbde9f4dbe3db88c5247be7794bb", false}}; + + fmlLibsMapping["1.4"] = libs14; + fmlLibsMapping["1.4.1"] = libs14; + fmlLibsMapping["1.4.2"] = libs14; + fmlLibsMapping["1.4.3"] = libs14; + fmlLibsMapping["1.4.4"] = libs14; + fmlLibsMapping["1.4.5"] = libs14; + fmlLibsMapping["1.4.6"] = libs14; + fmlLibsMapping["1.4.7"] = libs14; + + fmlLibsMapping["1.5"] = QList<FMLlib>{ + {"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51", false}, + {"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", false}, + {"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58", false}, + {"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", true}, + {"deobfuscation_data_1.5.zip", "5f7c142d53776f16304c0bbe10542014abad6af8", false}, + {"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85", true}}; + + fmlLibsMapping["1.5.1"] = QList<FMLlib>{ + {"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51", false}, + {"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", false}, + {"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58", false}, + {"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", true}, + {"deobfuscation_data_1.5.1.zip", "22e221a0d89516c1f721d6cab056a7e37471d0a6", false}, + {"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85", true}}; + + fmlLibsMapping["1.5.2"] = QList<FMLlib>{ + {"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51", false}, + {"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", false}, + {"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58", false}, + {"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", true}, + {"deobfuscation_data_1.5.2.zip", "446e55cd986582c70fcf12cb27bc00114c5adfd9", false}, + {"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85", true}}; } void LegacyUpdate::executeTask() @@ -50,10 +97,130 @@ void LegacyUpdate::executeTask() else { */ - lwjglStart(); + fmllibsStart(); //} } +void LegacyUpdate::fmllibsStart() +{ + // Get the mod list + LegacyInstance *inst = (LegacyInstance *)m_inst; + auto modList = inst->jarModList(); + + bool forge_present = false; + + QString version = inst->intendedVersionId(); + if (!fmlLibsMapping.contains(version)) + { + lwjglStart(); + return; + } + + auto &libList = fmlLibsMapping[version]; + + // determine if we need some libs for FML or forge + setStatus(tr("Checking for FML libraries...")); + for (unsigned i = 0; i < modList->size(); i++) + { + auto &mod = modList->operator[](i); + + // do not use disabled mods. + if (!mod.enabled()) + continue; + + if (mod.type() != Mod::MOD_ZIPFILE) + continue; + + if (mod.mmc_id().contains("forge", Qt::CaseInsensitive)) + { + forge_present = true; + break; + } + if (mod.mmc_id().contains("fml", Qt::CaseInsensitive)) + { + forge_present = true; + break; + } + } + // we don't... + if (!forge_present) + { + lwjglStart(); + return; + } + + // now check the lib folder inside the instance for files. + for (auto &lib : libList) + { + QFileInfo libInfo(PathCombine(inst->libDir(), lib.name)); + if (libInfo.exists()) + continue; + fmlLibsToProcess.append(lib); + } + + // if everything is in place, there's nothing to do here... + if (fmlLibsToProcess.isEmpty()) + { + lwjglStart(); + return; + } + + // download missing libs to our place + setStatus(tr("Dowloading FML libraries...")); + auto dljob = new NetJob("FML libraries"); + auto metacache = MMC->metacache(); + for (auto &lib : fmlLibsToProcess) + { + auto entry = metacache->resolveEntry("fmllibs", lib.name); + QString urlString = lib.ours ? URLConstants::FMLLIBS_OUR_BASE_URL + lib.name + : URLConstants::FMLLIBS_FORGE_BASE_URL + lib.name; + dljob->addNetAction(CacheDownload::make(QUrl(urlString), entry)); + } + + connect(dljob, SIGNAL(succeeded()), SLOT(fmllibsFinished())); + connect(dljob, SIGNAL(failed()), SLOT(fmllibsFailed())); + connect(dljob, SIGNAL(progress(qint64, qint64)), SIGNAL(progress(qint64, qint64))); + legacyDownloadJob.reset(dljob); + legacyDownloadJob->start(); +} + +void LegacyUpdate::fmllibsFinished() +{ + legacyDownloadJob.reset(); + if(!fmlLibsToProcess.isEmpty()) + { + setStatus(tr("Copying FML libraries into the instance...")); + LegacyInstance *inst = (LegacyInstance *)m_inst; + auto metacache = MMC->metacache(); + int index = 0; + for (auto &lib : fmlLibsToProcess) + { + progress(index, fmlLibsToProcess.size()); + auto entry = metacache->resolveEntry("fmllibs", lib.name); + auto path = PathCombine(inst->libDir(), lib.name); + if(!ensureFilePathExists(path)) + { + emitFailed(tr("Failed creating FML library folder inside the instance.")); + return; + } + if (!QFile::copy(entry->getFullPath(), PathCombine(inst->libDir(), lib.name))) + { + emitFailed(tr("Failed copying Forge/FML library: %1.").arg(lib.name)); + return; + } + index++; + } + progress(index, fmlLibsToProcess.size()); + } + lwjglStart(); +} + +void LegacyUpdate::fmllibsFailed() +{ + emitFailed("Game update failed: it was impossible to fetch the required FML libraries."); + return; +} + void LegacyUpdate::lwjglStart() { LegacyInstance *inst = (LegacyInstance *)m_inst; diff --git a/logic/LegacyUpdate.h b/logic/LegacyUpdate.h index 613eb1f9..5b073cb7 100644 --- a/logic/LegacyUpdate.h +++ b/logic/LegacyUpdate.h @@ -27,6 +27,13 @@ class BaseInstance; class QuaZip; class Mod; +struct FMLlib +{ + QString name; + QString checksum; + bool ours; +}; + class LegacyUpdate : public Task { Q_OBJECT @@ -44,6 +51,10 @@ slots: void jarFinished(); void jarFailed(); + void fmllibsStart(); + void fmllibsFinished(); + void fmllibsFailed(); + void extractLwjgl(); void ModTheJar(); @@ -72,4 +83,6 @@ private: private: NetJobPtr legacyDownloadJob; BaseInstance *m_inst = nullptr; + QList<FMLlib> fmlLibsToProcess; + QMap<QString, QList<FMLlib>> fmlLibsMapping; }; diff --git a/logic/net/URLConstants.cpp b/logic/net/URLConstants.cpp index 14b28085..de919448 100644 --- a/logic/net/URLConstants.cpp +++ b/logic/net/URLConstants.cpp @@ -16,4 +16,6 @@ const QString MOJANG_STATUS_URL("http://status.mojang.com/check"); const QString MOJANG_STATUS_NEWS_URL("http://status.mojang.com/news"); const QString LITELOADER_URL("http://dl.liteloader.com/versions/versions.json"); const QString IMGUR_BASE_URL("https://api.imgur.com/3/"); +const QString FMLLIBS_OUR_BASE_URL("http://files.multimc.org/fmllibs/"); +const QString FMLLIBS_FORGE_BASE_URL("http://files.minecraftforge.net/fmllibs/"); }
\ No newline at end of file diff --git a/logic/net/URLConstants.h b/logic/net/URLConstants.h index c1064115..392d7362 100644 --- a/logic/net/URLConstants.h +++ b/logic/net/URLConstants.h @@ -34,4 +34,6 @@ extern const QString MOJANG_STATUS_URL; extern const QString MOJANG_STATUS_NEWS_URL; extern const QString LITELOADER_URL; extern const QString IMGUR_BASE_URL; +extern const QString FMLLIBS_OUR_BASE_URL; +extern const QString FMLLIBS_FORGE_BASE_URL; } diff --git a/translations/mmc_de.ts b/translations/mmc_de.ts index 2ad9f351..6ff523cf 100644 --- a/translations/mmc_de.ts +++ b/translations/mmc_de.ts @@ -816,7 +816,32 @@ p, li { white-space: pre-wrap; } <context> <name>AuthenticateTask</name> <message> - <location filename="../logic/auth/flows/AuthenticateTask.cpp" line="+197"/> + <location filename="../logic/auth/flows/AuthenticateTask.cpp" line="+87"/> + <source>Authentication server didn't send a client token.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Authentication server attempted to change the client token. This isn't supported.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> + <source>Authentication server didn't send an access token.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+45"/> + <source>Authentication server didn't specify a currently selected profile. The account exists, but likely isn't premium.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Authentication server specified a selected profile that wasn't in the available profiles list.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+37"/> <source>Authenticating: Sending request...</source> <translation>Authentifizierung: Sende Anfrage...</translation> </message> @@ -1429,7 +1454,32 @@ p, li { white-space: pre-wrap; } <context> <name>LegacyUpdate</name> <message> - <location filename="../logic/LegacyUpdate.cpp" line="+80"/> + <location filename="../logic/LegacyUpdate.cpp" line="+122"/> + <source>Checking for FML libraries...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+47"/> + <source>Dowloading FML libraries...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <source>Copying FML libraries into the instance...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> + <source>Failed creating FML library folder inside the instance.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Failed copying Forge/FML library: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> <source>Downloading new LWJGL...</source> <translation>LWJGL wird heruntergeladen...</translation> </message> @@ -1609,7 +1659,7 @@ p, li { white-space: pre-wrap; } <translation>Haupt-Werkzeugleiste</translation> </message> <message> - <location line="+41"/> + <location line="+42"/> <source>Instance Toolbar</source> <translation>Instanz-Werkzeugleiste</translation> </message> @@ -1626,12 +1676,12 @@ p, li { white-space: pre-wrap; } <message> <location line="+3"/> <location line="+3"/> - <location line="+342"/> + <location line="+358"/> <source>Add a new instance.</source> <translation>Neue Instanz erstellen.</translation> </message> <message> - <location line="-332"/> + <location line="-348"/> <source>View Instance Folder</source> <translation>Instanzordner öffnen</translation> </message> @@ -1676,12 +1726,12 @@ p, li { white-space: pre-wrap; } </message> <message> <location line="+10"/> - <location line="+136"/> + <location line="+152"/> <source>Settings</source> <translation>Einstellungen</translation> </message> <message> - <location line="-133"/> + <location line="-149"/> <location line="+3"/> <source>Change settings.</source> <translation>Einstellungen ändern.</translation> @@ -1706,7 +1756,7 @@ p, li { white-space: pre-wrap; } <translation type="vanished">Den MultiMC-Entwicklerblog öffnen, um Neuigkeiten über MultiMC zu erhalten.</translation> </message> <message> - <location line="+10"/> + <location line="+26"/> <source>More News</source> <translation>Mehr Nachrichten</translation> </message> @@ -1912,13 +1962,24 @@ p, li { white-space: pre-wrap; } <translation>Kopiere Instanz</translation> </message> <message> + <location line="-243"/> + <source>Support us on Patreon!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> <location line="+3"/> + <source>Open the MultiMC Patreon page.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+240"/> <source>Copy the selected instance.</source> <translation>Kopiere die ausgewählte Instanz.</translation> </message> <message> <location line="+8"/> - <location filename="../gui/MainWindow.cpp" line="+241"/> + <location filename="../gui/MainWindow.cpp" line="+248"/> <source>Manage Accounts</source> <translation>Verwalte Konten</translation> </message> @@ -1959,18 +2020,33 @@ You are using the latest version.</source> Du verwendest bereits die neueste Version.</translation> </message> <message> - <location line="+41"/> + <location line="+45"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> - <location line="+20"/> - <location line="+929"/> + <location line="+3"/> + <source>Copy instance</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+14"/> + <source>MultiMC</source> + <translation type="unfinished">MultiMC</translation> + </message> + <message> + <location line="+3"/> + <source>Create instance</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+23"/> + <location line="+934"/> <source>Launch</source> <translation type="unfinished"></translation> </message> <message> - <location line="-927"/> + <location line="-932"/> <source>Profilers</source> <translation type="unfinished"></translation> </message> @@ -2030,14 +2106,14 @@ Du verwendest bereits die neueste Version.</translation> <location line="+37"/> <location line="+7"/> <location line="+7"/> - <location line="+424"/> + <location line="+429"/> <location line="+30"/> <location line="+80"/> <source>Error</source> <translation>Fehler</translation> </message> <message> - <location line="-613"/> + <location line="-618"/> <location line="+71"/> <source>Failed to create the instance directory.</source> <translation type="unfinished"></translation> @@ -2050,14 +2126,14 @@ Du verwendest bereits die neueste Version.</translation> </message> <message> <location line="-49"/> - <location line="+585"/> + <location line="+590"/> <source>MultiMC cannot download Minecraft or update instances unless you have at least one account added. Please add your Mojang or Minecraft account.</source> <translation>MultiMC kann Minecraft nicht herunterladen und keine Instanzen aktualisieren, solange du kein Konto erstellt hast. Bitte füge dein Mojang- oder Minecraft-Konto hinzu.</translation> </message> <message> - <location line="-473"/> + <location line="-478"/> <source>Group name</source> <translation>Gruppenname</translation> </message> @@ -2067,7 +2143,7 @@ Bitte füge dein Mojang- oder Minecraft-Konto hinzu.</translation> <translation>Neuen Gruppennamen eingeben.</translation> </message> <message> - <location line="+92"/> + <location line="+97"/> <source>CAREFUL</source> <translation>ACHTUNG</translation> </message> @@ -2747,7 +2823,15 @@ Die folgende Instanz löschen:</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+76"/> + <location line="+66"/> + <source>Some libraries marked as 'local' are missing their jar files: +%1 + +You'll have to correct this problem manually. If this is an externally tracked instance, make sure to run it at least once outside of MultiMC.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+28"/> <source>Failed to download the following files: %1 @@ -2898,7 +2982,27 @@ Diese Mitteilung wird so lange angezeigt, bis du die Option entfernt hast.</tran <context> <name>RefreshTask</name> <message> - <location filename="../logic/auth/flows/RefreshTask.cpp" line="+146"/> + <location filename="../logic/auth/flows/RefreshTask.cpp" line="+76"/> + <source>Authentication server didn't send a client token.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Authentication server attempted to change the client token. This isn't supported.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Authentication server didn't send an access token.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>Authentication server didn't specify the same prefile as expected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+39"/> <source>Refreshing login token...</source> <translation>Erneuerung des Login-Tokens...</translation> </message> @@ -3566,7 +3670,7 @@ Diese Mitteilung wird so lange angezeigt, bis du die Option entfernt hast.</tran <context> <name>ValidateTask</name> <message> - <location filename="../logic/auth/flows/ValidateTask.cpp" line="+58"/> + <location filename="../logic/auth/flows/ValidateTask.cpp" line="+57"/> <source>Validating access token: Sending request...</source> <translation>Validiere Zugriffstoken: Sende Anfrage...</translation> </message> @@ -3635,22 +3739,40 @@ Diese Mitteilung wird so lange angezeigt, bis du die Option entfernt hast.</tran <context> <name>YggdrasilTask</name> <message> - <location filename="../logic/auth/YggdrasilTask.cpp" line="+104"/> + <location filename="../logic/auth/YggdrasilTask.cpp" line="+119"/> <source><b>SSL Handshake failed.</b><br/>There might be a few causes for it:<br/><ul><li>You use Windows XP and need to <a href="http://www.microsoft.com/en-us/download/details.aspx?id=38918">update your root certificates</a></li><li>Some device on your network is interfering with SSL traffic. In that case, you have bigger worries than Minecraft not starting.</li><li>Possibly something else. Check the MultiMC log file for details</li></ul></source> <translation><b>SSL-Handshake fehlgeschlagen.</b><br/>Es kann mehrere Erklärungen geben:<br/><ul><li>Du benutzt Windows XP und musst <a href="http://www.microsoft.com/en-us/download/details.aspx?id=38918">dein Stammzertifikat aktualisieren</a></li><li>Ein Gerät in deinem Netzwerk mischt sich in den SSL-Verkehr ein. In diesem Fall hast du größere Probleme, als das, dass Minecraft nicht gestartet werden kann.</li><li>Möglicherweise etwas anderes. Prüfe die MultiMC-Logdatei für Details</li></ul></translation> </message> <message> - <location line="+47"/> <source>An unknown error occurred when processing the response from the authentication server.</source> - <translation>Ein unbekannter Fehler ist beim Bearbeiten der Antwort des Authentifizierungs-Servers aufgetreten.</translation> + <translation type="vanished">Ein unbekannter Fehler ist beim Bearbeiten der Antwort des Authentifizierungs-Servers aufgetreten.</translation> </message> <message> - <location line="+5"/> <source>Failed to parse Yggdrasil JSON response: %1 at offset %2.</source> - <translation>Fehler beim Bearbeiten der Yggdrasil-JSON-Antwort: %1 bei %2.</translation> + <translation type="vanished">Fehler beim Bearbeiten der Yggdrasil-JSON-Antwort: %1 bei %2.</translation> + </message> + <message> + <location line="-8"/> + <source>Authentication operation timed out.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Authentication operation cancelled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Authentication operation failed due to a network error: %1 (%2)</source> + <translation type="unfinished"></translation> </message> <message> <location line="+26"/> + <source>Failed to parse authentication server response JSON response: %1 at offset %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+29"/> <source>An unknown error occurred when trying to communicate with the authentication server: %1</source> <translation>Ein unbekannter Fehler ist bei der Kommunikation mit den Authentifizierungs-Servern aufgetreten: %1</translation> </message> @@ -3660,7 +3782,7 @@ Diese Mitteilung wird so lange angezeigt, bis du die Option entfernt hast.</tran <translation>Ein unbekannter Yggdrasil-Fehler ist aufgetreten.</translation> </message> <message> - <location line="+9"/> + <location line="+11"/> <source>Sending request to auth servers...</source> <translation>Sende Anfrage an die Authentifizierungs-Server...</translation> </message> @@ -3671,8 +3793,27 @@ Diese Mitteilung wird so lange angezeigt, bis du die Option entfernt hast.</tran </message> <message> <location line="+2"/> + <source>Authentication task succeeded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Failed to contact the authentication server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Failed to authenticate.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>...</source> + <translation type="unfinished">...</translation> + </message> + <message> <source>Processing. Please wait...</source> - <translation>Bearbeite. Bitte warten...</translation> + <translation type="vanished">Bearbeite. Bitte warten...</translation> </message> </context> </TS> diff --git a/translations/mmc_fr.ts b/translations/mmc_fr.ts new file mode 100644 index 00000000..dbdcdbac --- /dev/null +++ b/translations/mmc_fr.ts @@ -0,0 +1,3808 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fr_FR" sourcelanguage="en"> +<context> + <name>AboutDialog</name> + <message> + <source>Dialog</source> + <translation type="vanished">Dialogue</translation> + </message> + <message> + <source>MultiMC</source> + <translation type="vanished">MultiMC</translation> + </message> + <message> + <location filename="../gui/dialogs/AboutDialog.ui" line="+111"/> + <source>About</source> + <translation>À propos</translation> + </message> + <message> + <source>MultiMC is a custom launcher that makes managing Minecraft easier by allowing you to have multiple installations of Minecraft at once.</source> + <translation type="vanished">MultiMC est un lanceur personalisé qui permet de configurer minecraft plus facilement en permettant l'installation de plusieures instances de minecraft en une.</translation> + </message> + <message> + <location line="-91"/> + <source>About MultiMC</source> + <translation>À propos de MultiMC</translation> + </message> + <message> + <location line="+69"/> + <source>MultiMC 5</source> + <translation>MultiMC 5</translation> + </message> + <message> + <location line="+28"/> + <source>Version:</source> + <translation>Version:</translation> + </message> + <message> + <location line="+10"/> + <source>Version Type:</source> + <translation>Type de version:</translation> + </message> + <message> + <location line="+10"/> + <source>Platform:</source> + <translation>Plateforme:</translation> + </message> + <message> + <location line="+10"/> + <source>Build Number:</source> + <translation>Build numéro:</translation> + </message> + <message> + <location line="+10"/> + <source>Channel:</source> + <translation>Canal:</translation> + </message> + <message> + <location line="+13"/> + <source><html><head/><body><p>MultiMC is a custom launcher that makes managing Minecraft easier by allowing you to have multiple instances of Minecraft at once.</p></body></html></source> + <translation><html><head/><body><p>MultiMC est un lanceur personalisé qui permet de configurer minecraft plus facilement en permettant l'installation de plusieures instances de minecraft en une.</p></body></html></translation> + </message> + <message> + <location line="+19"/> + <source>© 2013 MultiMC Contributors</source> + <translation>© 2013 MultiMC Contributeurs</translation> + </message> + <message> + <location line="+15"/> + <source><html><head/><body><p><a href="http://github.com/MultiMC/MultiMC5"><span style=" text-decoration: underline; color:#0000ff;">http://github.com/MultiMC/MultiMC5</span></a></p></body></html></source> + <translation></translation> + </message> + <message> + <location line="+41"/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta na |
