translation of all project, and new translation mechanism

This commit is contained in:
2026-09-03 09:18:48 +03:00
parent 00e7c957e4
commit 01af372ef2
32 changed files with 2813 additions and 537 deletions
+14 -19
View File
@@ -1,8 +1,8 @@
#include "javaruntime.h"
#include "localization.h"
#include "launcherpaths.h"
#include <QCoreApplication>
#include <QDir>
#include <QDirIterator>
#include <QFile>
@@ -24,11 +24,6 @@ constexpr auto kExecutable = "java";
const QString kMetaFile = QStringLiteral("runtime.json");
QString translate(const char *text)
{
return QCoreApplication::translate("JavaRuntime", text);
}
} // namespace
QString javaKindKey(JavaRuntimeKind kind)
@@ -55,9 +50,9 @@ std::optional<JavaRuntimeKind> javaKindFromKey(const QString &key)
QString javaKindTitle(JavaRuntimeKind kind)
{
switch (kind) {
case JavaRuntimeKind::Mojang: return translate("Java");
case JavaRuntimeKind::Jdk: return translate("JDK");
case JavaRuntimeKind::Jre: return translate("JRE");
case JavaRuntimeKind::Mojang: return Loc::text("common.java.kind.java");
case JavaRuntimeKind::Jdk: return Loc::text("common.java.kind.jdk");
case JavaRuntimeKind::Jre: return Loc::text("common.java.kind.jre");
}
return {};
}
@@ -159,7 +154,7 @@ bool JavaRuntimeStore::writeMeta(const InstalledJavaRuntime &runtime, QString *e
const QString dir = dirFor(runtime.id);
if (dir.isEmpty()) {
if (error)
*error = translate("недопустимый идентификатор сборки Java");
*error = Loc::text("java.error.invalidRuntimeId");
return false;
}
@@ -174,14 +169,14 @@ bool JavaRuntimeStore::writeMeta(const InstalledJavaRuntime &runtime, QString *e
QSaveFile file(dir + u'/' + kMetaFile);
if (!file.open(QIODevice::WriteOnly)) {
if (error)
*error = translate("не удалось записать %1").arg(QDir::toNativeSeparators(file.fileName()));
*error = Loc::text("java.error.writeFailed").arg(QDir::toNativeSeparators(file.fileName()));
return false;
}
const QByteArray payload = QJsonDocument(object).toJson(QJsonDocument::Compact);
if (file.write(payload) != payload.size() || !file.commit()) {
file.cancelWriting();
if (error)
*error = translate("не удалось записать %1").arg(QDir::toNativeSeparators(file.fileName()));
*error = Loc::text("java.error.writeFailed").arg(QDir::toNativeSeparators(file.fileName()));
return false;
}
return true;
@@ -194,14 +189,14 @@ bool JavaRuntimeStore::remove(const QString &id, QString *error)
// проверка стоит одной строки, а цена ошибки — чужая папка.
if (dir.isEmpty() || !dir.startsWith(LauncherPaths::javaDir() + u'/')) {
if (error)
*error = translate("недопустимый идентификатор сборки Java");
*error = Loc::text("java.error.invalidRuntimeId");
return false;
}
if (!QDir(dir).exists())
return true;
if (!QDir(dir).removeRecursively()) {
if (error)
*error = translate("не удалось удалить %1").arg(QDir::toNativeSeparators(dir));
*error = Loc::text("common.error.removeFailed").arg(QDir::toNativeSeparators(dir));
return false;
}
return true;
@@ -257,14 +252,14 @@ int JavaRequirement::minimumFor(const QString &minecraftVersionId)
QString JavaRequirement::coverage(int javaMajor)
{
if (javaMajor >= 21)
return translate("Minecraft 1.20.5 и новее");
return Loc::text("java.range.modern");
if (javaMajor >= 17)
return translate("Minecraft 1.18 — 1.20.4");
return Loc::text("java.range.mid");
if (javaMajor == 16)
return translate("Minecraft 1.17 — 1.17.1");
return Loc::text("java.range.seventeen");
if (javaMajor >= 9)
return translate("для Minecraft не подходит");
return Loc::text("java.range.unsuitable");
if (javaMajor > 0)
return translate("Minecraft 1.16.5 и старше");
return Loc::text("java.range.legacy");
return {};
}