diff --git a/src/GUI/LocationController.cxx b/src/GUI/LocationController.cxx index af7afc267..f593032b5 100644 --- a/src/GUI/LocationController.cxx +++ b/src/GUI/LocationController.cxx @@ -1042,24 +1042,25 @@ void LocationController::setNavRadioOption() } } -QString compassPointFromHeading(int heading) +QString LocationController::compassPointFromHeading(int heading) const { const int labelArc = 360 / 8; heading += (labelArc >> 1); SG_NORMALIZE_RANGE(heading, 0, 359); + // switch (heading / labelArc) { - case 0: return "N"; - case 1: return "NE"; - case 2: return "E"; - case 3: return "SE"; - case 4: return "S"; - case 5: return "SW"; - case 6: return "W"; - case 7: return "NW"; + case 0: return tr("N"); + case 1: return tr("NE"); + case 2: return tr("E"); + case 3: return tr("SE"); + case 4: return tr("S"); + case 5: return tr("SW"); + case 6: return tr("W"); + case 7: return tr("NW"); } - return QString(); + return {}; } QString LocationController::description() const @@ -1112,7 +1113,7 @@ QString LocationController::description() const } else if (m_useAvailableParking) { locationOnAirport = tr("at an available parking position"); } else if (onRunway) { - QString runwayName = QString("runway %1").arg(QString::fromStdString(m_detailLocation->ident())); + QString runwayName = tr("runway %1").arg(QString::fromStdString(m_detailLocation->ident())); if (m_onFinal) { locationOnAirport = tr("on %2-mile final to %1").arg(runwayName).arg(offsetNm); diff --git a/src/GUI/LocationController.hxx b/src/GUI/LocationController.hxx index 08337c82b..83a90a5c3 100644 --- a/src/GUI/LocationController.hxx +++ b/src/GUI/LocationController.hxx @@ -237,6 +237,8 @@ private: void applyAirspeed(); void applyOnFinal(); + QString compassPointFromHeading(int heading) const; + NavaidSearchModel* m_searchModel = nullptr; CarriersLocationModel* m_carriersModel = nullptr; diff --git a/src/GUI/UnitsModel.cxx b/src/GUI/UnitsModel.cxx index c329bd784..6e433e528 100644 --- a/src/GUI/UnitsModel.cxx +++ b/src/GUI/UnitsModel.cxx @@ -30,18 +30,19 @@ #include #include #include +#include namespace { struct UnitData { - UnitData(QString sn, QString ln, QString metrics, bool pfx = false) : + UnitData(const char* sn, const char* ln, QString metrics, bool pfx = false) : shortName(sn), longName(ln), maxTextForMetrics(metrics), isPrefix(pfx) {} - UnitData(QString sn, QString ln, + UnitData(const char* sn, const char* ln, QString metrics, bool pfx, double min, double max, @@ -56,8 +57,8 @@ struct UnitData decimals(dps) {} - QString shortName; - QString longName; + const char* shortName; + const char* longName; QString maxTextForMetrics; bool isPrefix = false; bool valueWraps = false; @@ -69,23 +70,23 @@ struct UnitData std::vector static_unitData = { { "", "", "" }, // noUnits - { "ft", "feet above sea-level (MSL)", "000000", false, -2000, 180000, 50}, - { "ft AGL", "feet above ground level (AGL)", "000000", false, 0, 180000, 50}, - { "ft above field", "feet above airfield", "000000", false, 0, 180000, 50}, - { "FL", "Flight-level", "000", true /* prefix */, 0.0, 500.0, 5.0}, - { "m", "meters above sea-level (MSL)", "000000", false, -500, 100000, 50}, - { "kts", "Knots", "9999", false, 0, 999999, 10.0}, - { "M", "Mach", "00.000", true /* prefix */, 0.0, 99.0, 0.05, false /* no wrap */, 3 /* decimal places */}, - { "KM/H", "Kilometers/hour", "9999", false, 0, 999999, 10.0}, - { "°True", "degrees true", "000", false, 0, 359, 5.0, true /* wraps */}, - { "°Mag", "degrees magnetic", "000", false, 0, 359, 5.0, true /* wraps */}, - { "UTC", "Universal coordinated time", ""}, - { "Local", "Local time", ""}, - { "Nm", "Nautical miles", "00000", false, 0, 999999, 1.0, false /* no wrap */, 1 /* decimal places */}, - { "Km", "Kilometers", "00000", false, 0, 999999, 1.0, false /* no wrap */, 1 /* decimal places */}, + { QT_TRANSLATE_NOOP("UnitsModel", "ft"), QT_TRANSLATE_NOOP("UnitsModel", "feet above sea-level (MSL)"), "000000", false, -2000, 180000, 50}, + { QT_TRANSLATE_NOOP("UnitsModel", "ft AGL"), QT_TRANSLATE_NOOP("UnitsModel", "feet above ground level (AGL)"), "000000", false, 0, 180000, 50}, + { QT_TRANSLATE_NOOP("UnitsModel", "ft above field"), QT_TRANSLATE_NOOP("UnitsModel", "feet above airfield"), "000000", false, 0, 180000, 50}, + { QT_TRANSLATE_NOOP("UnitsModel", "FL"), QT_TRANSLATE_NOOP("UnitsModel", "Flight-level"), "000", true /* prefix */, 0.0, 500.0, 5.0}, + { QT_TRANSLATE_NOOP("UnitsModel", "m"), QT_TRANSLATE_NOOP("UnitsModel", "meters above sea-level (MSL)"), "000000", false, -500, 100000, 50}, + { QT_TRANSLATE_NOOP("UnitsModel", "kts"), QT_TRANSLATE_NOOP("UnitsModel", "Knots"), "9999", false, 0, 999999, 10.0}, + { QT_TRANSLATE_NOOP("UnitsModel", "M"), QT_TRANSLATE_NOOP("UnitsModel", "Mach"), "00.000", true /* prefix */, 0.0, 99.0, 0.05, false /* no wrap */, 3 /* decimal places */}, + { QT_TRANSLATE_NOOP("UnitsModel", "KM/H"), QT_TRANSLATE_NOOP("UnitsModel", "Kilometers/hour"), "9999", false, 0, 999999, 10.0}, + { QT_TRANSLATE_NOOP("UnitsModel", "°True"), QT_TRANSLATE_NOOP("UnitsModel", "degrees true"), "000", false, 0, 359, 5.0, true /* wraps */}, + { QT_TRANSLATE_NOOP("UnitsModel", "°Mag"), QT_TRANSLATE_NOOP("UnitsModel", "degrees magnetic"), "000", false, 0, 359, 5.0, true /* wraps */}, + { QT_TRANSLATE_NOOP("UnitsModel", "UTC"), QT_TRANSLATE_NOOP("UnitsModel", "Universal coordinated time"), ""}, + { QT_TRANSLATE_NOOP("UnitsModel", "Local"), QT_TRANSLATE_NOOP("UnitsModel", "Local time"), ""}, + { QT_TRANSLATE_NOOP("UnitsModel", "Nm"), QT_TRANSLATE_NOOP("UnitsModel", "Nautical miles"), "00000", false, 0, 999999, 1.0, false /* no wrap */, 1 /* decimal places */}, + { QT_TRANSLATE_NOOP("UnitsModel", "Km"), QT_TRANSLATE_NOOP("UnitsModel", "Kilometers"), "00000", false, 0, 999999, 1.0, false /* no wrap */, 1 /* decimal places */}, - { "MHz", "MHz", "00000", false, 105, 140, 0.025, false /* no wrap */, 3 /* decimal places */}, - { "KHz", "KHz", "00000", false, 200, 400, 1.0, false /* no wrap */, 0 /* decimal places */} + { QT_TRANSLATE_NOOP("UnitsModel", "MHz"), QT_TRANSLATE_NOOP("UnitsModel", "MHz"), "00000", false, 105, 140, 0.025, false /* no wrap */, 3 /* decimal places */}, + { QT_TRANSLATE_NOOP("UnitsModel", "KHz"), QT_TRANSLATE_NOOP("UnitsModel", "KHz"), "00000", false, 200, 400, 1.0, false /* no wrap */, 0 /* decimal places */} }; @@ -115,6 +116,8 @@ const int UnitValueWrapsRole = Qt::UserRole + 7; UnitsModel::UnitsModel() { + + m_enabledUnits = static_modeData.at(m_mode); } @@ -133,8 +136,12 @@ QVariant UnitsModel::data(const QModelIndex &index, int role) const const UnitData& ud = static_unitData.at(u); switch (role) { - case Qt::DisplayRole: return ud.shortName; - case UnitLongNameRole: return ud.longName; + case Qt::DisplayRole: + return qApp->translate("UnitsModel", ud.shortName); + + case UnitLongNameRole: + return qApp->translate("UnitsModel", ud.longName); + case UnitIsPrefixRole: return ud.isPrefix; case UnitMinValueRole: return ud.minValue; case UnitMaxValueRole: return ud.maxValue; @@ -189,7 +196,7 @@ QString UnitsModel::shortText() const { const auto u = m_enabledUnits.at(m_activeIndex); const UnitData& ud = static_unitData.at(u); - return ud.shortName; + return qApp->translate("UnitsModel",ud.shortName); } Units::Type UnitsModel::selectedUnit() const @@ -427,7 +434,7 @@ QString QuantityValue::toString() const const auto& data = static_unitData.at(unit); int dp = data.decimals; QString prefix; - QString suffix = data.shortName; + QString suffix = qApp->translate("UnitsModel", data.shortName); if (data.isPrefix) std::swap(prefix, suffix); diff --git a/src/GUI/qml/Settings.qml b/src/GUI/qml/Settings.qml index b58f9eea1..0a62fb33e 100644 --- a/src/GUI/qml/Settings.qml +++ b/src/GUI/qml/Settings.qml @@ -84,8 +84,8 @@ Item { function summary() { var result = []; - if (startPaused.checked) result.push("paused"); - if (!showConsoleWin.hidden && showConsoleWin.checked) result.push("console"); + if (startPaused.checked) result.push(qsTr("paused")); + if (!showConsoleWin.hidden && showConsoleWin.checked) result.push(qsTr("console")); return result; } @@ -160,7 +160,7 @@ Item { function summary() { var result = []; - if (enableMP.checked) result.push("multi-player"); + if (enableMP.checked) result.push(qsTr("multi-player")); return result; } @@ -298,7 +298,7 @@ Item { function summary() { var result = []; - if (terrasync.checked) result.push("scenery downloads"); + if (terrasync.checked) result.push(qsTr("scenery downloads")); return result; } @@ -371,7 +371,7 @@ Item { function summary() { var result = []; - if (fullscreen.checked) result.push("full-screen"); + if (fullscreen.checked) result.push(qsTr("full-screen")); return result; } @@ -435,7 +435,7 @@ Item { { var result = []; if (rembrandt) result.push(qsTr("Rembrandt")); - else if (alsEnabled) result.push("ALS"); + else if (alsEnabled) result.push(qsTr("ALS")); if (msaaEnabled) result.push(qsTr("anti-aliasing")); return result; }