From 40a97c3d829ac9d4640e7697109add8b9740136a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 27 Jul 2013 20:23:23 +0200 Subject: [PATCH] Added I18N for PQs, initial version. Hence resource file and language files. Changed samplesphysicalquantities to check some I18N topics. --- samples/blackmiscquantities/main.cpp | 14 ++- .../sample_quantities_avionics.pro | 1 - .../samplesphysicalquantities.cpp | 12 +- src/blackbox/blackbox.pro | 2 +- src/blackcore/fsd_client.cpp | 2 +- src/blackcore/multiplayer.cpp | 2 +- src/blackcore/multiplayer.h | 2 +- src/blackmisc/aviomodulator.h | 7 +- src/blackmisc/aviotransponder.cpp | 2 +- src/blackmisc/aviotransponder.h | 3 +- src/blackmisc/avverticalpositions.cpp | 2 +- src/blackmisc/avverticalpositions.h | 3 +- src/blackmisc/basestreamstringifier.h | 14 ++- src/blackmisc/blackmisc.pro | 9 +- src/blackmisc/blackmisc.qrc | 7 ++ src/blackmisc/blackmiscfreefunctions.cpp | 8 ++ src/blackmisc/blackmiscfreefunctions.h | 14 +++ src/blackmisc/com_server.cpp | 4 +- src/blackmisc/coordinategeodetic.cpp | 4 +- src/blackmisc/coordinategeodetic.h | 3 +- src/blackmisc/debug.cpp | 2 +- src/blackmisc/display.cpp | 2 +- src/blackmisc/mathmatrixbase.cpp | 2 +- src/blackmisc/mathmatrixbase.h | 3 +- src/blackmisc/mathvector3dbase.cpp | 2 +- src/blackmisc/mathvector3dbase.h | 3 +- src/blackmisc/pqbase.cpp | 4 +- src/blackmisc/pqbase.h | 26 ++-- src/blackmisc/pqphysicalquantity.cpp | 17 ++- src/blackmisc/pqphysicalquantity.h | 16 ++- src/blackmisc/pqunits.h | 49 ++++++-- .../translations/blackmisc_i18n_de.qm | Bin 0 -> 1426 bytes .../translations/blackmisc_i18n_de.ts | 118 ++++++++++++++++++ .../translations/blackmisc_i18n_en.qm | Bin 0 -> 302 bytes .../translations/blackmisc_i18n_en.ts | 118 ++++++++++++++++++ .../translations/blackmisc_i18n_fr.qm | Bin 0 -> 796 bytes .../translations/blackmisc_i18n_fr.ts | 118 ++++++++++++++++++ src/blackx/CMakeLists.txt | 0 38 files changed, 523 insertions(+), 72 deletions(-) create mode 100644 src/blackmisc/blackmisc.qrc create mode 100644 src/blackmisc/translations/blackmisc_i18n_de.qm create mode 100644 src/blackmisc/translations/blackmisc_i18n_de.ts create mode 100644 src/blackmisc/translations/blackmisc_i18n_en.qm create mode 100644 src/blackmisc/translations/blackmisc_i18n_en.ts create mode 100644 src/blackmisc/translations/blackmisc_i18n_fr.qm create mode 100644 src/blackmisc/translations/blackmisc_i18n_fr.ts delete mode 100644 src/blackx/CMakeLists.txt diff --git a/samples/blackmiscquantities/main.cpp b/samples/blackmiscquantities/main.cpp index 906cb356f..147754977 100644 --- a/samples/blackmiscquantities/main.cpp +++ b/samples/blackmiscquantities/main.cpp @@ -2,10 +2,11 @@ * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include #include "samplesphysicalquantities.h" #include "samplesaviation.h" -#include +#include "blackmisc/blackmiscfreefunctions.h" using namespace BlackMisc; using namespace BlackMiscTest; @@ -15,8 +16,19 @@ using namespace BlackMiscTest; */ int main(int argc, char *argv[]) { + BlackMisc::initResources(); + QFile file(":/translations/blackmisc_i18n_de.qm"); + qDebug() << (file.exists() ? "Found translations in resources" : "No translations in resources"); + + QTranslator translator; + translator.load("blackmisc_i18n_de", ":/translations/"); QCoreApplication a(argc, argv); + qDebug() << "Use I18N version, y? n?"; + int yn = getchar(); + bool t = (yn == 'y' || yn == 'Y') ? a.installTranslator(&translator) : false; + qDebug() << (t ? "Installed translator" : "No translator "); + CSamplesPhysicalQuantities::samples(); CSamplesAviation::samples(); diff --git a/samples/blackmiscquantities/sample_quantities_avionics.pro b/samples/blackmiscquantities/sample_quantities_avionics.pro index 98c3d24c0..dd34fafb5 100644 --- a/samples/blackmiscquantities/sample_quantities_avionics.pro +++ b/samples/blackmiscquantities/sample_quantities_avionics.pro @@ -1,5 +1,4 @@ QT += core dbus -QT -= gui TARGET = sample_quantities_avionics TEMPLATE = app diff --git a/samples/blackmiscquantities/samplesphysicalquantities.cpp b/samples/blackmiscquantities/samplesphysicalquantities.cpp index 7b4eaafeb..ca451855b 100644 --- a/samples/blackmiscquantities/samplesphysicalquantities.cpp +++ b/samples/blackmiscquantities/samplesphysicalquantities.cpp @@ -26,9 +26,9 @@ int CSamplesPhysicalQuantities::samples() CLengthUnit lu1(CLengthUnit::cm()); CLengthUnit lu2(CLengthUnit::ft()); - QString lu1s = lu1.toQString(); - QString lu2s = lu2.toQString(); - qDebug() << lu1 << lu2 << lu1s << lu2s; + QString lu1s = lu1.toQString(true); + QString lu2s = lu2.toQString(true); + qDebug() << lu1 << lu2 << lu1s << lu2s << lu1.getName(true) << lu2.getName(true); const CLength l1(5.0, CLengthUnit::ft()); // 5 ft CLength l2(1, CLengthUnit::NM()); // 1NM CLength l3(1, CLengthUnit::km()); @@ -89,8 +89,8 @@ int CSamplesPhysicalQuantities::samples() CTemperature t1; CTemperature t2(20, CTemperatureUnit::C()); CTemperature t3(1, CTemperatureUnit::F()); - qDebug() << t1 << t2 << t2.convertedSiValueRoundedWithUnit(); - qDebug() << t3 << t3.valueRoundedWithUnit(CTemperatureUnit::C()); + qDebug() << t1 << t2 << t2.convertedSiValueRoundedWithUnit(true); + qDebug() << t3.valueRoundedWithUnit(CTemperatureUnit::F(), -1 ,true) << t3.valueRoundedWithUnit(CTemperatureUnit::C(), -1, true) << "I18N/UTF"; // some logging with CLogMessage // bDebug << p1; @@ -111,7 +111,7 @@ int CSamplesPhysicalQuantities::samples() qDebug() << ti1 << ti2; CAcceleration ac1(10, CAccelerationUnit::m_s2()); - qDebug() << ac1; + qDebug() << ac1 << ac1.unitValueRoundedWithUnit(-1, true) << "I18N/UTF"; // bye qDebug() << "-----------------------------------------------"; diff --git a/src/blackbox/blackbox.pro b/src/blackbox/blackbox.pro index 79dad5973..9587feccc 100644 --- a/src/blackbox/blackbox.pro +++ b/src/blackbox/blackbox.pro @@ -4,7 +4,7 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets INCLUDEPATH += . .. -TARGET = BlackBox +TARGET = blackbox TEMPLATE = app SOURCES += *.cpp diff --git a/src/blackcore/fsd_client.cpp b/src/blackcore/fsd_client.cpp index 6a4e754c5..07796e03e 100644 --- a/src/blackcore/fsd_client.cpp +++ b/src/blackcore/fsd_client.cpp @@ -60,7 +60,7 @@ namespace FSD return m_tcp_socket->state() == QAbstractSocket::ConnectedState; } - QString CFSDClient::getErrorMessage(QAbstractSocket::SocketError error) + QString CFSDClient::getErrorMessage(QAbstractSocket::SocketError /* error */) { return QString("Unknown"); } diff --git a/src/blackcore/multiplayer.cpp b/src/blackcore/multiplayer.cpp index 68a9545cc..2a7da6c9d 100644 --- a/src/blackcore/multiplayer.cpp +++ b/src/blackcore/multiplayer.cpp @@ -93,7 +93,7 @@ void CMultiPlayer::addPlane(CPlane *plane) m_multiplayer_planes.insert(plane->callsign(), plane); } -void CMultiPlayer::removePlane(CPlane *plane) +void CMultiPlayer::removePlane(CPlane * /** plane **/) { qint32 id = 0; m_simulator->removePlane(id); diff --git a/src/blackcore/multiplayer.h b/src/blackcore/multiplayer.h index 3aea55864..c61863383 100644 --- a/src/blackcore/multiplayer.h +++ b/src/blackcore/multiplayer.h @@ -81,7 +81,7 @@ namespace BlackCore { void addPlane(CPlane *plane); - void removePlane(CPlane *plane); + void removePlane(CPlane *); bool needsToRemoved(CPlane *plane); diff --git a/src/blackmisc/aviomodulator.h b/src/blackmisc/aviomodulator.h index a720320e5..249b7e9bd 100644 --- a/src/blackmisc/aviomodulator.h +++ b/src/blackmisc/aviomodulator.h @@ -80,12 +80,13 @@ protected: /*! * \brief String for converter + * \param i18n * \return */ - virtual QString stringForConverter() const { + virtual QString stringForConverter(bool i18n = false) const { QString s(this->getName()); - s.append(" Active: ").append(this->m_frequencyActive.unitValueRoundedWithUnit(3)); - s.append(" Standby: ").append(this->m_frequencyStandby.unitValueRoundedWithUnit(3)); + s.append(" Active: ").append(this->m_frequencyActive.unitValueRoundedWithUnit(3, i18n)); + s.append(" Standby: ").append(this->m_frequencyStandby.unitValueRoundedWithUnit(3, i18n)); return s; } diff --git a/src/blackmisc/aviotransponder.cpp b/src/blackmisc/aviotransponder.cpp index d5ffbab9b..e471615c8 100644 --- a/src/blackmisc/aviotransponder.cpp +++ b/src/blackmisc/aviotransponder.cpp @@ -45,7 +45,7 @@ bool CTransponder::validate(bool strict) const /** * String representation */ -QString CTransponder::stringForConverter() const +QString CTransponder::stringForConverter(bool /** i18n **/) const { QString s = this->getName(); s = s.append(" ").append(this->getTransponderCodeFormatted()).append(" ").append(this->getModeAsString()); diff --git a/src/blackmisc/aviotransponder.h b/src/blackmisc/aviotransponder.h index ffff37c1a..50961eab7 100644 --- a/src/blackmisc/aviotransponder.h +++ b/src/blackmisc/aviotransponder.h @@ -90,9 +90,10 @@ protected: /*! * \brief Meaningful string representation + * \param i18n * \return */ - virtual QString stringForConverter() const; + virtual QString stringForConverter(bool i18n = false) const; public: /*! diff --git a/src/blackmisc/avverticalpositions.cpp b/src/blackmisc/avverticalpositions.cpp index 6c8a43d7b..cdb93f60e 100644 --- a/src/blackmisc/avverticalpositions.cpp +++ b/src/blackmisc/avverticalpositions.cpp @@ -76,7 +76,7 @@ bool CAviationVerticalPositions::operator !=(const CAviationVerticalPositions &o /* * String representation for converter */ -QString CAviationVerticalPositions::stringForConverter() const +QString CAviationVerticalPositions::stringForConverter(bool /** i18n **/) const { QString s = QString("Altitude: "). append(this->m_altitude.unitValueRoundedWithUnit()). diff --git a/src/blackmisc/avverticalpositions.h b/src/blackmisc/avverticalpositions.h index 583383f43..0250d2598 100644 --- a/src/blackmisc/avverticalpositions.h +++ b/src/blackmisc/avverticalpositions.h @@ -28,9 +28,10 @@ private: protected: /*! * \brief String for converter + * \param i18n * \return */ - virtual QString stringForConverter() const; + virtual QString stringForConverter(bool i18n = false) const; /*! * \brief Unmarshall from Dbus diff --git a/src/blackmisc/basestreamstringifier.h b/src/blackmisc/basestreamstringifier.h index ba5cbcd6b..5e69e1af8 100644 --- a/src/blackmisc/basestreamstringifier.h +++ b/src/blackmisc/basestreamstringifier.h @@ -9,14 +9,15 @@ #include #include -namespace BlackMisc -{ +namespace BlackMisc { + /*! * \brief Provides "to QString" and stream operators */ // Virtual operators: http://stackoverflow.com/a/4571634/356726 class CBaseStreamStringifier { + /*! * \brief Stream << overload to be used in debugging messages * \param debug @@ -127,11 +128,12 @@ public: /*! * \brief Cast as QString + * \bool i18n * \remarks operator cast caused too many ambiguity trouble */ - QString toQString() const + QString toQString(bool i18n = false) const { - return this->stringForConverter(); + return this->stringForConverter(i18n); } protected: @@ -152,9 +154,10 @@ protected: /*! * \brief String for converter + * \param i18n * \return */ - virtual QString stringForConverter() const = 0; + virtual QString stringForConverter(bool i18n = false) const = 0; /*! * \brief Stream to DBus @@ -175,6 +178,7 @@ protected: * \return */ CBaseStreamStringifier& operator=(const CBaseStreamStringifier&) { return *this; } + }; } // namespace diff --git a/src/blackmisc/blackmisc.pro b/src/blackmisc/blackmisc.pro index e2ca61f58..796b2071b 100644 --- a/src/blackmisc/blackmisc.pro +++ b/src/blackmisc/blackmisc.pro @@ -6,14 +6,21 @@ CONFIG += staticlib INCLUDEPATH += .. # DEPENDPATH += . .. // BlackMisc should be independent - # PRECOMPILED_HEADER = stdpch.h precompile_header:!isEmpty(PRECOMPILED_HEADER) { DEFINES += USING_PCH } DEFINES += LOG_IN_FILE +RESOURCES += blackmisc.qrc + +# lupdate +CODECFORTR = UTF-8 +TRANSLATIONS += translations/blackmisc_i18n_de.ts \ + translations/blackmisc_i18n_fr.ts \ + translations/blackmisc_i18n_en.ts HEADERS += *.h SOURCES += *.cpp DESTDIR = ../../lib +OTHER_FILES += $$TRANSLATIONS diff --git a/src/blackmisc/blackmisc.qrc b/src/blackmisc/blackmisc.qrc new file mode 100644 index 000000000..d2d0e250e --- /dev/null +++ b/src/blackmisc/blackmisc.qrc @@ -0,0 +1,7 @@ + + + translations/blackmisc_i18n_de.qm + translations/blackmisc_i18n_fr.qm + translations/blackmisc_i18n_en.qm + + diff --git a/src/blackmisc/blackmiscfreefunctions.cpp b/src/blackmisc/blackmiscfreefunctions.cpp index 0d7074297..77028ea2d 100644 --- a/src/blackmisc/blackmiscfreefunctions.cpp +++ b/src/blackmisc/blackmiscfreefunctions.cpp @@ -69,3 +69,11 @@ void BlackMisc::registerMetadata() Math::registerMetadata(); Geo::registerMetadata(); } + +/* + * Init resources + */ +void BlackMisc::initResources() +{ + initBlackMiscResources(); +} diff --git a/src/blackmisc/blackmiscfreefunctions.h b/src/blackmisc/blackmiscfreefunctions.h index f413249e7..9cdf63641 100644 --- a/src/blackmisc/blackmiscfreefunctions.h +++ b/src/blackmisc/blackmiscfreefunctions.h @@ -10,6 +10,14 @@ #include "mathallclasses.h" #include "geoallclasses.h" +/*! + * \brief Workaround, to call initResource from namespace + */ +inline void initBlackMiscResources() { Q_INIT_RESOURCE(blackmisc); } + +/*! + * Free functions in BlackMisc + */ namespace BlackMisc { /*! @@ -59,6 +67,12 @@ void registerMetadata(); */ void registerMetadata(); +/*! + * \brief Init resources + */ +void initResources(); + + } // BlackMisc #endif // BLACKMISC_FREEFUNCTIONS_H diff --git a/src/blackmisc/com_server.cpp b/src/blackmisc/com_server.cpp index 4b67198aa..510f920b9 100644 --- a/src/blackmisc/com_server.cpp +++ b/src/blackmisc/com_server.cpp @@ -92,7 +92,7 @@ void CComServer::sendToAll(const QString &messageID, const QByteArray &data) } } -QString CComServer::getErrorMessage(const QAbstractSocket::SocketError error) +QString CComServer::getErrorMessage(const QAbstractSocket::SocketError /** error **/) { return QString(); } @@ -128,7 +128,7 @@ void CComServer::onClientDisconnected(uint clientID) m_client_buffers.take(clientID)->deleteLater(); } -void CComServer::onClientMessageReceived(uint clientID, QString &messageID, QByteArray &message) +void CComServer::onClientMessageReceived(uint /** clientID **/, QString &messageID, QByteArray &message) { emit doMessageReceived(messageID, message); } diff --git a/src/blackmisc/coordinategeodetic.cpp b/src/blackmisc/coordinategeodetic.cpp index 1893e8231..cc6c503e2 100644 --- a/src/blackmisc/coordinategeodetic.cpp +++ b/src/blackmisc/coordinategeodetic.cpp @@ -13,10 +13,10 @@ namespace Geo /* * String for converter */ -QString CCoordinateGeodetic::stringForConverter() const +QString CCoordinateGeodetic::stringForConverter(bool i18n) const { QString s = "Geodetic: {%1, %2, %3}"; - return s.arg(this->m_latitude.unitValueRoundedWithUnit(6)).arg(this->m_longitude.unitValueRoundedWithUnit(6)).arg(this->m_height.unitValueRoundedWithUnit()); + return s.arg(this->m_latitude.unitValueRoundedWithUnit(6, i18n)).arg(this->m_longitude.unitValueRoundedWithUnit(6, i18n)).arg(this->m_height.unitValueRoundedWithUnit(i18n)); } /* diff --git a/src/blackmisc/coordinategeodetic.h b/src/blackmisc/coordinategeodetic.h index e065e8792..5f11bb2b3 100644 --- a/src/blackmisc/coordinategeodetic.h +++ b/src/blackmisc/coordinategeodetic.h @@ -49,9 +49,10 @@ protected: /*! * \brief String for converter + * \param i18n * \return */ - virtual QString stringForConverter() const; + virtual QString stringForConverter(bool i18n = false) const; /*! * \brief Stream to DBus diff --git a/src/blackmisc/debug.cpp b/src/blackmisc/debug.cpp index 01bef4277..a07368c82 100644 --- a/src/blackmisc/debug.cpp +++ b/src/blackmisc/debug.cpp @@ -14,7 +14,7 @@ CDebug::CDebug() } -void CDebug::create(const char *logPath, bool logInFile, bool eraseLastLog) +void CDebug::create(const char * /** logPath **/, bool logInFile, bool eraseLastLog) { if (!m_isInitialized) { diff --git a/src/blackmisc/display.cpp b/src/blackmisc/display.cpp index 843d024b2..3647bbf2c 100644 --- a/src/blackmisc/display.cpp +++ b/src/blackmisc/display.cpp @@ -225,7 +225,7 @@ namespace BlackMisc if (m_file->handle() == -1) { if ( !m_file->open(QIODevice::WriteOnly) ) - printf ("Can't open log file '%s': %s\n", m_fileName.toLatin1().constData(), strerror (errno)); + printf ("Can't open log file '%s': %s\n", m_fileName.toLatin1().constData(), strerror(errno)); } if (m_file->handle() != -1) diff --git a/src/blackmisc/mathmatrixbase.cpp b/src/blackmisc/mathmatrixbase.cpp index 2bd2be4b3..17412a656 100644 --- a/src/blackmisc/mathmatrixbase.cpp +++ b/src/blackmisc/mathmatrixbase.cpp @@ -149,7 +149,7 @@ template void CMatrixBase QString CMatrixBase::stringForConverter() const +template QString CMatrixBase::stringForConverter(bool /** i18n **/) const { QString s = "{"; for (int r = 0; r < Rows; r++) diff --git a/src/blackmisc/mathmatrixbase.h b/src/blackmisc/mathmatrixbase.h index f6d95bf41..1463e4566 100644 --- a/src/blackmisc/mathmatrixbase.h +++ b/src/blackmisc/mathmatrixbase.h @@ -46,9 +46,10 @@ protected: /*! * \brief Conversion to string + * \param i18n * \return */ - QString stringForConverter() const; + QString stringForConverter(bool i18n = false) const; /*! * \brief Stream to DBus diff --git a/src/blackmisc/mathvector3dbase.cpp b/src/blackmisc/mathvector3dbase.cpp index 241e88fb6..fb2a0d8c2 100644 --- a/src/blackmisc/mathvector3dbase.cpp +++ b/src/blackmisc/mathvector3dbase.cpp @@ -16,7 +16,7 @@ namespace Math /* * Convert to string */ -template QString CVector3DBase::stringForConverter() const +template QString CVector3DBase::stringForConverter(bool /** i18n **/) const { QString s = ("{%1, %2, %3}"); s = s.arg(QString::number(this->m_i, 'f')). diff --git a/src/blackmisc/mathvector3dbase.h b/src/blackmisc/mathvector3dbase.h index b772bbdeb..90a9ed036 100644 --- a/src/blackmisc/mathvector3dbase.h +++ b/src/blackmisc/mathvector3dbase.h @@ -104,9 +104,10 @@ protected: /*! * \brief String for converter + * \param i18n * \return */ - virtual QString stringForConverter() const; + virtual QString stringForConverter(bool i18n = false) const; /*! * \brief Unmarshall from Dbus diff --git a/src/blackmisc/pqbase.cpp b/src/blackmisc/pqbase.cpp index 3e612bd3e..3ebb7c286 100644 --- a/src/blackmisc/pqbase.cpp +++ b/src/blackmisc/pqbase.cpp @@ -162,9 +162,9 @@ double CMeasurementUnit::conversionToUnit(double value, const CMeasurementUnit & * Value to QString with unit, e.g. "5.00m" * @return */ -QString CMeasurementUnit::valueRoundedWithUnit(double value, int digits) const +QString CMeasurementUnit::valueRoundedWithUnit(double value, int digits, bool i18n) const { - return this->toQStringRounded(value, digits).append(this->getUnitName()); + return this->toQStringRounded(value, digits).append(this->getUnitName(i18n)); } /* diff --git a/src/blackmisc/pqbase.h b/src/blackmisc/pqbase.h index 4883035a6..61f6d8d77 100644 --- a/src/blackmisc/pqbase.h +++ b/src/blackmisc/pqbase.h @@ -8,6 +8,7 @@ #include "blackmisc/basestreamstringifier.h" #include "blackmisc/debug.h" +#include #include #include #include @@ -43,9 +44,10 @@ private: protected: /*! * \brief Name as stringification + * \param i18n * \return */ - virtual QString stringForConverter() const + virtual QString stringForConverter(bool /* i18n */ = false) const { return this->m_name; } @@ -345,16 +347,17 @@ protected: */ virtual QString stringForStreaming() const { - return this->m_name; + return this->getName(false); } /*! - * \brief String for converter is unit + * \brief Name as stringification + * \param i18n * \return */ - virtual QString stringForConverter() const + virtual QString stringForConverter(bool i18n = false) const { - return this->m_unitName; + return this->getUnitName(i18n); } /*! @@ -450,20 +453,22 @@ public: /*! * \brief Name such as "meter" + * \param i18n * \return */ - QString getName() const + QString getName(bool i18n=false) const { - return this->m_name; + return i18n ? QCoreApplication::translate("CMeasurementUnit", this->m_name.toStdString().c_str()) : this->m_name; } /*! * \brief Unit name such as "m" + * \param i18n * \return */ - QString getUnitName() const + QString getUnitName(bool i18n = false) const { - return this->m_unitName; + return i18n ? QCoreApplication::translate("CMeasurementUnit", this->m_unitName.toStdString().c_str()) : this->m_unitName; } /*! @@ -518,9 +523,10 @@ public: * \brief Value rounded with unit, e.g. "5.00m", "30kHz" * \param value * \param digits + * \param i18n * \return */ - virtual QString valueRoundedWithUnit(double value, int digits = -1) const; + virtual QString valueRoundedWithUnit(double value, int digits = -1, bool i18n = false) const; /*! * \brief Threshold for rounding diff --git a/src/blackmisc/pqphysicalquantity.cpp b/src/blackmisc/pqphysicalquantity.cpp index 611a928ba..72eb72eeb 100644 --- a/src/blackmisc/pqphysicalquantity.cpp +++ b/src/blackmisc/pqphysicalquantity.cpp @@ -339,9 +339,9 @@ template QString CPhysicalQuantity::unitValueToQStr /* * Rounded with unit */ -template QString CPhysicalQuantity::unitValueRoundedWithUnit(int digits) const +template QString CPhysicalQuantity::unitValueRoundedWithUnit(int digits, bool i18n) const { - return this->m_unit.valueRoundedWithUnit(this->m_unitValueD, digits); + return this->m_unit.valueRoundedWithUnit(this->m_unitValueD, digits, i18n); } /* @@ -356,20 +356,19 @@ template QString CPhysicalQuantity::convertedSiValu /* * SI base unit value with unit */ -template QString CPhysicalQuantity::convertedSiValueRoundedWithUnit(int digits) const +template QString CPhysicalQuantity::convertedSiValueRoundedWithUnit(int digits, bool i18n) const { - if (digits < 1) digits = this->m_conversionSiUnit.getDisplayDigits(); - return this->convertedSiValueToQStringRounded(digits).append(this->m_conversionSiUnit.getUnitName()); + return this->m_conversionSiUnit.valueRoundedWithUnit(this->m_convertedSiUnitValueD, digits, i18n); } /* * Value rounded in unit */ -template QString CPhysicalQuantity::valueRoundedWithUnit(const MU &unit, int digits) const +template QString CPhysicalQuantity::valueRoundedWithUnit(const MU &unit, int digits, bool i18n) const { - if (unit == this->m_unit) return this->unitValueRoundedWithUnit(digits); - if (unit == this->m_conversionSiUnit) return this->convertedSiValueRoundedWithUnit(digits); - return unit.valueRoundedWithUnit(this->value(unit), digits); + if (unit == this->m_unit) return this->unitValueRoundedWithUnit(digits, i18n); + if (unit == this->m_conversionSiUnit) return this->convertedSiValueRoundedWithUnit(digits, i18n); + return unit.valueRoundedWithUnit(this->value(unit), digits, i18n); } /* diff --git a/src/blackmisc/pqphysicalquantity.h b/src/blackmisc/pqphysicalquantity.h index 4fb3eb4bb..8f1551289 100644 --- a/src/blackmisc/pqphysicalquantity.h +++ b/src/blackmisc/pqphysicalquantity.h @@ -71,12 +71,13 @@ protected: CPhysicalQuantity(double baseValue, const MU &unit, const MU &siConversionUnit); /*! - * \brief String for converter and streaming + * \brief Name as stringification + * \param i18n * \return */ - virtual QString stringForConverter() const + virtual QString stringForConverter(bool i18n = false) const { - return this->unitValueRoundedWithUnit(-1); + return this->unitValueRoundedWithUnit(i18n); } /*! @@ -180,9 +181,10 @@ public: * \brief Value to QString with unit, e.g. "5.00m" * \param unit * \param digits + * \param i18n * \return */ - QString valueRoundedWithUnit(const MU &unit, int digits = -1) const; + QString valueRoundedWithUnit(const MU &unit, int digits = -1, bool i18n = false) const; /*! * \brief Value as int @@ -205,9 +207,10 @@ public: /*! * \brief Value to QString with unit, e.g. "5.00m" * \param digits + * \param i18n * \return */ - QString unitValueRoundedWithUnit(int digits = -1) const; + QString unitValueRoundedWithUnit(int digits = -1, bool i18n = false) const; /*! * \brief Rounded value by n digits @@ -259,9 +262,10 @@ public: /*! * \brief SI Base unit value rounded * \param digits + * \param i18n * \return */ - QString convertedSiValueRoundedWithUnit(int digits = -1) const; + QString convertedSiValueRoundedWithUnit(int digits = -1, bool i18n = false) const; /*! * \brief Add to the unit value. diff --git a/src/blackmisc/pqunits.h b/src/blackmisc/pqunits.h index 3d1ec1605..1e3377403 100644 --- a/src/blackmisc/pqunits.h +++ b/src/blackmisc/pqunits.h @@ -10,12 +10,15 @@ #include #include #include +#include // // Used with the template for quantities. This is the reason for // having all units in one file, since template requires concrete instantiations // +// I18N: http://qt-project.org/doc/qt-4.8/linguist-programmers.html#translating-text-that-is-outside-of-a-qobject-subclass +// namespace BlackMisc { namespace PhysicalQuantities @@ -26,6 +29,7 @@ namespace PhysicalQuantities */ class CLengthUnit : public CMeasurementUnit { + private: /*! * \brief Constructor length unit @@ -43,6 +47,7 @@ private: { // void } + public: /*! * Default constructor, we do not want this, but required for Qt Metasystem @@ -66,16 +71,19 @@ public: { static CLengthUnit m("meter", "m", true, true); return m; + QT_TRANSLATE_NOOP("CMeasurementUnit", "meter"); } + /*! * \brief Nautical miles NM * \return */ static const CLengthUnit &NM() { - static CLengthUnit NM("nautical miles", "NM", false, false, 1000.0 * 1.85200, CMeasurementPrefix::One(), 3); + static CLengthUnit NM("nautical mile", "NM", false, false, 1000.0 * 1.85200, CMeasurementPrefix::One(), 3); return NM; + QT_TRANSLATE_NOOP("CMeasurementUnit", "nautical mile"); } /*! @@ -86,8 +94,10 @@ public: { static CLengthUnit ft("foot", "ft", false, false, 0.3048, CMeasurementPrefix::One(), 0); return ft; + QT_TRANSLATE_NOOP("CMeasurementUnit", "foot"); } + /*! * \brief Kilometer km * \return @@ -96,6 +106,7 @@ public: { static CLengthUnit km("kilometer", "km", true, false, CMeasurementPrefix::k().getFactor(), CMeasurementPrefix::k(), 3); return km; + QT_TRANSLATE_NOOP("CMeasurementUnit", "kilometer"); } /*! @@ -106,6 +117,7 @@ public: { static CLengthUnit cm("centimeter", "cm", true, false, CMeasurementPrefix::c().getFactor(), CMeasurementPrefix::c(), 1); return cm; + QT_TRANSLATE_NOOP("CMeasurementUnit", "centimeter"); } /*! @@ -116,6 +128,7 @@ public: { static CLengthUnit mi("mile", "mi", false, false, 1609.344, CMeasurementPrefix::None(), 3); return mi; + QT_TRANSLATE_NOOP("CMeasurementUnit", "mile"); } /*! @@ -126,6 +139,7 @@ public: { static CLengthUnit mi("mile(statute)", "mi(statute)", false, false, 1609.3472, CMeasurementPrefix::None(), 3); return mi; + QT_TRANSLATE_NOOP("CMeasurementUnit", "mile(statute)"); } /*! @@ -238,6 +252,7 @@ public: { static CAngleUnit rad("radian", "rad", true); return rad; + QT_TRANSLATE_NOOP("CMeasurementUnit", "radian"); } /*! @@ -248,6 +263,8 @@ public: { static CAngleUnit deg("degree", "deg", false, M_PI / 180); return deg; + QT_TRANSLATE_NOOP("CMeasurementUnit", "degree"); + QT_TRANSLATE_NOOP("CMeasurementUnit", "deg"); } /*! @@ -258,6 +275,7 @@ public: { static CAngleUnit deg("segadecimal degree", "segd", false, M_PI / 180, CMeasurementPrefix::One(), 0, 1E-9, CAngleUnit::conversionSexagesimalToSi, CAngleUnit::conversionSexagesimalFromSi); return deg; + QT_TRANSLATE_NOOP("CMeasurementUnit", "segadecimal degree"); } /*! @@ -614,8 +632,9 @@ public: */ static const CPressureUnit &mbar() { - static CPressureUnit bar("bar", "bar", false, 1E2); + static CPressureUnit bar("millibar", "bar", false, 1E2); return bar; + QT_TRANSLATE_NOOP("CMeasurementUnit", "millibar"); } /*! @@ -624,8 +643,9 @@ public: */ static const CPressureUnit &inHg() { - static CPressureUnit inhg("Inch of mercury 0°C", "inHg", false, 3386.389); + static CPressureUnit inhg("inch of mercury 0C", "inHg", false, 3386.389); return inhg; + QT_TRANSLATE_NOOP("CMeasurementUnit", "inch of mercury 0C"); } /*! @@ -634,8 +654,9 @@ public: */ static const CPressureUnit &inHgFL() { - static CPressureUnit inhg("Inch of mercury ", "inHg", false, 3386.5307486631); + static CPressureUnit inhg("inch of mercury", "inHg", false, 3386.5307486631); return inhg; + QT_TRANSLATE_NOOP("CMeasurementUnit", "inch of mercury 0C"); } /*! @@ -750,6 +771,7 @@ public: { static CTemperatureUnit K("Kelvin", "K", true, true); return K; + QT_TRANSLATE_NOOP("CMeasurementUnit", "Kelvin"); } /*! @@ -758,8 +780,10 @@ public: */ static const CTemperatureUnit &C() { - static CTemperatureUnit C("centigrade", "°C", false, false, 1.0, 273.15); + static CTemperatureUnit C("centigrade", "C", false, false, 1.0, 273.15); return C; + QT_TRANSLATE_NOOP("CMeasurementUnit", "centigrade"); + QT_TRANSLATE_NOOP("CMeasurementUnit", "C"); } /*! @@ -768,8 +792,10 @@ public: */ static const CTemperatureUnit &F() { - static CTemperatureUnit F("Fahrenheit", "°F", false, false, 5.0 / 9.0, 459.67); + static CTemperatureUnit F("Fahrenheit", "F", false, false, 5.0 / 9.0, 459.67); return F; + QT_TRANSLATE_NOOP("CMeasurementUnit", "Fahrenheit"); + QT_TRANSLATE_NOOP("CMeasurementUnit", "F"); } /*! @@ -1098,7 +1124,7 @@ public: /*! * Default constructor, we do not want this, but required for Qt Metasystem */ - CAccelerationUnit() : CMeasurementUnit("meter/second²", "m/s²", "acceleration", true, false, 1, CMeasurementPrefix::None(), 1) {} + CAccelerationUnit() : CMeasurementUnit("meter/second²", "m/s^2", "acceleration", true, false, 1, CMeasurementPrefix::None(), 1) {} /*! * Constructor, allows to implement methods in base class @@ -1112,8 +1138,10 @@ public: */ static const CAccelerationUnit &m_s2() { - static CAccelerationUnit ms2("meter/second²", "m/s²", true, false, 1, CMeasurementPrefix::None(), 1); + static CAccelerationUnit ms2("meter/second^2", "m/s^2", true, false, 1, CMeasurementPrefix::None(), 1); return ms2; + QT_TRANSLATE_NOOP("CMeasurementUnit", "meter/second^2"); + QT_TRANSLATE_NOOP("CMeasurementUnit", "m/s^2"); } /*! @@ -1122,8 +1150,10 @@ public: */ static const CAccelerationUnit &ft_s2() { - static CAccelerationUnit fts2("feet/seconds²", "ft/s²", true, false, 3.28084, CMeasurementPrefix::m(), 0); + static CAccelerationUnit fts2("feet/seconds²", "ft/s^2", true, false, 3.28084, CMeasurementPrefix::m(), 0); return fts2; + QT_TRANSLATE_NOOP("CMeasurementUnit", "feet/second^2"); + QT_TRANSLATE_NOOP("CMeasurementUnit", "ft/s^2"); } /*! @@ -1166,6 +1196,7 @@ protected: }; Q_DECLARE_METATYPE(BlackMisc::PhysicalQuantities::CAccelerationUnit) + } // namespace } // namespace #endif // guard diff --git a/src/blackmisc/translations/blackmisc_i18n_de.qm b/src/blackmisc/translations/blackmisc_i18n_de.qm new file mode 100644 index 0000000000000000000000000000000000000000..cef1adb5b47de2cf7ee5e9737d672a3dcb2d154c GIT binary patch literal 1426 zcma)6J7^S96g{(_*>NQyEKxLuFd~8{lkSD&#nNuDQ$YkbK)x6>m%QJ-s$2~ z?FYYKEB@L;k9*tmXYbH|9=x^qh`1+`oA0yylEXZz8W&J$O0~fEP_-@$KlFqxoZyTj z17#z!){CqqM-DS*18sN^aOedjf*4t>8EsEEZ6SkXiV++q+&}|53n^g1gio3fevinc zJlXP$hDatF#<{MFfMA=efaYzYutgxeWQq*tV?eecTFH^xhUz$8WxOX+^o_7qAy!ew z43%}bc9^ulEXHG!fu;~a*%zkkG-k(>k5|{ZVqC82x+yg-qRDcUS=WUaqBeO@+8JY* zqC%5h)o}tXzAsR%q_6Z%Qb{^yTX&nfEj%;yF6)()(JJ92DJ;1EXwkNgwA?K^q!HJj zN8V0Pqlh|X_YXsUi&I8>n7`W9tKeXleVpNq)e2x(Y(ljhRUE2^Q*}oR?4!dDsHBL(9 q4V8wIEM;eR_FLWSE-*&{5rGvGlzh?RB{!u_6=@ghCVyTTMOg!iGdP$4 literal 0 HcmV?d00001 diff --git a/src/blackmisc/translations/blackmisc_i18n_de.ts b/src/blackmisc/translations/blackmisc_i18n_de.ts new file mode 100644 index 000000000..b72c46b01 --- /dev/null +++ b/src/blackmisc/translations/blackmisc_i18n_de.ts @@ -0,0 +1,118 @@ + + + + + CMeasurementUnit + + + meter + Meter + + + + nautical mile + Nautische Meile + + + + foot + Fuß + + + + kilometer + Kilometer + + + + centimeter + Zentimeter + + + + mile + Meile + + + + mile(statute) + Statute Meile + + + + radian + Bogenmaß + + + + degree + Grad + + + + deg + ° + + + + segadecimal degree + Segadezimal + + + + millibar + + + + + + inch of mercury 0C + Inch Hg bei 0°C + + + + Kelvin + + + + + centigrade + Grad Celcsius + + + + C + °C + + + + Fahrenheit + Fahrenheit + + + + F + °F + + + + meter/second^2 + Meter/Sekunde² + + + + m/s^2 + m/s² + + + + ft/s^2 + ft/s² + + + + feet/second^2 + Fuß/Sekunde^2 + + + diff --git a/src/blackmisc/translations/blackmisc_i18n_en.qm b/src/blackmisc/translations/blackmisc_i18n_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..0d750e7d9f9663003145a36259d0971a85cd5c65 GIT binary patch literal 302 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJZ1Bji07zEsaSc`!nYdeq*VJOHH0@9n=u7l~i zOd#heGmv0m*udb-0c0?+0WqU9JCGD`_DxMJE-gyUP0cF_&C4udgsF5xsC2`vl8Iph yTpe>tYC3L}TnuRpB@Fru#SEL^I@r=m^o!$+aBJdV$VJn_nu}XU2hc-IjEn#P6g`mu literal 0 HcmV?d00001 diff --git a/src/blackmisc/translations/blackmisc_i18n_en.ts b/src/blackmisc/translations/blackmisc_i18n_en.ts new file mode 100644 index 000000000..902c5cd7e --- /dev/null +++ b/src/blackmisc/translations/blackmisc_i18n_en.ts @@ -0,0 +1,118 @@ + + + + + CMeasurementUnit + + + meter + + + + + nautical mile + + + + + foot + + + + + kilometer + + + + + centimeter + + + + + mile + + + + + mile(statute) + + + + + radian + + + + + degree + + + + + deg + ° + + + + segadecimal degree + + + + + millibar + + + + + + inch of mercury 0C + + + + + Kelvin + + + + + centigrade + + + + + C + °C + + + + Fahrenheit + + + + + F + °F + + + + meter/second^2 + + + + + m/s^2 + m/s² + + + + ft/s^2 + ft/s² + + + + feet/second^2 + + + + diff --git a/src/blackmisc/translations/blackmisc_i18n_fr.qm b/src/blackmisc/translations/blackmisc_i18n_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..836d44dd289b965cb71203dfc14153e55a270fbe GIT binary patch literal 796 zcmah{Jxjw-6g^Ga7z2V75fO(v34#=yoeXr-NjH&(2x1rU z16&F^>f~N07j^cuV1i&`!hPo@Ip?1H?#)Wind!fu96rv^-PBL7UsnOt875g%d>md*YL7_lCHowhtZvMbXX%m*m}PFC*T9e!KL+=MCdr|K#^| z$>mt(nCvoG6W& z)e42*5;D$Cp`e=xR7W(knFbshG->vhC^RZUA+kj}8VGo&RTUdSkW-IAL5wOQT%<0I zxEgIQXS(u?WEP45k#ve|le_UocBMTkYC$UEq zs4&a0?zGwo-|EEDw%m#*-JHHovq8gQSfioX%;ItHCZ{e(qG>t8mL5~(4QZdhp`sSP E0cXpvRR910 literal 0 HcmV?d00001 diff --git a/src/blackmisc/translations/blackmisc_i18n_fr.ts b/src/blackmisc/translations/blackmisc_i18n_fr.ts new file mode 100644 index 000000000..6cee692ea --- /dev/null +++ b/src/blackmisc/translations/blackmisc_i18n_fr.ts @@ -0,0 +1,118 @@ + + + + + CMeasurementUnit + + + meter + mètre + + + + nautical mile + nautique mile + + + + foot + foot + + + + kilometer + kilomètre + + + + centimeter + + + + + mile + + + + + mile(statute) + + + + + radian + + + + + degree + degré + + + + deg + ° + + + + segadecimal degree + segadecimal + + + + millibar + + + + + + inch of mercury 0C + + + + + Kelvin + + + + + centigrade + + + + + C + °C + + + + Fahrenheit + Fahrenheit + + + + F + °F + + + + meter/second^2 + + + + + m/s^2 + m/s² + + + + ft/s^2 + ft/s² + + + + feet/second^2 + + + + diff --git a/src/blackx/CMakeLists.txt b/src/blackx/CMakeLists.txt deleted file mode 100644 index e69de29bb..000000000