translation of all project, and new translation mechanism
This commit is contained in:
+34
-33
@@ -1,4 +1,5 @@
|
||||
#include "javainstaller.h"
|
||||
#include "localization.h"
|
||||
|
||||
#include "launcherpaths.h"
|
||||
|
||||
@@ -114,21 +115,21 @@ void JavaInstaller::install(const JavaRuntimeEntry &entry)
|
||||
if (m_running)
|
||||
return;
|
||||
if (!entry.isValid()) {
|
||||
emit failed(entry.version, tr("Сборка Java недоступна для загрузки"));
|
||||
emit failed(entry.version, Loc::text("java.error.buildUnavailable"));
|
||||
return;
|
||||
}
|
||||
|
||||
QString error;
|
||||
if (!LauncherPaths::ensureRootExists(&error)) {
|
||||
emit failed(entry.version, tr("Папка лаунчера недоступна: %1").arg(error));
|
||||
emit failed(entry.version, Loc::text("java.error.launcherDirUnavailable").arg(error));
|
||||
return;
|
||||
}
|
||||
|
||||
m_entry = entry;
|
||||
m_label = tr("%1 %2").arg(javaKindTitle(entry.kind), entry.version);
|
||||
m_label = Loc::text("java.status.nameAndVersion").arg(javaKindTitle(entry.kind), entry.version);
|
||||
m_targetDir = JavaRuntimeStore::dirFor(entry.id);
|
||||
if (m_targetDir.isEmpty()) {
|
||||
emit failed(m_label, tr("Недопустимый идентификатор сборки Java"));
|
||||
emit failed(m_label, Loc::text("java.error.invalidBuildId"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -139,7 +140,7 @@ void JavaInstaller::install(const JavaRuntimeEntry &entry)
|
||||
return;
|
||||
}
|
||||
if (!QDir().mkpath(m_targetDir)) {
|
||||
emit failed(m_label, tr("Не удалось создать %1").arg(QDir::toNativeSeparators(m_targetDir)));
|
||||
emit failed(m_label, Loc::text("common.error.createFailed").arg(QDir::toNativeSeparators(m_targetDir)));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -191,7 +192,7 @@ void JavaInstaller::beginArchive()
|
||||
{
|
||||
if (m_entry.archive != QLatin1String("zip")
|
||||
&& m_entry.archive != QLatin1String("tar.gz")) {
|
||||
fail(tr("Неизвестный формат архива: %1").arg(m_entry.archive));
|
||||
fail(Loc::text("java.error.unknownArchiveFormat").arg(m_entry.archive));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -199,7 +200,7 @@ void JavaInstaller::beginArchive()
|
||||
m_archivePath = LauncherPaths::javaDownloadDir() + u'/'
|
||||
+ (name.isEmpty() ? m_entry.id + QStringLiteral(".archive") : name);
|
||||
m_bytesTotal = m_entry.size;
|
||||
setStage(tr("Загрузка Java %1").arg(m_entry.version));
|
||||
setStage(Loc::text("java.progress.downloadingBuild").arg(m_entry.version));
|
||||
downloadArchive();
|
||||
}
|
||||
|
||||
@@ -207,7 +208,7 @@ void JavaInstaller::downloadArchive()
|
||||
{
|
||||
m_archiveFile = std::make_unique<QSaveFile>(m_archivePath);
|
||||
if (!m_archiveFile->open(QIODevice::WriteOnly)) {
|
||||
fail(tr("Не удалось открыть на запись %1").arg(QDir::toNativeSeparators(m_archivePath)));
|
||||
fail(Loc::text("common.error.openForWriteFailed").arg(QDir::toNativeSeparators(m_archivePath)));
|
||||
return;
|
||||
}
|
||||
m_archiveHash.reset();
|
||||
@@ -260,7 +261,7 @@ void JavaInstaller::handleArchiveFinished(QNetworkReply *reply)
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
m_archiveFile->cancelWriting();
|
||||
m_archiveFile.reset();
|
||||
fail(tr("Не удалось скачать Java %1: %2").arg(m_entry.version, reply->errorString()));
|
||||
fail(Loc::text("java.error.downloadFailed").arg(m_entry.version, reply->errorString()));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -269,14 +270,14 @@ void JavaInstaller::handleArchiveFinished(QNetworkReply *reply)
|
||||
if (actual.compare(m_entry.checksum, Qt::CaseInsensitive) != 0) {
|
||||
m_archiveFile->cancelWriting();
|
||||
m_archiveFile.reset();
|
||||
fail(tr("Контрольная сумма архива Java не совпала — загрузка повреждена"));
|
||||
fail(Loc::text("java.error.archiveChecksum"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_archiveFile->commit()) {
|
||||
m_archiveFile.reset();
|
||||
fail(tr("Не удалось сохранить %1").arg(QDir::toNativeSeparators(m_archivePath)));
|
||||
fail(Loc::text("common.error.saveFailed").arg(QDir::toNativeSeparators(m_archivePath)));
|
||||
return;
|
||||
}
|
||||
m_archiveFile.reset();
|
||||
@@ -290,7 +291,7 @@ void JavaInstaller::startExtraction()
|
||||
// показывать мегабайты, а проценты продолжит.
|
||||
m_bytesTotal = 0;
|
||||
m_bytesSettled = 0;
|
||||
setStage(tr("Распаковка Java %1").arg(m_entry.version));
|
||||
setStage(Loc::text("java.progress.extracting").arg(m_entry.version));
|
||||
|
||||
if (m_entry.archive == QLatin1String("tar.gz")) {
|
||||
startTarExtraction();
|
||||
@@ -300,7 +301,7 @@ void JavaInstaller::startExtraction()
|
||||
m_zip = std::make_unique<ZipExtraction>(m_archivePath);
|
||||
if (!m_zip->reader.isReadable()) {
|
||||
m_zip.reset();
|
||||
fail(tr("Не удалось прочитать архив %1").arg(QDir::toNativeSeparators(m_archivePath)));
|
||||
fail(Loc::text("java.error.archiveReadFailed").arg(QDir::toNativeSeparators(m_archivePath)));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -324,7 +325,7 @@ void JavaInstaller::extractZipChunk()
|
||||
const QString target = m_targetDir + u'/' + info.filePath;
|
||||
if (!isInside(m_targetDir, target)) {
|
||||
m_extractTimer->stop();
|
||||
fail(tr("Архив Java содержит недопустимый путь: %1").arg(info.filePath));
|
||||
fail(Loc::text("java.error.archiveBadPath").arg(info.filePath));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -338,7 +339,7 @@ void JavaInstaller::extractZipChunk()
|
||||
|
||||
if (!QDir().mkpath(QFileInfo(target).absolutePath())) {
|
||||
m_extractTimer->stop();
|
||||
fail(tr("Не удалось создать %1")
|
||||
fail(Loc::text("common.error.createFailed")
|
||||
.arg(QDir::toNativeSeparators(QFileInfo(target).absolutePath())));
|
||||
return;
|
||||
}
|
||||
@@ -347,7 +348,7 @@ void JavaInstaller::extractZipChunk()
|
||||
QFile file(target);
|
||||
if (!file.open(QIODevice::WriteOnly) || file.write(data) != data.size()) {
|
||||
m_extractTimer->stop();
|
||||
fail(tr("Не удалось распаковать %1").arg(info.filePath));
|
||||
fail(Loc::text("java.error.extractEntryFailed").arg(info.filePath));
|
||||
return;
|
||||
}
|
||||
file.close();
|
||||
@@ -389,7 +390,7 @@ void JavaInstaller::startTarExtraction()
|
||||
emit canceled(label);
|
||||
return;
|
||||
}
|
||||
fail(tr("Не удалось распаковать архив Java: %1").arg(message));
|
||||
fail(Loc::text("java.error.extractFailed").arg(message));
|
||||
});
|
||||
|
||||
connect(m_tar, &QProcess::finished, this, [this](int exitCode, QProcess::ExitStatus status) {
|
||||
@@ -407,7 +408,7 @@ void JavaInstaller::startTarExtraction()
|
||||
return;
|
||||
}
|
||||
if (status != QProcess::NormalExit || exitCode != 0) {
|
||||
fail(tr("Распаковка архива Java не удалась: %1")
|
||||
fail(Loc::text("java.error.extractCrashed")
|
||||
.arg(QString::fromLocal8Bit(errorOutput).trimmed()));
|
||||
return;
|
||||
}
|
||||
@@ -421,7 +422,7 @@ void JavaInstaller::startTarExtraction()
|
||||
|
||||
void JavaInstaller::beginMojang()
|
||||
{
|
||||
setStage(tr("Список файлов Java %1").arg(m_entry.version));
|
||||
setStage(Loc::text("java.progress.fileList").arg(m_entry.version));
|
||||
m_currentFile = QStringLiteral("manifest.json");
|
||||
|
||||
QNetworkRequest request{m_entry.url};
|
||||
@@ -445,7 +446,7 @@ void JavaInstaller::beginMojang()
|
||||
if (!m_running)
|
||||
return;
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
fail(tr("Не удалось получить состав рантайма: %1").arg(reply->errorString()));
|
||||
fail(Loc::text("java.error.manifestFetchFailed").arg(reply->errorString()));
|
||||
return;
|
||||
}
|
||||
handleManifest(reply->readAll());
|
||||
@@ -459,13 +460,13 @@ void JavaInstaller::handleManifest(const QByteArray &payload)
|
||||
.value(QStringLiteral("files"))
|
||||
.toObject();
|
||||
if (files.isEmpty()) {
|
||||
fail(tr("Состав рантайма Java не удалось разобрать"));
|
||||
fail(Loc::text("java.error.manifestUnparsable"));
|
||||
return;
|
||||
}
|
||||
if (!prepareTree(files))
|
||||
return;
|
||||
|
||||
setStage(tr("Загрузка Java %1").arg(m_entry.version));
|
||||
setStage(Loc::text("java.progress.downloadingBuild").arg(m_entry.version));
|
||||
if (m_queue.isEmpty()) {
|
||||
if (applyLinks())
|
||||
complete();
|
||||
@@ -481,7 +482,7 @@ bool JavaInstaller::prepareTree(const QJsonObject &files)
|
||||
for (auto it = files.constBegin(); it != files.constEnd(); ++it) {
|
||||
const QString target = m_targetDir + u'/' + it.key();
|
||||
if (!isInside(m_targetDir, target)) {
|
||||
fail(tr("Состав рантайма содержит недопустимый путь: %1").arg(it.key()));
|
||||
fail(Loc::text("java.error.manifestBadPath").arg(it.key()));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -490,7 +491,7 @@ bool JavaInstaller::prepareTree(const QJsonObject &files)
|
||||
|
||||
if (type == QLatin1String("directory")) {
|
||||
if (!QDir().mkpath(target)) {
|
||||
fail(tr("Не удалось создать %1").arg(QDir::toNativeSeparators(target)));
|
||||
fail(Loc::text("common.error.createFailed").arg(QDir::toNativeSeparators(target)));
|
||||
return false;
|
||||
}
|
||||
continue;
|
||||
@@ -546,7 +547,7 @@ void JavaInstaller::startTask(JavaFileTask task)
|
||||
{
|
||||
const QFileInfo info(task.path);
|
||||
if (!QDir().mkpath(info.absolutePath())) {
|
||||
fail(tr("Не удалось создать %1").arg(QDir::toNativeSeparators(info.absolutePath())));
|
||||
fail(Loc::text("common.error.createFailed").arg(QDir::toNativeSeparators(info.absolutePath())));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -554,7 +555,7 @@ void JavaInstaller::startTask(JavaFileTask task)
|
||||
context->task = task;
|
||||
context->file = std::make_unique<QSaveFile>(task.path);
|
||||
if (!context->file->open(QIODevice::WriteOnly)) {
|
||||
fail(tr("Не удалось открыть на запись %1").arg(QDir::toNativeSeparators(task.path)));
|
||||
fail(Loc::text("common.error.openForWriteFailed").arg(QDir::toNativeSeparators(task.path)));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -614,7 +615,7 @@ void JavaInstaller::handleFileFinished(const std::shared_ptr<JavaActiveDownload>
|
||||
if (!retryOrFail(context->task, reason))
|
||||
return;
|
||||
} else {
|
||||
fail(tr("Не удалось скачать %1: %2")
|
||||
fail(Loc::text("common.error.downloadFailed")
|
||||
.arg(QDir(m_targetDir).relativeFilePath(context->task.path), reason));
|
||||
return;
|
||||
}
|
||||
@@ -626,7 +627,7 @@ void JavaInstaller::handleFileFinished(const std::shared_ptr<JavaActiveDownload>
|
||||
const QString actual = QString::fromLatin1(context->hash.result().toHex());
|
||||
if (actual.compare(context->task.sha1, Qt::CaseInsensitive) != 0) {
|
||||
context->file->cancelWriting();
|
||||
if (!retryOrFail(context->task, tr("контрольная сумма не совпала")))
|
||||
if (!retryOrFail(context->task, Loc::text("common.error.checksumMismatch")))
|
||||
return;
|
||||
pump();
|
||||
return;
|
||||
@@ -634,7 +635,7 @@ void JavaInstaller::handleFileFinished(const std::shared_ptr<JavaActiveDownload>
|
||||
}
|
||||
|
||||
if (!context->file->commit()) {
|
||||
fail(tr("Не удалось сохранить %1").arg(QDir::toNativeSeparators(context->task.path)));
|
||||
fail(Loc::text("common.error.saveFailed").arg(QDir::toNativeSeparators(context->task.path)));
|
||||
return;
|
||||
}
|
||||
if (context->task.executable)
|
||||
@@ -649,7 +650,7 @@ void JavaInstaller::handleFileFinished(const std::shared_ptr<JavaActiveDownload>
|
||||
bool JavaInstaller::retryOrFail(JavaFileTask task, const QString &reason)
|
||||
{
|
||||
if (++task.attempts >= kMaxAttempts) {
|
||||
fail(tr("Не удалось скачать %1: %2")
|
||||
fail(Loc::text("common.error.downloadFailed")
|
||||
.arg(QDir(m_targetDir).relativeFilePath(task.path), reason));
|
||||
return false;
|
||||
}
|
||||
@@ -673,7 +674,7 @@ bool JavaInstaller::applyLinks()
|
||||
const QString source =
|
||||
QDir::cleanPath(QFileInfo(linkPath).absolutePath() + u'/' + link.second);
|
||||
if (!QFile::copy(source, linkPath)) {
|
||||
fail(tr("Не удалось создать ссылку %1")
|
||||
fail(Loc::text("java.error.linkFailed")
|
||||
.arg(QDir(m_targetDir).relativeFilePath(linkPath)));
|
||||
return false;
|
||||
}
|
||||
@@ -686,11 +687,11 @@ bool JavaInstaller::applyLinks()
|
||||
|
||||
void JavaInstaller::complete()
|
||||
{
|
||||
setStage(tr("Проверка сборки Java"));
|
||||
setStage(Loc::text("java.progress.verifying"));
|
||||
|
||||
const QString javaPath = JavaRuntimeStore::locateBinary(m_targetDir);
|
||||
if (javaPath.isEmpty()) {
|
||||
fail(tr("В скачанной сборке не нашлось исполняемого файла java"));
|
||||
fail(Loc::text("java.error.noExecutable"));
|
||||
return;
|
||||
}
|
||||
#if !defined(Q_OS_WIN)
|
||||
|
||||
Reference in New Issue
Block a user