path fixes
This commit is contained in:
+2
-2
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
project(Minecraft_launcher VERSION 0.1 LANGUAGES CXX C)
|
||||
project(BiLauncher VERSION 0.1 LANGUAGES CXX C)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||
@@ -69,7 +69,7 @@ qt_add_resources(BiLauncher "appicon"
|
||||
)
|
||||
|
||||
qt_add_qml_module(BiLauncher
|
||||
URI Minecraft_launcher
|
||||
URI BiLauncher
|
||||
SOURCES
|
||||
localization.h
|
||||
localization.cpp
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import Minecraft_launcher
|
||||
import BiLauncher
|
||||
|
||||
Window {
|
||||
id: window
|
||||
|
||||
+2
-23
@@ -15,24 +15,10 @@
|
||||
|
||||
#include <utility>
|
||||
|
||||
// ── Про потоки ──────────────────────────────────────────────────────────────
|
||||
//
|
||||
// Каталог (m_singles, m_lists, m_codes, m_displayNames) заполняется ровно один
|
||||
// раз в load(), который отрабатывает в main() до того, как BuildSwitcher создаст
|
||||
// свой QThread. Дальше эти поля только читаются, а копирование QString из хэша
|
||||
// безопасно само по себе — поэтому Loc::text() зовётся из рабочего потока
|
||||
// BuildArchiveWorker без единой блокировки.
|
||||
//
|
||||
// Единственное, что меняется на ходу, — m_index, и он QAtomicInt. В худшем
|
||||
// случае сообщение, уже собиравшееся в момент переключения, уедет на прежнем
|
||||
// языке; заметить это невозможно.
|
||||
//
|
||||
// setLanguage(), m_tree, rebuildTree() и languageChanged — только GUI-поток.
|
||||
|
||||
namespace {
|
||||
|
||||
const QString kCatalogPath =
|
||||
QStringLiteral(":/qt/qml/Minecraft_launcher/i18n/translations.json");
|
||||
QStringLiteral(":/qt/qml/BiLauncher/i18n/translations.json");
|
||||
|
||||
const QString kSystem = QStringLiteral("system");
|
||||
|
||||
@@ -43,9 +29,6 @@ QString systemLanguage()
|
||||
: QStringLiteral("en");
|
||||
}
|
||||
|
||||
// Язык из settings.json. Читается напрямую, не через LauncherBackend: тот
|
||||
// появляется только вместе с QML, а язык нужен раньше первой привязки.
|
||||
// Обратной зависимости это не создаёт — файл только читается.
|
||||
QString storedLanguage()
|
||||
{
|
||||
QFile file(LauncherPaths::settingsFile());
|
||||
@@ -60,7 +43,7 @@ QString storedLanguage()
|
||||
return value.isString() ? value.toString() : kSystem;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
}
|
||||
|
||||
Localization::Localization(QObject *parent)
|
||||
: QObject(parent)
|
||||
@@ -78,8 +61,6 @@ Localization *Localization::create(QQmlEngine *, QJSEngine *jsEngine)
|
||||
Localization &loc = instance();
|
||||
loc.m_engine = jsEngine;
|
||||
loc.rebuildTree();
|
||||
// Синглтон живёт до конца процесса и движку не принадлежит — иначе сборщик
|
||||
// мусора QML попытается удалить статический объект.
|
||||
QJSEngine::setObjectOwnership(&loc, QJSEngine::CppOwnership);
|
||||
return &loc;
|
||||
}
|
||||
@@ -132,8 +113,6 @@ bool Localization::load()
|
||||
m_lists.clear();
|
||||
for (auto it = strings.constBegin(); it != strings.constEnd(); ++it) {
|
||||
const QJsonObject entry = it.value().toObject();
|
||||
// Тип значения определяется по первому языку и обязан совпадать у всех:
|
||||
// за этим следит tools/check_translations.py.
|
||||
const bool isList = entry.value(m_codes.first()).isArray();
|
||||
|
||||
if (isList) {
|
||||
|
||||
Reference in New Issue
Block a user