A system of translations into different languages has been implemented. Added translations into Russian. Various UI fixes for valid internationalization
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
#-------------------------------------------------
|
||||
INCLUDEPATH += $$PWD
|
||||
# Version
|
||||
DT_VERSION = 1.3
|
||||
DT_VERSION = 2.0
|
||||
DEFINES += DT_VERSION=$$DT_VERSION
|
||||
|
||||
!android: {
|
||||
@@ -21,13 +21,13 @@ CONFIG += c++14
|
||||
|
||||
|
||||
# Bluetooth available
|
||||
DEFINES += HAS_BLUETOOTH
|
||||
#DEFINES += HAS_BLUETOOTH
|
||||
|
||||
QT += core gui
|
||||
QT += widgets
|
||||
QT += printsupport
|
||||
#QT += widgets
|
||||
#QT += printsupport
|
||||
QT += network
|
||||
QT += bluetooth
|
||||
#QT += bluetooth
|
||||
QT += quick
|
||||
QT += quickcontrols2
|
||||
QT += charts
|
||||
@@ -75,96 +75,104 @@ build_mobile {
|
||||
}
|
||||
|
||||
SOURCES += main.cpp\
|
||||
akbmonitorpage.cpp \
|
||||
bmsservicepage.cpp \
|
||||
bmssettings.cpp \
|
||||
bmssettingswidget.cpp \
|
||||
cellsmonitorcheckboxdelegate.cpp \
|
||||
cellsmonitorlabelvoltagedelegate.cpp \
|
||||
cellsmonitorpage.cpp \
|
||||
configparamsgetter.cpp \
|
||||
configurationpage.cpp \
|
||||
connectandenterpage.cpp \
|
||||
customlefttabbarbutton.cpp \
|
||||
debugprintpage.cpp \
|
||||
historylineeditbox.cpp \
|
||||
hoverablecombobox.cpp \
|
||||
languageselectorbutton.cpp \
|
||||
mainwindow.cpp \
|
||||
mainwindownew.cpp \
|
||||
# akbmonitorpage.cpp \
|
||||
# bmsservicepage.cpp \
|
||||
# bmssettings.cpp \
|
||||
# bmssettingswidget.cpp \
|
||||
# cellsmonitorcheckboxdelegate.cpp \
|
||||
# cellsmonitorlabelvoltagedelegate.cpp \
|
||||
# cellsmonitorpage.cpp \
|
||||
# configparamsgetter.cpp \
|
||||
# configurationpage.cpp \
|
||||
# connectandenterpage.cpp \
|
||||
# customlefttabbarbutton.cpp \
|
||||
# debugprintpage.cpp \
|
||||
# historylineeditbox.cpp \
|
||||
# hoverablecombobox.cpp \
|
||||
# languageselectorbutton.cpp \
|
||||
# mainwindow.cpp \
|
||||
# mainwindownew.cpp \
|
||||
packet.cpp \
|
||||
settingsextrapage.cpp \
|
||||
# settingsextrapage.cpp \
|
||||
vbytearray.cpp \
|
||||
commands.cpp \
|
||||
configparams.cpp \
|
||||
configparam.cpp \
|
||||
parametereditor.cpp \
|
||||
digitalfiltering.cpp \
|
||||
bleuart.cpp \
|
||||
# parametereditor.cpp \
|
||||
# digitalfiltering.cpp \
|
||||
# bleuart.cpp \
|
||||
utility.cpp \
|
||||
bmsinterface.cpp \
|
||||
visualizationchart.cpp \
|
||||
visualizationpage.cpp
|
||||
translator.cpp \
|
||||
# visualizationchart.cpp \
|
||||
# visualizationpage.cpp
|
||||
|
||||
HEADERS += mainwindow.h \
|
||||
akbmonitorpage.h \
|
||||
bmsservicepage.h \
|
||||
bmssettings.h \
|
||||
bmssettingswidget.h \
|
||||
cellsmonitorcheckboxdelegate.h \
|
||||
cellsmonitorlabelvoltagedelegate.h \
|
||||
cellsmonitorpage.h \
|
||||
configparamsgetter.h \
|
||||
configurationpage.h \
|
||||
connectandenterpage.h \
|
||||
customlefttabbarbutton.h \
|
||||
debugprintpage.h \
|
||||
historylineedit.h \
|
||||
historylineeditbox.h \
|
||||
hoverablecombobox.h \
|
||||
languageselectorbutton.h \
|
||||
mainwindownew.h \
|
||||
HEADERS += \ #mainwindow.h \
|
||||
# akbmonitorpage.h \
|
||||
# bmsservicepage.h \
|
||||
# bmssettings.h \
|
||||
# bmssettingswidget.h \
|
||||
# cellsmonitorcheckboxdelegate.h \
|
||||
# cellsmonitorlabelvoltagedelegate.h \
|
||||
# cellsmonitorpage.h \
|
||||
# configparamsgetter.h \
|
||||
# configurationpage.h \
|
||||
# connectandenterpage.h \
|
||||
# customlefttabbarbutton.h \
|
||||
# debugprintpage.h \
|
||||
# historylineedit.h \
|
||||
# historylineeditbox.h \
|
||||
# hoverablecombobox.h \
|
||||
# languageselectorbutton.h \
|
||||
# mainwindownew.h \
|
||||
packet.h \
|
||||
settingsextrapage.h \
|
||||
# settingsextrapage.h \
|
||||
vbytearray.h \
|
||||
commands.h \
|
||||
datatypes.h \
|
||||
configparams.h \
|
||||
configparam.h \
|
||||
parametereditor.h \
|
||||
digitalfiltering.h \
|
||||
bleuart.h \
|
||||
# parametereditor.h \
|
||||
# digitalfiltering.h \
|
||||
# bleuart.h \
|
||||
utility.h \
|
||||
bmsinterface.h \
|
||||
visualizationchart.h \
|
||||
visualizationpage.h
|
||||
translator.h \
|
||||
# visualizationchart.h \
|
||||
# visualizationpage.h
|
||||
|
||||
FORMS += mainwindow.ui \
|
||||
akbmonitorpage.ui \
|
||||
bmsservicepage.ui \
|
||||
bmssettings.ui \
|
||||
bmssettingswidget.ui \
|
||||
cellsmonitorpage.ui \
|
||||
configurationpage.ui \
|
||||
connectandenterpage.ui \
|
||||
debugprintpage.ui \
|
||||
mainwindownew.ui \
|
||||
parametereditor.ui \
|
||||
settingsextrapage.ui \
|
||||
visualizationpage.ui
|
||||
#FORMS += mainwindow.ui \
|
||||
# akbmonitorpage.ui \
|
||||
# bmsservicepage.ui \
|
||||
# bmssettings.ui \
|
||||
# bmssettingswidget.ui \
|
||||
# cellsmonitorpage.ui \
|
||||
# configurationpage.ui \
|
||||
# connectandenterpage.ui \
|
||||
# debugprintpage.ui \
|
||||
# mainwindownew.ui \
|
||||
# parametereditor.ui \
|
||||
# settingsextrapage.ui \
|
||||
# visualizationpage.ui
|
||||
|
||||
include(pages/pages.pri)
|
||||
include(widgets/widgets.pri)
|
||||
include(mobile/mobile.pri)
|
||||
#include(pages/pages.pri)
|
||||
#include(widgets/widgets.pri)
|
||||
#include(mobile/mobile.pri)
|
||||
|
||||
RESOURCES += res.qrc \
|
||||
qml/qml_icons.qrc \
|
||||
translations/translations.qrc
|
||||
|
||||
RESOURCES += qml/qml_icons.qrc \
|
||||
qml/qml_items.qrc
|
||||
|
||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||
QML_IMPORT_PATH *= $$PWD/qml
|
||||
QML2_IMPORT_PATH *= $$PWD/qml
|
||||
|
||||
TRANSLATIONS = translations/cubo_en.ts \
|
||||
translations/cubo_ru.ts \
|
||||
translations/cubo_it.ts
|
||||
|
||||
DISTFILES += \
|
||||
android/AndroidManifest.xml \
|
||||
android/gradle/wrapper/gradle-wrapper.jar \
|
||||
|
||||
@@ -89,8 +89,11 @@ BMSInterface::BMSInterface(QObject *parent) : QObject(parent)
|
||||
|
||||
// BLE
|
||||
|
||||
#ifdef HAS_BLUETOOTH
|
||||
mBleUart = new BleUart(this);
|
||||
mLastBleAddr = QSettings().value("ble_addr").toString();
|
||||
connect(mBleUart, SIGNAL(dataRx(QByteArray)), this, SLOT(bleDataRx(QByteArray)));
|
||||
#endif
|
||||
|
||||
int size = mSettings.beginReadArray("bleNames");
|
||||
for (int i = 0; i < size; ++i) {
|
||||
@@ -101,8 +104,6 @@ BMSInterface::BMSInterface(QObject *parent) : QObject(parent)
|
||||
}
|
||||
mSettings.endArray();
|
||||
|
||||
connect(mBleUart, SIGNAL(dataRx(QByteArray)), this, SLOT(bleDataRx(QByteArray)));
|
||||
|
||||
mCommands->setbmsConfig(mbmsConfig);
|
||||
|
||||
// Other signals/slots
|
||||
@@ -280,9 +281,11 @@ bool BMSInterface::isPortConnected()
|
||||
res = true;
|
||||
}
|
||||
|
||||
#ifdef HAS_BLUETOOTH
|
||||
if (mBleUart->isConnected()) {
|
||||
res = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
@@ -301,10 +304,12 @@ void BMSInterface::disconnectPort()
|
||||
updateFwRx(false);
|
||||
}
|
||||
|
||||
#ifdef HAS_BLUETOOTH
|
||||
if (mBleUart->isConnected()) {
|
||||
mBleUart->disconnectBle();
|
||||
updateFwRx(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
mFwRetries = 0;
|
||||
}
|
||||
@@ -321,8 +326,12 @@ bool BMSInterface::reconnectLastPort()
|
||||
connectTcp(mLastTcpServer, mLastTcpPort);
|
||||
return true;
|
||||
} else if (mLastConnType == CONN_BLE) {
|
||||
#ifdef HAS_BLUETOOTH
|
||||
mBleUart->startConnect(mLastBleAddr);
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
} else {
|
||||
#ifdef HAS_SERIALPORT
|
||||
QList<VSerialInfo_t> ports = listSerialPorts();
|
||||
@@ -408,10 +417,12 @@ QString BMSInterface::getConnectedPortName()
|
||||
connected = true;
|
||||
}
|
||||
|
||||
#ifdef HAS_BLUETOOTH
|
||||
if (mBleUart->isConnected()) {
|
||||
res = tr("Connected (BLE) to %1").arg(mLastBleAddr);
|
||||
connected = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (connected && mCommands->isLimitedMode()) {
|
||||
res += tr(", limited mode");
|
||||
@@ -551,10 +562,12 @@ void BMSInterface::connectTcp(QString server, int port)
|
||||
|
||||
void BMSInterface::connectBle(QString address)
|
||||
{
|
||||
#ifdef HAS_BLUETOOTH
|
||||
mBleUart->startConnect(address);
|
||||
mLastConnType = CONN_BLE;
|
||||
mLastBleAddr = address;
|
||||
setLastConnectionType(CONN_BLE);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool BMSInterface::isAutoconnectOngoing() const
|
||||
@@ -629,7 +642,7 @@ void BMSInterface::serialPortError(QSerialPort::SerialPortError error)
|
||||
break;
|
||||
|
||||
default:
|
||||
message = "Serial port error: " + mSerialPort->errorString();
|
||||
message = tr("Serial port error: ") + mSerialPort->errorString();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -762,9 +775,11 @@ void BMSInterface::packetDataToSend(QByteArray &data)
|
||||
mTcpSocket->write(data);
|
||||
}
|
||||
|
||||
#ifdef HAS_BLUETOOTH
|
||||
if (mBleUart->isConnected()) {
|
||||
mBleUart->writeData(data);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void BMSInterface::packetReceived(QByteArray &data)
|
||||
@@ -846,15 +861,17 @@ void BMSInterface::fwVersionReceived(int major, int minor, QString hw, QByteArra
|
||||
}
|
||||
}
|
||||
|
||||
QString fwStr;
|
||||
fwStr.sprintf("ENNOID-BMS Firmware Version %d.%d", major, minor);
|
||||
if (!hw.isEmpty()) {
|
||||
fwStr += ", Hardware: " + hw;
|
||||
}
|
||||
auto fwStr = tr("Firmware version: %1.%2, Hardware: %3, UUID: %4").arg(major).arg(minor).arg(hw).arg(strUuid);
|
||||
|
||||
if (!strUuid.isEmpty()) {
|
||||
fwStr += ", UUID: " + strUuid;
|
||||
}
|
||||
// QString fwStr;
|
||||
// fwStr.sprintf("ENNOID-BMS Firmware Version %d.%d", major, minor);
|
||||
// if (!hw.isEmpty()) {
|
||||
// fwStr += ", Hardware: " + hw;
|
||||
// }
|
||||
|
||||
// if (!strUuid.isEmpty()) {
|
||||
// fwStr += ", UUID: " + strUuid;
|
||||
// }
|
||||
|
||||
emit statusMessage(fwStr, true);
|
||||
#if 0
|
||||
|
||||
@@ -141,7 +141,9 @@ private slots:
|
||||
void tcpInputDataAvailable();
|
||||
void tcpInputError(QAbstractSocket::SocketError socketError);
|
||||
|
||||
#ifdef HAS_BLUETOOTH
|
||||
void bleDataRx(QByteArray data);
|
||||
#endif
|
||||
|
||||
void timerSlot();
|
||||
void packetDataToSend(QByteArray &data);
|
||||
|
||||
@@ -234,7 +234,7 @@ void Commands::processPacket(QByteArray data)
|
||||
break;
|
||||
|
||||
case COMM_SET_MCCONF:
|
||||
emit ackReceived("BMS Write OK");
|
||||
emit ackReceived(tr("BMS configuration is set"));
|
||||
break;
|
||||
|
||||
case COMM_STORE_BMS_CONF:
|
||||
|
||||
154
configparams.cpp
154
configparams.cpp
@@ -575,102 +575,102 @@ void ConfigParams::setParamValue(const QString &name, QVariant val)
|
||||
}
|
||||
|
||||
|
||||
QWidget *ConfigParams::getEditor(const QString &name, QWidget *parent)
|
||||
{
|
||||
QWidget *retVal = 0;
|
||||
//QWidget *ConfigParams::getEditor(const QString &name, QWidget *parent)
|
||||
//{
|
||||
// QWidget *retVal = 0;
|
||||
|
||||
if (mParams.contains(name)) {
|
||||
ConfigParam &p = mParams[name];
|
||||
// if (mParams.contains(name)) {
|
||||
// ConfigParam &p = mParams[name];
|
||||
|
||||
switch (p.type) {
|
||||
case CFG_T_DOUBLE: {
|
||||
ParamEditDouble *edit = new ParamEditDouble(parent);
|
||||
edit->setName(name);
|
||||
edit->setSuffix(p.suffix);
|
||||
edit->setDecimals(p.editorDecimalsDouble);
|
||||
edit->setShowAsPercentage(p.editAsPercentage);
|
||||
edit->showDisplay(p.showDisplay);
|
||||
// switch (p.type) {
|
||||
// case CFG_T_DOUBLE: {
|
||||
// ParamEditDouble *edit = new ParamEditDouble(parent);
|
||||
// edit->setName(name);
|
||||
// edit->setSuffix(p.suffix);
|
||||
// edit->setDecimals(p.editorDecimalsDouble);
|
||||
// edit->setShowAsPercentage(p.editAsPercentage);
|
||||
// edit->showDisplay(p.showDisplay);
|
||||
|
||||
edit->setProperty("type", int(p.type));
|
||||
edit->setProperty("suffix", p.suffix);
|
||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
edit->setProperty("value", p.valDouble);
|
||||
// edit->setProperty("type", int(p.type));
|
||||
// edit->setProperty("suffix", p.suffix);
|
||||
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
// edit->setProperty("value", p.valDouble);
|
||||
|
||||
edit->setConfig(this);
|
||||
retVal = edit;
|
||||
} break;
|
||||
// edit->setConfig(this);
|
||||
// retVal = edit;
|
||||
// } break;
|
||||
|
||||
case CFG_T_INT: {
|
||||
ParamEditInt *edit = new ParamEditInt(parent);
|
||||
edit->setName(name);
|
||||
edit->setSuffix(p.suffix);
|
||||
edit->setShowAsPercentage(p.editAsPercentage);
|
||||
edit->showDisplay(p.showDisplay);
|
||||
// case CFG_T_INT: {
|
||||
// ParamEditInt *edit = new ParamEditInt(parent);
|
||||
// edit->setName(name);
|
||||
// edit->setSuffix(p.suffix);
|
||||
// edit->setShowAsPercentage(p.editAsPercentage);
|
||||
// edit->showDisplay(p.showDisplay);
|
||||
|
||||
edit->setProperty("type", int(p.type));
|
||||
edit->setProperty("suffix", p.suffix);
|
||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
edit->setProperty("value", p.valInt);
|
||||
// edit->setProperty("type", int(p.type));
|
||||
// edit->setProperty("suffix", p.suffix);
|
||||
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
// edit->setProperty("value", p.valInt);
|
||||
|
||||
edit->setConfig(this);
|
||||
retVal = edit;
|
||||
} break;
|
||||
// edit->setConfig(this);
|
||||
// retVal = edit;
|
||||
// } break;
|
||||
|
||||
case CFG_T_QSTRING: {
|
||||
ParamEditString *edit = new ParamEditString(parent);
|
||||
edit->setName(name);
|
||||
// case CFG_T_QSTRING: {
|
||||
// ParamEditString *edit = new ParamEditString(parent);
|
||||
// edit->setName(name);
|
||||
|
||||
edit->setProperty("type", int(p.type));
|
||||
edit->setProperty("suffix", p.suffix);
|
||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
edit->setProperty("value", p.valString);
|
||||
// edit->setProperty("type", int(p.type));
|
||||
// edit->setProperty("suffix", p.suffix);
|
||||
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
// edit->setProperty("value", p.valString);
|
||||
|
||||
edit->setConfig(this);
|
||||
retVal = edit;
|
||||
} break;
|
||||
// edit->setConfig(this);
|
||||
// retVal = edit;
|
||||
// } break;
|
||||
|
||||
case CFG_T_ENUM: {
|
||||
ParamEditEnum *edit = new ParamEditEnum(parent);
|
||||
edit->setName(name);
|
||||
// case CFG_T_ENUM: {
|
||||
// ParamEditEnum *edit = new ParamEditEnum(parent);
|
||||
// edit->setName(name);
|
||||
|
||||
edit->setProperty("type", int(p.type));
|
||||
edit->setProperty("suffix", p.suffix);
|
||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
edit->setProperty("value", p.valInt);
|
||||
// edit->setProperty("type", int(p.type));
|
||||
// edit->setProperty("suffix", p.suffix);
|
||||
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
// edit->setProperty("value", p.valInt);
|
||||
|
||||
edit->setConfig(this);
|
||||
retVal = edit;
|
||||
} break;
|
||||
// edit->setConfig(this);
|
||||
// retVal = edit;
|
||||
// } break;
|
||||
|
||||
case CFG_T_BOOL: {
|
||||
ParamEditBool *edit = new ParamEditBool(parent);
|
||||
edit->setName(name);
|
||||
// case CFG_T_BOOL: {
|
||||
// ParamEditBool *edit = new ParamEditBool(parent);
|
||||
// edit->setName(name);
|
||||
|
||||
edit->setProperty("type", int(p.type));
|
||||
edit->setProperty("suffix", p.suffix);
|
||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
edit->setProperty("value", p.valInt);
|
||||
// edit->setProperty("type", int(p.type));
|
||||
// edit->setProperty("suffix", p.suffix);
|
||||
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||
// edit->setProperty("value", p.valInt);
|
||||
|
||||
edit->setConfig(this);
|
||||
retVal = edit;
|
||||
} break;
|
||||
// edit->setConfig(this);
|
||||
// retVal = edit;
|
||||
// } break;
|
||||
|
||||
default:
|
||||
qWarning() << "no editor for" << name << "could be created";
|
||||
break;
|
||||
}
|
||||
// default:
|
||||
// qWarning() << "no editor for" << name << "could be created";
|
||||
// break;
|
||||
// }
|
||||
|
||||
} else {
|
||||
qWarning() << name << "not found";
|
||||
}
|
||||
// } else {
|
||||
// qWarning() << name << "not found";
|
||||
// }
|
||||
|
||||
return retVal;
|
||||
}
|
||||
// return retVal;
|
||||
//}
|
||||
|
||||
/*
|
||||
QWidget *ConfigParams::getEditor(const QString &name, QWidget *parent)
|
||||
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
QStringList getParamOrder() const;
|
||||
void setParamOrder(const QStringList &order);
|
||||
|
||||
QWidget *getEditor(const QString &name, QWidget *parent = 0);
|
||||
// QWidget *getEditor(const QString &name, QWidget *parent = 0);
|
||||
|
||||
void getParamSerial(VByteArray &vb, const QString &name);
|
||||
void setParamSerial(VByteArray &vb, const QString &name, QObject *src = 0);
|
||||
|
||||
14
main.cpp
14
main.cpp
@@ -20,7 +20,7 @@
|
||||
|
||||
#include "bmsinterface.h"
|
||||
#include "utility.h"
|
||||
#include "mobile/fwhelper.h"
|
||||
#include "translator.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QFontDatabase>
|
||||
@@ -40,9 +40,16 @@ QObject *utilitySingletontypeProvider(QQmlEngine */*engine*/, QJSEngine */*scrip
|
||||
return utility;
|
||||
}
|
||||
|
||||
QObject *translatorSingletontypeProvider(QQmlEngine *engine, QJSEngine */*scriptEngine*/)
|
||||
{
|
||||
auto *translator = new Translator(engine);
|
||||
return translator;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
Q_INIT_RESOURCE(res);
|
||||
Q_INIT_RESOURCE(translations);
|
||||
Q_INIT_RESOURCE(qml_icons);
|
||||
Q_INIT_RESOURCE(qml_items);
|
||||
|
||||
@@ -59,16 +66,13 @@ int main(int argc, char *argv[])
|
||||
font.setStyleStrategy(QFont::PreferAntialias);
|
||||
app.setFont(font);
|
||||
|
||||
// app.setFont(QFont("Artifakt Element", 16, QFont::Medium));
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
|
||||
qmlRegisterSingletonType<BMSInterface>("Cubo", 1, 0, "BmsInterface", bmsInterfaceSingletontypeProvider);
|
||||
qmlRegisterSingletonType<Utility>("Cubo", 1, 0, "Utility", utilitySingletontypeProvider);
|
||||
qmlRegisterType<BleUart>("Cubo", 1, 0, "BleUart");
|
||||
qmlRegisterSingletonType<Translator>("Cubo", 1, 0, "Translator", translatorSingletontypeProvider);
|
||||
qmlRegisterType<Commands>("Cubo", 1, 0, "Commands");
|
||||
qmlRegisterType<ConfigParams>("Cubo", 1, 0, "ConfigParams");
|
||||
qmlRegisterType<FwHelper>("Cubo", 1, 0, "FwHelper");
|
||||
|
||||
engine.addImportPath(QStringLiteral("qrc:/"));
|
||||
engine.load(QUrl(QStringLiteral("qrc:/MainWindow.qml")));
|
||||
|
||||
57
qml/Controls/BusyIndicator.qml
Normal file
57
qml/Controls/BusyIndicator.qml
Normal file
@@ -0,0 +1,57 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
|
||||
import Utils 1.0
|
||||
|
||||
BusyIndicator {
|
||||
id: control
|
||||
running: true
|
||||
implicitWidth: 86
|
||||
implicitHeight: 86
|
||||
|
||||
contentItem: Item {
|
||||
id: item
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
opacity: control.running ? 1 : 0
|
||||
|
||||
Behavior on opacity {
|
||||
OpacityAnimator {
|
||||
duration: 250
|
||||
}
|
||||
}
|
||||
|
||||
RotationAnimator {
|
||||
target: item
|
||||
running: control.visible && control.running
|
||||
from: 0
|
||||
to: 360
|
||||
loops: Animation.Infinite
|
||||
duration: 5000
|
||||
}
|
||||
|
||||
Repeater {
|
||||
id: repeater
|
||||
model: 6
|
||||
|
||||
Rectangle {
|
||||
x: item.width / 2 - width / 2
|
||||
y: item.height / 2 - height / 2
|
||||
implicitWidth: 12
|
||||
implicitHeight: 12
|
||||
radius: 6
|
||||
color: Palette.alternativeBackgroundColor
|
||||
transform: [
|
||||
Translate {
|
||||
y: -Math.min(item.width, item.height) * 0.5 + 6
|
||||
},
|
||||
Rotation {
|
||||
angle: index / repeater.count * 360
|
||||
origin.x: 6
|
||||
origin.y: 6
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,8 @@ Button {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
|
||||
Item {
|
||||
|
||||
}
|
||||
@@ -5,13 +5,15 @@ import Utils 1.0
|
||||
|
||||
Shape {
|
||||
id: shape
|
||||
implicitWidth: 1
|
||||
implicitHeight: 1
|
||||
property bool horizontal: true
|
||||
|
||||
ShapePath {
|
||||
strokeColor: Palette.borderColor
|
||||
strokeStyle: ShapePath.SolidLine
|
||||
startX: 0
|
||||
startY: 0
|
||||
PathLine { x: shape.width; y: 0 }
|
||||
PathLine { x: horizontal ? shape.width : 0; y: horizontal ? 0 : shape.height }
|
||||
}
|
||||
}
|
||||
|
||||
59
qml/Controls/MenuItemDelegate.qml
Normal file
59
qml/Controls/MenuItemDelegate.qml
Normal file
@@ -0,0 +1,59 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
import QtGraphicalEffects 1.0
|
||||
|
||||
import Utils 1.0
|
||||
|
||||
ItemDelegate {
|
||||
id: control
|
||||
implicitHeight: 52
|
||||
padding: 0
|
||||
leftPadding: control.minimized ? 0 : 40
|
||||
font.weight: Font.Bold
|
||||
icon.color: "transparent"
|
||||
icon.width: 24
|
||||
icon.height: 24
|
||||
|
||||
property bool minimized: false
|
||||
|
||||
contentItem: RowLayout {
|
||||
spacing: control.minimized ? 0 : 25
|
||||
|
||||
Item {
|
||||
visible: control.minimized
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Image {
|
||||
source: control.icon.source
|
||||
sourceSize.width: control.icon.width
|
||||
sourceSize.height: control.icon.height
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
ColorOverlay {
|
||||
anchors.fill: parent
|
||||
source: parent
|
||||
color: icon.color
|
||||
visible: icon.color !== "transparent"
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
text: control.text
|
||||
font: control.font
|
||||
color: Palette.alternativeTextColor
|
||||
visible: !control.minimized
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: control.pressed ? Palette.pressedButtonColor :
|
||||
control.hovered ? Palette.hoveredButtonColor : Palette.buttonColor
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,8 @@ Button {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
|
||||
Item {
|
||||
|
||||
}
|
||||
@@ -6,6 +6,6 @@ import Utils 1.0
|
||||
TextArea {
|
||||
color: Palette.textColor
|
||||
selectByMouse: true
|
||||
selectionColor: Palette.alternativeBackgroundColor
|
||||
selectionColor: Palette.selectedTextBackgroundColor
|
||||
font.pixelSize: 16
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ TextField {
|
||||
implicitHeight: 58
|
||||
color: Palette.textColor
|
||||
selectByMouse: true
|
||||
selectionColor: Palette.alternativeBackgroundColor
|
||||
selectionColor: Palette.selectedTextBackgroundColor
|
||||
|
||||
background: Rectangle {
|
||||
color: enabled ? Palette.backgroundColor : Palette.hoveredBackgroundColor
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
module Controls
|
||||
Label 1.0 Label.qml
|
||||
ComboBox 1.0 ComboBox.qml
|
||||
PaneItem 1.0 PaneItem.qml
|
||||
ScrollBar 1.0 ScrollBar.qml
|
||||
Button 1.0 Button.qml
|
||||
OutlineButton 1.0 OutlineButton.qml
|
||||
@@ -22,3 +20,5 @@ ChartView 1.0 ChartView.qml
|
||||
TextArea 1.0 TextArea.qml
|
||||
DialogHeader 1.0 DialogHeader.qml
|
||||
DialogBackground 1.0 DialogBackground.qml
|
||||
BusyIndicator 1.0 BusyIndicator.qml
|
||||
MenuItemDelegate 1.0 MenuItemDelegate.qml
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<mask id="path-1-inside-1_973_566" fill="white">
|
||||
<rect x="1.5" y="1" width="10" height="14" rx="1"/>
|
||||
<rect x="1" y="1" width="9" height="13" rx="1"/>
|
||||
</mask>
|
||||
<rect x="1.5" y="1" width="10" height="14" rx="1" stroke="white" stroke-width="4" mask="url(#path-1-inside-1_973_566)"/>
|
||||
<rect x="1" y="1" width="9" height="13" rx="1" stroke="white" stroke-width="2" mask="url(#path-1-inside-1_973_566)"/>
|
||||
<mask id="path-2-inside-2_973_566" fill="white">
|
||||
<rect x="12.5" y="1" width="10" height="7" rx="1"/>
|
||||
<rect x="13" y="1" width="9" height="7" rx="1"/>
|
||||
</mask>
|
||||
<rect x="12.5" y="1" width="10" height="7" rx="1" stroke="white" stroke-width="4" mask="url(#path-2-inside-2_973_566)"/>
|
||||
<rect x="13" y="1" width="9" height="7" rx="1" stroke="white" stroke-width="2" mask="url(#path-2-inside-2_973_566)"/>
|
||||
<mask id="path-3-inside-3_973_566" fill="white">
|
||||
<rect x="12.5" y="9" width="10" height="14" rx="1"/>
|
||||
<rect x="13" y="11" width="9" height="12" rx="1"/>
|
||||
</mask>
|
||||
<rect x="12.5" y="9" width="10" height="14" rx="1" stroke="white" stroke-width="4" mask="url(#path-3-inside-3_973_566)"/>
|
||||
<rect x="13" y="11" width="9" height="12" rx="1" stroke="white" stroke-width="2" mask="url(#path-3-inside-3_973_566)"/>
|
||||
<mask id="path-4-inside-4_973_566" fill="white">
|
||||
<rect x="1.5" y="16" width="10" height="7" rx="1"/>
|
||||
<rect x="1" y="17" width="9" height="6" rx="1"/>
|
||||
</mask>
|
||||
<rect x="1.5" y="16" width="10" height="7" rx="1" stroke="white" stroke-width="4" mask="url(#path-4-inside-4_973_566)"/>
|
||||
<rect x="1" y="17" width="9" height="6" rx="1" stroke="white" stroke-width="2" mask="url(#path-4-inside-4_973_566)"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1003 B |
53
qml/Icons/english-flag.svg
Normal file
53
qml/Icons/english-flag.svg
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#41479B;" d="M473.655,88.276H38.345C17.167,88.276,0,105.443,0,126.621V385.38
|
||||
c0,21.177,17.167,38.345,38.345,38.345h435.31c21.177,0,38.345-17.167,38.345-38.345V126.621
|
||||
C512,105.443,494.833,88.276,473.655,88.276z"/>
|
||||
<path style="fill:#F5F5F5;" d="M511.469,120.282c-3.022-18.159-18.797-32.007-37.814-32.007h-9.977l-163.54,107.147V88.276h-88.276
|
||||
v107.147L48.322,88.276h-9.977c-19.017,0-34.792,13.847-37.814,32.007l139.778,91.58H0v88.276h140.309L0.531,391.717
|
||||
c3.022,18.159,18.797,32.007,37.814,32.007h9.977l163.54-107.147v107.147h88.276V316.577l163.54,107.147h9.977
|
||||
c19.017,0,34.792-13.847,37.814-32.007l-139.778-91.58H512v-88.276H371.691L511.469,120.282z"/>
|
||||
<g>
|
||||
<polygon style="fill:#FF4B55;" points="282.483,88.276 229.517,88.276 229.517,229.517 0,229.517 0,282.483 229.517,282.483
|
||||
229.517,423.724 282.483,423.724 282.483,282.483 512,282.483 512,229.517 282.483,229.517 "/>
|
||||
<path style="fill:#FF4B55;" d="M24.793,421.252l186.583-121.114h-32.428L9.224,410.31
|
||||
C13.377,415.157,18.714,418.955,24.793,421.252z"/>
|
||||
<path style="fill:#FF4B55;" d="M346.388,300.138H313.96l180.716,117.305c5.057-3.321,9.277-7.807,12.287-13.075L346.388,300.138z"
|
||||
/>
|
||||
<path style="fill:#FF4B55;" d="M4.049,109.475l157.73,102.387h32.428L15.475,95.842C10.676,99.414,6.749,104.084,4.049,109.475z"/>
|
||||
<path style="fill:#FF4B55;" d="M332.566,211.862l170.035-110.375c-4.199-4.831-9.578-8.607-15.699-10.86L300.138,211.862H332.566z"
|
||||
/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
40
qml/Icons/italian-flag.svg
Normal file
40
qml/Icons/italian-flag.svg
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#73AF00;" d="M38.345,88.273C17.167,88.273,0,105.44,0,126.618v258.759c0,21.177,17.167,38.345,38.345,38.345
|
||||
h132.322V88.273H38.345z"/>
|
||||
<rect x="170.67" y="88.277" style="fill:#F5F5F5;" width="170.67" height="335.45"/>
|
||||
<path style="fill:#FF4B55;" d="M473.655,88.273H341.333v335.448h132.322c21.177,0,38.345-17.167,38.345-38.345V126.618
|
||||
C512,105.44,494.833,88.273,473.655,88.273z"/>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 894 B |
40
qml/Icons/russian-flag.svg
Normal file
40
qml/Icons/russian-flag.svg
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#F5F5F5;" d="M473.655,88.276H38.345C17.167,88.276,0,105.443,0,126.621v73.471h512v-73.471
|
||||
C512,105.443,494.833,88.276,473.655,88.276z"/>
|
||||
<path style="fill:#FF4B55;" d="M0,385.379c0,21.177,17.167,38.345,38.345,38.345h435.31c21.177,0,38.345-17.167,38.345-38.345
|
||||
v-73.471H0V385.379z"/>
|
||||
<rect y="200.09" style="fill:#41479B;" width="512" height="111.81"/>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 867 B |
@@ -1,7 +1,6 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
import QtGraphicalEffects 1.0
|
||||
|
||||
import Controls 1.0 as Controls
|
||||
import Screens 1.0 as Screens
|
||||
@@ -10,7 +9,7 @@ import Utils 1.0
|
||||
|
||||
ApplicationWindow {
|
||||
id: window
|
||||
title: qsTr("Cubo Verde BMS Tool")
|
||||
title: qsTr("Cubo Verde BMS tool")
|
||||
width: 1366
|
||||
height: 768
|
||||
visible: true
|
||||
@@ -45,38 +44,11 @@ ApplicationWindow {
|
||||
Layout.preferredHeight: pane.minimized ? 85 : 40
|
||||
}
|
||||
|
||||
ItemDelegate {
|
||||
leftPadding: pane.minimized ? 0 : 40
|
||||
|
||||
contentItem: RowLayout {
|
||||
height: 50
|
||||
spacing: 25
|
||||
|
||||
Item {
|
||||
visible: pane.minimized
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Image {
|
||||
source: "qrc:/Icons/hide-menu.svg"
|
||||
mirror: pane.minimized
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("Hide menu")
|
||||
color: Palette.alternativeTextColor
|
||||
visible: !pane.minimized
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: "transparent"
|
||||
}
|
||||
Controls.MenuItemDelegate {
|
||||
text: qsTr("Hide menu")
|
||||
font.weight: Font.Normal
|
||||
icon.source: "qrc:/Icons/hide-menu.svg"
|
||||
minimized: pane.minimized
|
||||
|
||||
onClicked: if (pane.implicitWidth === 300) {
|
||||
animation.from = 300
|
||||
@@ -90,7 +62,6 @@ ApplicationWindow {
|
||||
pane.minimized = false
|
||||
}
|
||||
|
||||
Layout.preferredHeight: 52
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
@@ -100,101 +71,36 @@ ApplicationWindow {
|
||||
|
||||
ListView {
|
||||
id: menuView
|
||||
model: [
|
||||
|
||||
property var menuModel: [
|
||||
{"text": qsTr("AKB monitor"), "icon": "qrc:/Icons/akb-monitor.svg"},
|
||||
{"text": qsTr("Cell monitor"), "icon": "qrc:/Icons/cell-monitor.svg"},
|
||||
{"text": qsTr("Configuration"), "icon": "qrc:/Icons/bms-configuration.svg"},
|
||||
{"text": qsTr("Visualization"), "icon": "qrc:/Icons/visualization.svg"},
|
||||
{"text": qsTr("History"), "icon": "qrc:/Icons/history.svg"},
|
||||
{"text": qsTr("BMS service"), "icon": "qrc:/Icons/bms-service.svg"},
|
||||
// {"text": qsTr("Exit"), "icon": "qrc:/Icons/exit.svg"},
|
||||
{"text": qsTr("BMS service"), "icon": "qrc:/Icons/bms-service.svg"}
|
||||
]
|
||||
|
||||
delegate: ItemDelegate {
|
||||
id: menuDelegate
|
||||
model: menuModel.length
|
||||
|
||||
delegate: Controls.MenuItemDelegate {
|
||||
width: ListView.view.width
|
||||
height: 52
|
||||
leftPadding: pane.minimized ? 0 : 40
|
||||
highlighted: ListView.isCurrentItem
|
||||
text: menuView.menuModel[modelData].text
|
||||
icon.source: menuView.menuModel[modelData].icon
|
||||
minimized: pane.minimized
|
||||
onClicked: menuView.currentIndex = index
|
||||
|
||||
contentItem: RowLayout {
|
||||
spacing: pane.minimized ? 0 : 25
|
||||
height: 50
|
||||
|
||||
Item {
|
||||
visible: pane.minimized
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Image {
|
||||
source: modelData.icon
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
|
||||
Label {
|
||||
text: modelData.text
|
||||
font.weight: Font.Bold
|
||||
color: Palette.alternativeTextColor
|
||||
visible: !pane.minimized
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: menuDelegate.highlighted ? Palette.pressedButtonColor : Palette.buttonColor
|
||||
}
|
||||
}
|
||||
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
ItemDelegate {
|
||||
leftPadding: pane.minimized ? 0 : 40
|
||||
Controls.MenuItemDelegate {
|
||||
text: qsTr("Connection")
|
||||
icon.source: "qrc:/Icons/connection.svg"
|
||||
icon.color: "#FFFFFF"
|
||||
minimized: pane.minimized
|
||||
onClicked: connectionDialog.open()
|
||||
|
||||
contentItem: RowLayout {
|
||||
spacing: pane.minimized ? 0 : 25
|
||||
height: 50
|
||||
|
||||
Item {
|
||||
visible: pane.minimized
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Image {
|
||||
source: "qrc:/Icons/connection.svg"
|
||||
sourceSize.width: 24
|
||||
sourceSize.height: 24
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
ColorOverlay {
|
||||
anchors.fill: parent
|
||||
source: parent
|
||||
color: "#FFFFFF"
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("Connection")
|
||||
font.weight: Font.Bold
|
||||
color: Palette.alternativeTextColor
|
||||
visible: !pane.minimized
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: parent.down ? Palette.pressedButtonColor : Palette.buttonColor
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
@@ -216,6 +122,8 @@ ApplicationWindow {
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
spacing: 0
|
||||
|
||||
RowLayout {
|
||||
id: topBar
|
||||
|
||||
@@ -226,13 +134,13 @@ ApplicationWindow {
|
||||
qsTr("Visualization"),
|
||||
qsTr("Information output"),
|
||||
qsTr("Terminal"),
|
||||
qsTr("Exit"),
|
||||
]
|
||||
|
||||
Label {
|
||||
text: topBar.labels[stack.currentIndex]
|
||||
font.pixelSize: 38
|
||||
font.weight: Font.Bold
|
||||
color: Palette.textColor
|
||||
}
|
||||
|
||||
Item {
|
||||
@@ -240,8 +148,14 @@ ApplicationWindow {
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 20
|
||||
|
||||
ColumnLayout {
|
||||
spacing: 5
|
||||
|
||||
RowLayout {
|
||||
spacing: 7
|
||||
|
||||
Controls.ContentLabel {
|
||||
id: connectionStatusLabel
|
||||
text: qsTr("Disconnected")
|
||||
@@ -264,6 +178,8 @@ ApplicationWindow {
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 5
|
||||
|
||||
Controls.ContentLabel {
|
||||
text: qsTr("Serial number") + ":"
|
||||
Layout.alignment: Qt.AlignRight
|
||||
@@ -277,11 +193,111 @@ ApplicationWindow {
|
||||
|
||||
Layout.alignment: Qt.AlignRight
|
||||
}
|
||||
|
||||
Layout.topMargin: 15
|
||||
Layout.bottomMargin: 15
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
Controls.LineSeparator {
|
||||
horizontal: false
|
||||
Layout.fillHeight: true
|
||||
Layout.topMargin: 15
|
||||
Layout.bottomMargin: 15
|
||||
}
|
||||
|
||||
Item {
|
||||
RowLayout {
|
||||
id: languagesLayout
|
||||
anchors.fill: parent
|
||||
spacing: 10
|
||||
|
||||
Controls.ContentLabel {
|
||||
text: Translator.currentLanguageName
|
||||
}
|
||||
|
||||
Image {
|
||||
source: Translator.currentLanguageIcon
|
||||
sourceSize.width: 30
|
||||
sourceSize.height: 26
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: languagesPopup.open()
|
||||
}
|
||||
|
||||
Popup {
|
||||
id: languagesPopup
|
||||
width: 90
|
||||
contentHeight: languagesList.contentHeight
|
||||
padding: 1
|
||||
x: -(width - languagesLayout.width) / 2
|
||||
y: languagesLayout.height + 2
|
||||
|
||||
background: Rectangle {
|
||||
color: Palette.backgroundColor
|
||||
radius: 6
|
||||
border.width: 1
|
||||
border.color: Palette.borderColor
|
||||
}
|
||||
|
||||
contentItem: ListView {
|
||||
id: languagesList
|
||||
model: [Translator.Russian, Translator.English, Translator.Italian]
|
||||
width: languagesPopup.width
|
||||
height: 120
|
||||
clip: true
|
||||
spacing: 0
|
||||
|
||||
delegate: Rectangle {
|
||||
width: ListView.view.width
|
||||
height: 40
|
||||
color: Palette.backgroundColor
|
||||
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
spacing: 10
|
||||
|
||||
Controls.ContentLabel {
|
||||
text: Translator.languageName(modelData)
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: 10
|
||||
}
|
||||
|
||||
Image {
|
||||
source: Translator.languageIcon(modelData)
|
||||
sourceSize.width: 30
|
||||
sourceSize.height: 26
|
||||
Layout.rightMargin: 10
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onPressed: parent.color = Palette.selectedBackgroundColor
|
||||
onReleased: parent.color = Palette.backgroundColor
|
||||
onEntered: parent.color = Palette.hoveredBackgroundColor
|
||||
onExited: parent.color = Palette.backgroundColor
|
||||
onClicked: {
|
||||
languagesPopup.close()
|
||||
Translator.currentLanguage = modelData
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Layout.preferredWidth: languagesLayout.implicitWidth
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
|
||||
Layout.leftMargin: 45
|
||||
Layout.rightMargin: 45
|
||||
Layout.maximumHeight: 90
|
||||
}
|
||||
|
||||
StackLayout {
|
||||
@@ -301,6 +317,14 @@ ApplicationWindow {
|
||||
}
|
||||
|
||||
Screens.BmsSettingsScreen {
|
||||
onNeedWait: {
|
||||
if (active) {
|
||||
busyPopup.text = text
|
||||
busyPopup.open()
|
||||
} else {
|
||||
busyPopup.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Screens.VisualizationScreen {
|
||||
@@ -319,7 +343,7 @@ ApplicationWindow {
|
||||
target: BmsInterface
|
||||
|
||||
onPortConnectedChanged: {
|
||||
connectionStatusLabel.text = BmsInterface.isPortConnected() ? qsTr("Connected") : qsTr("Disconnected")
|
||||
connectionStatusLabel.text = Qt.binding(function(){ return BmsInterface.isPortConnected() ? qsTr("Connected") : qsTr("Disconnected") })
|
||||
connectionStatusIndicator.enabled = BmsInterface.isPortConnected()
|
||||
if (BmsInterface.isPortConnected()) {
|
||||
BmsInterface.commands().getBMSconf()
|
||||
@@ -351,7 +375,6 @@ ApplicationWindow {
|
||||
statusPopup.text = msg
|
||||
statusPopup.good = isGood
|
||||
statusPopup.open()
|
||||
hideStatusTimer.start()
|
||||
} else {
|
||||
if (statusPopup.text !== msg) {
|
||||
statusPopup.queue.push({"text": msg, "good": isGood})
|
||||
@@ -395,7 +418,7 @@ ApplicationWindow {
|
||||
Screens.StatusPopup {
|
||||
id: statusPopup
|
||||
|
||||
property var filteredStatuses: []//[qsTr("BMS configuration updated")]
|
||||
property var filteredStatuses: []
|
||||
property var queue: []
|
||||
|
||||
onClosed: {
|
||||
@@ -404,9 +427,13 @@ ApplicationWindow {
|
||||
statusPopup.text = message.text
|
||||
statusPopup.good = message.good
|
||||
statusPopup.open()
|
||||
hideStatusTimer.start()
|
||||
}
|
||||
}
|
||||
|
||||
onOpened: {
|
||||
hideStatusTimer.start()
|
||||
busyPopup.close()
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
@@ -415,13 +442,57 @@ ApplicationWindow {
|
||||
onTriggered: statusPopup.close()
|
||||
}
|
||||
|
||||
Popup {
|
||||
id: busyPopup
|
||||
x: (parent.width - width) / 2
|
||||
y: (parent.height - height) / 2
|
||||
modal: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
|
||||
property string text: ""
|
||||
|
||||
background: Rectangle {
|
||||
color: "transparent"
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Controls.BusyIndicator {
|
||||
running: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: busyPopup.text
|
||||
color: Palette.alternativeTextColor
|
||||
maximumLineCount: 3
|
||||
wrapMode: Text.Wrap
|
||||
font.pixelSize: 20
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
background: Rectangle {
|
||||
color: Palette.textColor
|
||||
opacity: 0.3
|
||||
radius: 6
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onOpened: hideBusyTimer.start()
|
||||
onClosed: hideBusyTimer.stop()
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: hideBusyTimer
|
||||
interval: 30000
|
||||
onTriggered: busyPopup.close()
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: Palette.screenBackgroundColor
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
// BmsInterface.bmsConfig().loadParamsXml("://res/config.xml")
|
||||
// BmsInterface.infoConfig().loadParamsXml("://res/info.xml")
|
||||
connectionDialog.open()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ Item {
|
||||
Layout.fillWidth: true
|
||||
|
||||
RowLayout {
|
||||
spacing: 90
|
||||
spacing: 70
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
@@ -41,14 +41,14 @@ Item {
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
columnSpacing: 90
|
||||
columnSpacing: 70
|
||||
rowSpacing: 20
|
||||
anchors.fill: parent
|
||||
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
Controls.ContentLabel {
|
||||
text: qsTr("Battery charge level, V")
|
||||
text: qsTr("Battery charge level, %")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: implicitWidth
|
||||
}
|
||||
@@ -222,7 +222,7 @@ Item {
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
columnSpacing: 90
|
||||
columnSpacing: 70
|
||||
rowSpacing: 20
|
||||
anchors.fill: parent
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ RowLayout {
|
||||
property real contentRowSpacing: 20
|
||||
property real contentColumnSpacing: 35
|
||||
|
||||
signal needWait(bool active, string text)
|
||||
|
||||
spacing: contentColumnSpacing
|
||||
|
||||
Flickable {
|
||||
@@ -163,12 +165,16 @@ RowLayout {
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Maximum charge current, A")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Maximum load current, A")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
@@ -189,6 +195,8 @@ RowLayout {
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Maximum temperature, °C")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
@@ -224,12 +232,16 @@ RowLayout {
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Lower disable threshold, V")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Upper disable threshold, V")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
@@ -250,14 +262,16 @@ RowLayout {
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Lower enable threshold (should be higher than disable), V")
|
||||
maximumLineCount: 2
|
||||
maximumLineCount: 3
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Upper enable threshold (should be higher than disable), V")
|
||||
maximumLineCount: 2
|
||||
maximumLineCount: 3
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
@@ -328,6 +342,8 @@ RowLayout {
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Cell balancing interval, ms")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
@@ -367,13 +383,13 @@ RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 1")
|
||||
text: qsTr("# 1")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Controls.CheckBox {
|
||||
text: qsTr("Use for management")
|
||||
text: qsTr("Use for storage management")
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
@@ -391,7 +407,7 @@ RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 2")
|
||||
text: qsTr("# 2")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
@@ -408,6 +424,8 @@ RowLayout {
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Change in value during SOC")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
@@ -429,7 +447,7 @@ RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 3")
|
||||
text: qsTr("# 3")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
@@ -476,7 +494,7 @@ RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 4")
|
||||
text: qsTr("# 4")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
@@ -534,7 +552,7 @@ RowLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Current sensor value «0»")
|
||||
text: qsTr("Current sensor value \"0\"")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
@@ -549,7 +567,7 @@ RowLayout {
|
||||
|
||||
Controls.Button {
|
||||
id: zeroSensorValueCalibrationButton
|
||||
text: qsTr("Calibrate «0»")
|
||||
text: qsTr("Calibrate \"0\"")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
@@ -561,6 +579,7 @@ RowLayout {
|
||||
Controls.OutlineButton {
|
||||
text: qsTr("Load settings from file")
|
||||
onClicked: loadFileDialog.open()
|
||||
Layout.preferredWidth: 270
|
||||
|
||||
FileDialog {
|
||||
id: loadFileDialog
|
||||
@@ -576,6 +595,7 @@ RowLayout {
|
||||
Controls.OutlineButton {
|
||||
text: qsTr("Save settings to file")
|
||||
onClicked: saveFileDialog.open()
|
||||
Layout.preferredWidth: 270
|
||||
|
||||
FileDialog {
|
||||
id: saveFileDialog
|
||||
@@ -637,7 +657,7 @@ RowLayout {
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Current sensor value «0»")
|
||||
text: qsTr("Current sensor value \"0\"")
|
||||
onClicked: settingsFlickable.contentY = zeroSensorSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
@@ -649,7 +669,7 @@ RowLayout {
|
||||
spacing: 15
|
||||
|
||||
Controls.OutlineButton {
|
||||
text: qsTr("Read settings from file")
|
||||
text: qsTr("Read default settings")
|
||||
Layout.fillWidth: true
|
||||
onClicked: BmsInterface.commands().getBMSconfDefault()
|
||||
}
|
||||
@@ -661,15 +681,6 @@ RowLayout {
|
||||
}
|
||||
|
||||
Controls.OutlineButton {
|
||||
text: qsTr("Write to non-volatile memory of BMS")
|
||||
Layout.fillWidth: true
|
||||
onClicked: {
|
||||
writeValuesToConfig()
|
||||
BmsInterface.commands().storeBMSConfig()
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Button {
|
||||
text: qsTr("Write current values to BMS")
|
||||
Layout.fillWidth: true
|
||||
onClicked: {
|
||||
@@ -678,10 +689,20 @@ RowLayout {
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Button {
|
||||
text: qsTr("Write to non-volatile memory of BMS")
|
||||
Layout.fillWidth: true
|
||||
onClicked: {
|
||||
needWait(true, qsTr("The settings are written to non-volatile memory.\nWait, please."))
|
||||
writeValuesToConfig()
|
||||
BmsInterface.commands().storeBMSConfig()
|
||||
}
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Layout.maximumWidth: 320
|
||||
Layout.maximumWidth: 280
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Item {
|
||||
Layout.fillWidth: true
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("№")
|
||||
text: qsTr("#")
|
||||
color: Palette.tableHeaderTextColor
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import Utils 1.0
|
||||
Dialog {
|
||||
id: root
|
||||
title: qsTr("Connection screen")
|
||||
width: 400
|
||||
width: 470
|
||||
height: 320
|
||||
modal: true
|
||||
closePolicy: Popup.CloseOnEscape
|
||||
@@ -79,7 +79,7 @@ Dialog {
|
||||
Connections {
|
||||
target: BmsInterface
|
||||
onPortConnectedChanged: {
|
||||
connectButton.text = BmsInterface.isPortConnected() ? qsTr("Disconnect") : qsTr("Connect")
|
||||
connectButton.text = Qt.binding(function() { return BmsInterface.isPortConnected() ? qsTr("Disconnect") : qsTr("Connect") })
|
||||
serialBox.enabled = !BmsInterface.isPortConnected()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,27 +37,27 @@ ColumnLayout {
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("Current")
|
||||
width: bar.width / 6 * 0.9
|
||||
}
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("Battery temperature")
|
||||
width: bar.width / 6 * 1.2
|
||||
}
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("BMS temperature")
|
||||
width: bar.width / 6 * 1.2
|
||||
}
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("Cell voltage")
|
||||
width: bar.width / 6 * 0.8
|
||||
}
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("Battery temperature")
|
||||
width: bar.width / 6 * 1.3
|
||||
}
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("BMS temperature")
|
||||
width: bar.width / 6 * 1.1
|
||||
}
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("Cell voltage")
|
||||
width: bar.width / 6 * 1
|
||||
}
|
||||
|
||||
Controls.TabButton {
|
||||
text: qsTr("Cell list")
|
||||
width: bar.width / 6 * 0.9
|
||||
width: bar.width / 6 * 0.85
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
@@ -81,6 +81,8 @@ ColumnLayout {
|
||||
Controls.CheckBox {
|
||||
id: checkSeries
|
||||
checked: true
|
||||
spacing: 10
|
||||
|
||||
onCheckedChanged: {
|
||||
if (checked) {
|
||||
chartItem.series(modelData).color = seriesColor
|
||||
@@ -103,7 +105,7 @@ ColumnLayout {
|
||||
chartItem = ListView.view ? ListView.view.chartItem : parent.chartItem
|
||||
horizontal = !ListView.view
|
||||
seriesColor = chartItem.series(modelData).color
|
||||
checkSeries.text = chartItem.series(modelData).name
|
||||
checkSeries.text = Qt.binding(function(){ return chartItem.series(modelData).name })
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -145,7 +147,7 @@ ColumnLayout {
|
||||
|
||||
RowLayout {
|
||||
visible: horizontalLegend
|
||||
spacing: 20
|
||||
spacing: 0
|
||||
|
||||
property Controls.ChartView chartItem: chart
|
||||
|
||||
@@ -170,7 +172,7 @@ ColumnLayout {
|
||||
|
||||
property Controls.ChartView chartItem: chart
|
||||
|
||||
Layout.preferredWidth: 180
|
||||
Layout.preferredWidth: 200
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
@@ -362,6 +364,15 @@ ColumnLayout {
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: Translator
|
||||
onCurrentLanguageChanged: {
|
||||
for (var i = 0; i < cellListLoader.item.chart.count; ++i) {
|
||||
cellListLoader.item.chart.series(i).name = qsTr("Cell #") + (i + 1).toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: BmsInterface.commands()
|
||||
|
||||
@@ -461,38 +472,53 @@ ColumnLayout {
|
||||
Component.onCompleted: {
|
||||
voltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Voltage indicator"),
|
||||
voltageLoader.item.chart.xAxis, voltageLoader.item.chart.yAxis)
|
||||
voltageLoader.item.chart.series(0).name = Qt.binding(function(){ return qsTr("Voltage indicator") })
|
||||
voltageLoader.item.chart.axes[0].max = 10
|
||||
voltageLoader.item.seriesCount = voltageLoader.item.chart.count
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
currentLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Current indicator"),
|
||||
currentLoader.item.chart.xAxis, currentLoader.item.chart.yAxis)
|
||||
currentLoader.item.chart.series(0).name = Qt.binding(function(){ return qsTr("Current indicator") })
|
||||
currentLoader.item.chart.axes[0].max = 10
|
||||
currentLoader.item.seriesCount = currentLoader.item.chart.count
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum temperature"),
|
||||
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
||||
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average temperature"),
|
||||
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
||||
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum temperature"),
|
||||
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
||||
batteryTemperatureLoader.item.chart.series(0).name = Qt.binding(function(){ return qsTr("Maximum temperature") })
|
||||
batteryTemperatureLoader.item.chart.series(1).name = Qt.binding(function(){ return qsTr("Average temperature") })
|
||||
batteryTemperatureLoader.item.chart.series(2).name = Qt.binding(function(){ return qsTr("Minimum temperature") })
|
||||
batteryTemperatureLoader.item.chart.axes[0].max = 10
|
||||
batteryTemperatureLoader.item.seriesCount = batteryTemperatureLoader.item.chart.count
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum temperature"),
|
||||
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
||||
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average temperature"),
|
||||
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
||||
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum temperature"),
|
||||
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
||||
bmsTemperatureLoader.item.chart.series(0).name = Qt.binding(function(){ return qsTr("Maximum temperature") })
|
||||
bmsTemperatureLoader.item.chart.series(1).name = Qt.binding(function(){ return qsTr("Average temperature") })
|
||||
bmsTemperatureLoader.item.chart.series(2).name = Qt.binding(function(){ return qsTr("Minimum temperature") })
|
||||
bmsTemperatureLoader.item.chart.axes[0].max = 10
|
||||
bmsTemperatureLoader.item.seriesCount = bmsTemperatureLoader.item.chart.count
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum voltage"),
|
||||
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
||||
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average voltage"),
|
||||
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
||||
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum voltage"),
|
||||
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
||||
cellVoltageLoader.item.chart.series(0).name = Qt.binding(function(){ return qsTr("Maximum voltage") })
|
||||
cellVoltageLoader.item.chart.series(1).name = Qt.binding(function(){ return qsTr("Average voltage") })
|
||||
cellVoltageLoader.item.chart.series(2).name = Qt.binding(function(){ return qsTr("Minimum voltage") })
|
||||
cellVoltageLoader.item.chart.axes[0].max = 10
|
||||
cellVoltageLoader.item.seriesCount = cellVoltageLoader.item.chart.count
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ QtObject {
|
||||
property color alternativeBackgroundColor: "#009352"
|
||||
property color screenBackgroundColor: "#F7F8FC"
|
||||
property color tableHeaderBackgroundColor: "#F0F1F4"
|
||||
property color selectedTextBackgroundColor: "#009150"
|
||||
|
||||
property color borderColor: "#DFE0EB"
|
||||
|
||||
|
||||
@@ -14,5 +14,8 @@
|
||||
<file>Icons/close.svg</file>
|
||||
<file>Icons/info.svg</file>
|
||||
<file>Icons/warning.svg</file>
|
||||
<file>Icons/english-flag.svg</file>
|
||||
<file>Icons/italian-flag.svg</file>
|
||||
<file>Icons/russian-flag.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
<file>Screens/AkbMonitorScreen.qml</file>
|
||||
<file>Screens/CellMonitorScreen.qml</file>
|
||||
<file>Controls/ComboBox.qml</file>
|
||||
<file>Controls/PaneItem.qml</file>
|
||||
<file>Controls/Label.qml</file>
|
||||
<file>Utils/Palette.qml</file>
|
||||
<file>Controls/qmldir</file>
|
||||
<file>Screens/qmldir</file>
|
||||
@@ -38,5 +36,7 @@
|
||||
<file>Screens/MessageDialog.qml</file>
|
||||
<file>Screens/StatusPopup.qml</file>
|
||||
<file>Utils/MathHelper.qml</file>
|
||||
<file>Controls/BusyIndicator.qml</file>
|
||||
<file>Controls/MenuItemDelegate.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
BIN
translations/cubo_en.qm
Normal file
BIN
translations/cubo_en.qm
Normal file
Binary file not shown.
818
translations/cubo_en.ts
Normal file
818
translations/cubo_en.ts
Normal file
@@ -0,0 +1,818 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en_US">
|
||||
<context>
|
||||
<name>AkbMonitorScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="23"/>
|
||||
<source>Serial number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="51"/>
|
||||
<source>Battery charge level, %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="72"/>
|
||||
<source>Number of modules</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="93"/>
|
||||
<source>Battery voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="114"/>
|
||||
<source>Number of cells</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="135"/>
|
||||
<source>Nominal capacity, A/h</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="156"/>
|
||||
<source>Actual capacity, A/h</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="177"/>
|
||||
<source>Battery temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="198"/>
|
||||
<source>BMS temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="232"/>
|
||||
<source>Maximum cell voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="253"/>
|
||||
<source>Minimum cell voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="274"/>
|
||||
<source>Current</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BMSInterface</name>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="341"/>
|
||||
<location filename="../bmsinterface.cpp" line="345"/>
|
||||
<source>Reconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="341"/>
|
||||
<source>No ports found</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="346"/>
|
||||
<source>Please specify the connection manually the first time you are connecting.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="405"/>
|
||||
<source>Not connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="410"/>
|
||||
<source>Connected (serial) to %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="416"/>
|
||||
<source>Connected (TCP) to %1:%2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="422"/>
|
||||
<source>Connected (BLE) to %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="428"/>
|
||||
<source>, limited mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="450"/>
|
||||
<source>Invalid serial port: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="463"/>
|
||||
<source>Serial port is not writable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="494"/>
|
||||
<source>Connect serial</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="495"/>
|
||||
<source>Serial port support is not enabled in this build of ENNOID-BMS Tool.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="645"/>
|
||||
<source>Serial port error: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="687"/>
|
||||
<source>TCP Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="724"/>
|
||||
<source>No firmware read response</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="725"/>
|
||||
<source>Read Firmware Version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="726"/>
|
||||
<source>Could not read firmware version. Make sure that selected port really belongs to the ENNOID-BMS. </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="802"/>
|
||||
<source>Not Supported Firmwares</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="803"/>
|
||||
<source>This version of ENNOID-BMS Tool does not seem to have any supported firmwares. Something is probably wrong with the BMS configuration file.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="823"/>
|
||||
<location filename="../bmsinterface.cpp" line="851"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="823"/>
|
||||
<location filename="../bmsinterface.cpp" line="851"/>
|
||||
<source>The firmware on the connected ENNOID-BMS is too old. Please update it using a programmer.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="828"/>
|
||||
<location filename="../bmsinterface.cpp" line="840"/>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="828"/>
|
||||
<source>The connected ENNOID-BMS has newer firmware than this version of the ENNOID-BMS Tool supports. It is recommended that you update the ENNOID-BMS Tool to the latest version. Alternatively, the firmware on the connected ENNOID-BMS can be downgraded in the firmware page. Until then, limited communication mode will be used where only the firmware can be changed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="840"/>
|
||||
<source>The connected ENNOID-BMS has too old firmware. Since the connected ENNOID-BMS has firmware with bootloader support, it can be updated from the Firmware page. Until then, limited communication mode will be used where only the firmware can be changed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="864"/>
|
||||
<source>Firmware version: %1.%2, Hardware: %3, UUID: %4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="896"/>
|
||||
<source>BMS configuration updated</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="900"/>
|
||||
<source>BMS configuration stored to Flash</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BmsServiceScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="29"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="42"/>
|
||||
<source>Send</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="51"/>
|
||||
<source>Help</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BmsSettingsScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="40"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="625"/>
|
||||
<source>Serial number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="67"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="630"/>
|
||||
<source>Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="73"/>
|
||||
<source>Number of boards</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="79"/>
|
||||
<source>Number of cells</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="113"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="635"/>
|
||||
<source>SOC</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="119"/>
|
||||
<source>Number of cells connected in parallel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="127"/>
|
||||
<source>Battery capacity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="161"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="640"/>
|
||||
<source>Limits</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="167"/>
|
||||
<source>Maximum charge current, A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="175"/>
|
||||
<source>Maximum load current, A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="197"/>
|
||||
<source>Maximum temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="228"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="645"/>
|
||||
<source>Cell configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="234"/>
|
||||
<source>Lower disable threshold, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="242"/>
|
||||
<source>Upper disable threshold, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="264"/>
|
||||
<source>Lower enable threshold (should be higher than disable), V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="272"/>
|
||||
<source>Upper enable threshold (should be higher than disable), V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="308"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="650"/>
|
||||
<source>Balancing configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="314"/>
|
||||
<source>Balancing start voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="322"/>
|
||||
<source>Cell voltage delta to start balancing, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="344"/>
|
||||
<source>Cell balancing interval, ms</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="377"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="655"/>
|
||||
<source>Output settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="386"/>
|
||||
<source># 1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="392"/>
|
||||
<source>Use for storage management</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="410"/>
|
||||
<source># 2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="450"/>
|
||||
<source># 3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="497"/>
|
||||
<source># 4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="672"/>
|
||||
<source>Read default settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="696"/>
|
||||
<source>The settings are written to non-volatile memory.
|
||||
Wait, please.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="416"/>
|
||||
<source>Normally closed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="426"/>
|
||||
<source>Change in value during SOC</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="465"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="512"/>
|
||||
<source>Closes at t<, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="471"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="518"/>
|
||||
<source>Opens at t>, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="555"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="660"/>
|
||||
<source>Current sensor value "0"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="570"/>
|
||||
<source>Calibrate "0"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="580"/>
|
||||
<source>Load settings from file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="586"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="602"/>
|
||||
<source>Select configuration file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="588"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="605"/>
|
||||
<source>Configuration files (*.xml)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="588"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="605"/>
|
||||
<source>All files (*)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="596"/>
|
||||
<source>Save settings to file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="678"/>
|
||||
<source>Read current settings from BMS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="693"/>
|
||||
<source>Write to non-volatile memory of BMS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="684"/>
|
||||
<source>Write current values to BMS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CellMonitorScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="24"/>
|
||||
<source>#</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="37"/>
|
||||
<source>Voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="50"/>
|
||||
<source>Balancing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="84"/>
|
||||
<source>V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Commands</name>
|
||||
<message>
|
||||
<location filename="../commands.cpp" line="237"/>
|
||||
<source>BMS configuration is set</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConfigParams</name>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="42"/>
|
||||
<location filename="../configparams.cpp" line="1150"/>
|
||||
<location filename="../configparams.cpp" line="1178"/>
|
||||
<location filename="../configparams.cpp" line="1381"/>
|
||||
<location filename="../configparams.cpp" line="1407"/>
|
||||
<source>OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1154"/>
|
||||
<location filename="../configparams.cpp" line="1384"/>
|
||||
<source>tag <b>%1</b> not found</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1164"/>
|
||||
<location filename="../configparams.cpp" line="1394"/>
|
||||
<location filename="../configparams.cpp" line="1432"/>
|
||||
<source>Could not open %1 for writing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1186"/>
|
||||
<location filename="../configparams.cpp" line="1415"/>
|
||||
<source>Could not open %1 for reading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConnectionDialog</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="11"/>
|
||||
<source>Connection screen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="36"/>
|
||||
<source>Select serial port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="50"/>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="82"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="82"/>
|
||||
<source>Disconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DebugInformationScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/DebugInformationScreen.qml" line="23"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="12"/>
|
||||
<source>Cubo Verde BMS tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="48"/>
|
||||
<source>Hide menu</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="76"/>
|
||||
<location filename="../qml/MainWindow.qml" line="131"/>
|
||||
<source>AKB monitor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="77"/>
|
||||
<location filename="../qml/MainWindow.qml" line="132"/>
|
||||
<source>Cell monitor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="78"/>
|
||||
<source>Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="79"/>
|
||||
<location filename="../qml/MainWindow.qml" line="134"/>
|
||||
<source>Visualization</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="80"/>
|
||||
<source>History</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="81"/>
|
||||
<source>BMS service</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="99"/>
|
||||
<source>Connection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="133"/>
|
||||
<source>BMS settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="135"/>
|
||||
<source>Information output</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="136"/>
|
||||
<source>Terminal</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="161"/>
|
||||
<location filename="../qml/MainWindow.qml" line="346"/>
|
||||
<source>Disconnected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="184"/>
|
||||
<source>Serial number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="346"/>
|
||||
<source>Connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageDialog</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/MessageDialog.qml" line="48"/>
|
||||
<source>Ok</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="126"/>
|
||||
<source>Autoconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="127"/>
|
||||
<source>Could not autoconnect. Make sure that the USB cable is plugged in and that the ENNOID-BMS is powered.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Translator</name>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="16"/>
|
||||
<source>EN</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="17"/>
|
||||
<source>RU</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="18"/>
|
||||
<source>IT</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Utility</name>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="187"/>
|
||||
<source><b>ENNOID-BMS Tool V%1</b><br>&copy; Kevin Dionne 2019<br><a href="mailto:kevin.dionne@ennoid.me">kevin.dionne@ennoid.me</a><br><a href="https://www.ennoid.me/">https://www.ennoid.me/</a><br>Based on: DieBieMS-tool<br><br><b>DieBieMS Tool </b><br>&copy; Danny Bokma 2018<br><a href="mailto:bms@diebie.nl">bms@diebie.nl</a><br><a href="https://diebie.nl/">https://diebie.nl/</a><br>Based on: VESC-tool<br><br><b>VESC Tool </b><br>&copy; Benjamin Vedder 2018<br><a href="mailto:benjamin@vedder.se">benjamin@vedder.se</a><br><a href="https://vesc-project.com/">https://vesc-project.com/</a><br><br></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>VisualizationScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="34"/>
|
||||
<source>Voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="39"/>
|
||||
<source>Current</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="44"/>
|
||||
<source>Battery temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="49"/>
|
||||
<source>BMS temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="54"/>
|
||||
<source>Cell voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="59"/>
|
||||
<source>Cell list</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="189"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="202"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="215"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="228"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="241"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="254"/>
|
||||
<source>Time, s</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="190"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="242"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="255"/>
|
||||
<source>Voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="203"/>
|
||||
<source>Current, A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="216"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="229"/>
|
||||
<source>Temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="273"/>
|
||||
<source>Pause data collection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="273"/>
|
||||
<source>Resume data collection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="283"/>
|
||||
<source>Clear data</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="312"/>
|
||||
<source>Reset zoom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="371"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="398"/>
|
||||
<source>Cell #</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="473"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="475"/>
|
||||
<source>Voltage indicator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="480"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="482"/>
|
||||
<source>Current indicator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="487"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="493"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="500"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="506"/>
|
||||
<source>Maximum temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="489"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="494"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="502"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="507"/>
|
||||
<source>Average temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="491"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="495"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="504"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="508"/>
|
||||
<source>Minimum temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="513"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="519"/>
|
||||
<source>Maximum voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="515"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="520"/>
|
||||
<source>Average voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="517"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="521"/>
|
||||
<source>Minimum voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
translations/cubo_it.qm
Normal file
BIN
translations/cubo_it.qm
Normal file
Binary file not shown.
818
translations/cubo_it.ts
Normal file
818
translations/cubo_it.ts
Normal file
@@ -0,0 +1,818 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="it_IT">
|
||||
<context>
|
||||
<name>AkbMonitorScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="23"/>
|
||||
<source>Serial number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="51"/>
|
||||
<source>Battery charge level, %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="72"/>
|
||||
<source>Number of modules</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="93"/>
|
||||
<source>Battery voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="114"/>
|
||||
<source>Number of cells</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="135"/>
|
||||
<source>Nominal capacity, A/h</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="156"/>
|
||||
<source>Actual capacity, A/h</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="177"/>
|
||||
<source>Battery temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="198"/>
|
||||
<source>BMS temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="232"/>
|
||||
<source>Maximum cell voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="253"/>
|
||||
<source>Minimum cell voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="274"/>
|
||||
<source>Current</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BMSInterface</name>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="341"/>
|
||||
<location filename="../bmsinterface.cpp" line="345"/>
|
||||
<source>Reconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="341"/>
|
||||
<source>No ports found</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="346"/>
|
||||
<source>Please specify the connection manually the first time you are connecting.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="405"/>
|
||||
<source>Not connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="410"/>
|
||||
<source>Connected (serial) to %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="416"/>
|
||||
<source>Connected (TCP) to %1:%2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="422"/>
|
||||
<source>Connected (BLE) to %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="428"/>
|
||||
<source>, limited mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="450"/>
|
||||
<source>Invalid serial port: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="463"/>
|
||||
<source>Serial port is not writable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="494"/>
|
||||
<source>Connect serial</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="495"/>
|
||||
<source>Serial port support is not enabled in this build of ENNOID-BMS Tool.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="645"/>
|
||||
<source>Serial port error: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="687"/>
|
||||
<source>TCP Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="724"/>
|
||||
<source>No firmware read response</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="725"/>
|
||||
<source>Read Firmware Version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="726"/>
|
||||
<source>Could not read firmware version. Make sure that selected port really belongs to the ENNOID-BMS. </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="802"/>
|
||||
<source>Not Supported Firmwares</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="803"/>
|
||||
<source>This version of ENNOID-BMS Tool does not seem to have any supported firmwares. Something is probably wrong with the BMS configuration file.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="823"/>
|
||||
<location filename="../bmsinterface.cpp" line="851"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="823"/>
|
||||
<location filename="../bmsinterface.cpp" line="851"/>
|
||||
<source>The firmware on the connected ENNOID-BMS is too old. Please update it using a programmer.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="828"/>
|
||||
<location filename="../bmsinterface.cpp" line="840"/>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="828"/>
|
||||
<source>The connected ENNOID-BMS has newer firmware than this version of the ENNOID-BMS Tool supports. It is recommended that you update the ENNOID-BMS Tool to the latest version. Alternatively, the firmware on the connected ENNOID-BMS can be downgraded in the firmware page. Until then, limited communication mode will be used where only the firmware can be changed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="840"/>
|
||||
<source>The connected ENNOID-BMS has too old firmware. Since the connected ENNOID-BMS has firmware with bootloader support, it can be updated from the Firmware page. Until then, limited communication mode will be used where only the firmware can be changed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="864"/>
|
||||
<source>Firmware version: %1.%2, Hardware: %3, UUID: %4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="896"/>
|
||||
<source>BMS configuration updated</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="900"/>
|
||||
<source>BMS configuration stored to Flash</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BmsServiceScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="29"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="42"/>
|
||||
<source>Send</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="51"/>
|
||||
<source>Help</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BmsSettingsScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="40"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="625"/>
|
||||
<source>Serial number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="67"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="630"/>
|
||||
<source>Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="73"/>
|
||||
<source>Number of boards</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="79"/>
|
||||
<source>Number of cells</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="113"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="635"/>
|
||||
<source>SOC</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="119"/>
|
||||
<source>Number of cells connected in parallel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="127"/>
|
||||
<source>Battery capacity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="161"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="640"/>
|
||||
<source>Limits</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="167"/>
|
||||
<source>Maximum charge current, A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="175"/>
|
||||
<source>Maximum load current, A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="197"/>
|
||||
<source>Maximum temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="228"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="645"/>
|
||||
<source>Cell configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="234"/>
|
||||
<source>Lower disable threshold, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="242"/>
|
||||
<source>Upper disable threshold, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="264"/>
|
||||
<source>Lower enable threshold (should be higher than disable), V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="272"/>
|
||||
<source>Upper enable threshold (should be higher than disable), V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="308"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="650"/>
|
||||
<source>Balancing configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="314"/>
|
||||
<source>Balancing start voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="322"/>
|
||||
<source>Cell voltage delta to start balancing, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="344"/>
|
||||
<source>Cell balancing interval, ms</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="377"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="655"/>
|
||||
<source>Output settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="386"/>
|
||||
<source># 1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="392"/>
|
||||
<source>Use for storage management</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="410"/>
|
||||
<source># 2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="450"/>
|
||||
<source># 3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="497"/>
|
||||
<source># 4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="672"/>
|
||||
<source>Read default settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="696"/>
|
||||
<source>The settings are written to non-volatile memory.
|
||||
Wait, please.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="416"/>
|
||||
<source>Normally closed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="426"/>
|
||||
<source>Change in value during SOC</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="465"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="512"/>
|
||||
<source>Closes at t<, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="471"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="518"/>
|
||||
<source>Opens at t>, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="555"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="660"/>
|
||||
<source>Current sensor value "0"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="570"/>
|
||||
<source>Calibrate "0"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="580"/>
|
||||
<source>Load settings from file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="586"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="602"/>
|
||||
<source>Select configuration file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="588"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="605"/>
|
||||
<source>Configuration files (*.xml)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="588"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="605"/>
|
||||
<source>All files (*)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="596"/>
|
||||
<source>Save settings to file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="678"/>
|
||||
<source>Read current settings from BMS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="693"/>
|
||||
<source>Write to non-volatile memory of BMS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="684"/>
|
||||
<source>Write current values to BMS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CellMonitorScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="24"/>
|
||||
<source>#</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="37"/>
|
||||
<source>Voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="50"/>
|
||||
<source>Balancing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="84"/>
|
||||
<source>V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Commands</name>
|
||||
<message>
|
||||
<location filename="../commands.cpp" line="237"/>
|
||||
<source>BMS configuration is set</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConfigParams</name>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="42"/>
|
||||
<location filename="../configparams.cpp" line="1150"/>
|
||||
<location filename="../configparams.cpp" line="1178"/>
|
||||
<location filename="../configparams.cpp" line="1381"/>
|
||||
<location filename="../configparams.cpp" line="1407"/>
|
||||
<source>OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1154"/>
|
||||
<location filename="../configparams.cpp" line="1384"/>
|
||||
<source>tag <b>%1</b> not found</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1164"/>
|
||||
<location filename="../configparams.cpp" line="1394"/>
|
||||
<location filename="../configparams.cpp" line="1432"/>
|
||||
<source>Could not open %1 for writing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1186"/>
|
||||
<location filename="../configparams.cpp" line="1415"/>
|
||||
<source>Could not open %1 for reading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConnectionDialog</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="11"/>
|
||||
<source>Connection screen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="36"/>
|
||||
<source>Select serial port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="50"/>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="82"/>
|
||||
<source>Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="82"/>
|
||||
<source>Disconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DebugInformationScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/DebugInformationScreen.qml" line="23"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="12"/>
|
||||
<source>Cubo Verde BMS tool</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="48"/>
|
||||
<source>Hide menu</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="76"/>
|
||||
<location filename="../qml/MainWindow.qml" line="131"/>
|
||||
<source>AKB monitor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="77"/>
|
||||
<location filename="../qml/MainWindow.qml" line="132"/>
|
||||
<source>Cell monitor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="78"/>
|
||||
<source>Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="79"/>
|
||||
<location filename="../qml/MainWindow.qml" line="134"/>
|
||||
<source>Visualization</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="80"/>
|
||||
<source>History</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="81"/>
|
||||
<source>BMS service</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="99"/>
|
||||
<source>Connection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="133"/>
|
||||
<source>BMS settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="135"/>
|
||||
<source>Information output</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="136"/>
|
||||
<source>Terminal</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="161"/>
|
||||
<location filename="../qml/MainWindow.qml" line="346"/>
|
||||
<source>Disconnected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="184"/>
|
||||
<source>Serial number</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="346"/>
|
||||
<source>Connected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageDialog</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/MessageDialog.qml" line="48"/>
|
||||
<source>Ok</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="126"/>
|
||||
<source>Autoconnect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="127"/>
|
||||
<source>Could not autoconnect. Make sure that the USB cable is plugged in and that the ENNOID-BMS is powered.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Translator</name>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="16"/>
|
||||
<source>EN</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="17"/>
|
||||
<source>RU</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="18"/>
|
||||
<source>IT</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Utility</name>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="187"/>
|
||||
<source><b>ENNOID-BMS Tool V%1</b><br>&copy; Kevin Dionne 2019<br><a href="mailto:kevin.dionne@ennoid.me">kevin.dionne@ennoid.me</a><br><a href="https://www.ennoid.me/">https://www.ennoid.me/</a><br>Based on: DieBieMS-tool<br><br><b>DieBieMS Tool </b><br>&copy; Danny Bokma 2018<br><a href="mailto:bms@diebie.nl">bms@diebie.nl</a><br><a href="https://diebie.nl/">https://diebie.nl/</a><br>Based on: VESC-tool<br><br><b>VESC Tool </b><br>&copy; Benjamin Vedder 2018<br><a href="mailto:benjamin@vedder.se">benjamin@vedder.se</a><br><a href="https://vesc-project.com/">https://vesc-project.com/</a><br><br></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>VisualizationScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="34"/>
|
||||
<source>Voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="39"/>
|
||||
<source>Current</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="44"/>
|
||||
<source>Battery temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="49"/>
|
||||
<source>BMS temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="54"/>
|
||||
<source>Cell voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="59"/>
|
||||
<source>Cell list</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="189"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="202"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="215"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="228"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="241"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="254"/>
|
||||
<source>Time, s</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="190"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="242"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="255"/>
|
||||
<source>Voltage, V</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="203"/>
|
||||
<source>Current, A</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="216"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="229"/>
|
||||
<source>Temperature, °C</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="273"/>
|
||||
<source>Pause data collection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="273"/>
|
||||
<source>Resume data collection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="283"/>
|
||||
<source>Clear data</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="312"/>
|
||||
<source>Reset zoom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="371"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="398"/>
|
||||
<source>Cell #</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="473"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="475"/>
|
||||
<source>Voltage indicator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="480"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="482"/>
|
||||
<source>Current indicator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="487"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="493"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="500"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="506"/>
|
||||
<source>Maximum temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="489"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="494"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="502"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="507"/>
|
||||
<source>Average temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="491"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="495"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="504"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="508"/>
|
||||
<source>Minimum temperature</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="513"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="519"/>
|
||||
<source>Maximum voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="515"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="520"/>
|
||||
<source>Average voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="517"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="521"/>
|
||||
<source>Minimum voltage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
translations/cubo_ru.qm
Normal file
BIN
translations/cubo_ru.qm
Normal file
Binary file not shown.
827
translations/cubo_ru.ts
Normal file
827
translations/cubo_ru.ts
Normal file
@@ -0,0 +1,827 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
<context>
|
||||
<name>AkbMonitorScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="23"/>
|
||||
<source>Serial number</source>
|
||||
<translation>Серийный номер</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="51"/>
|
||||
<source>Battery charge level, %</source>
|
||||
<translation>Степень заряда батареи, %</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="72"/>
|
||||
<source>Number of modules</source>
|
||||
<translation>Количество модулей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="93"/>
|
||||
<source>Battery voltage, V</source>
|
||||
<translation>Напряжение батареи, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="114"/>
|
||||
<source>Number of cells</source>
|
||||
<translation>Количество ячеек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="135"/>
|
||||
<source>Nominal capacity, A/h</source>
|
||||
<translation>Номинальная ёмкость, А/ч</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="156"/>
|
||||
<source>Actual capacity, A/h</source>
|
||||
<translation>Реальная ёмкость, А/ч</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="177"/>
|
||||
<source>Battery temperature, °C</source>
|
||||
<translation>Температура батареи, °C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="198"/>
|
||||
<source>BMS temperature, °C</source>
|
||||
<translation>Температура BMS, °C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="232"/>
|
||||
<source>Maximum cell voltage, V</source>
|
||||
<translation>Максимальное напряжение на ячейке, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="253"/>
|
||||
<source>Minimum cell voltage, V</source>
|
||||
<translation>Минимальное напряжение на ячейке, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/AkbMonitorScreen.qml" line="274"/>
|
||||
<source>Current</source>
|
||||
<translation>Ток</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BMSInterface</name>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="341"/>
|
||||
<location filename="../bmsinterface.cpp" line="345"/>
|
||||
<source>Reconnect</source>
|
||||
<translation>Переподключение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="341"/>
|
||||
<source>No ports found</source>
|
||||
<translation>Порты не найдены</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="346"/>
|
||||
<source>Please specify the connection manually the first time you are connecting.</source>
|
||||
<translation>Укажите тип подключения вручную при первом подключении.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="405"/>
|
||||
<source>Not connected</source>
|
||||
<translation>Не подключено</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="410"/>
|
||||
<source>Connected (serial) to %1</source>
|
||||
<translation>Подключено (последовательный порт) к %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="416"/>
|
||||
<source>Connected (TCP) to %1:%2</source>
|
||||
<translation>Подключено (TCP) к %1:%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="422"/>
|
||||
<source>Connected (BLE) to %1</source>
|
||||
<translation>Подключено (BLE) к %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="428"/>
|
||||
<source>, limited mode</source>
|
||||
<translation>, ограниченный режим</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="450"/>
|
||||
<source>Invalid serial port: %1</source>
|
||||
<translation>Недопустимый последовательный порт: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="463"/>
|
||||
<source>Serial port is not writable</source>
|
||||
<translation>Последовательный порт недоступен для записи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="494"/>
|
||||
<source>Connect serial</source>
|
||||
<translation>Подключение последовательного порта</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="495"/>
|
||||
<source>Serial port support is not enabled in this build of ENNOID-BMS Tool.</source>
|
||||
<translation>Поддержка последовательного порта не включена в этой сборке утилиты.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="645"/>
|
||||
<source>Serial port error: </source>
|
||||
<translation>Ошибка последовательного порта: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="687"/>
|
||||
<source>TCP Error</source>
|
||||
<translation>Ошибка TCP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="724"/>
|
||||
<source>No firmware read response</source>
|
||||
<translation>Нет ответа на чтение прошивки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="725"/>
|
||||
<source>Read Firmware Version</source>
|
||||
<translation>Чтение версии прошивки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="726"/>
|
||||
<source>Could not read firmware version. Make sure that selected port really belongs to the ENNOID-BMS. </source>
|
||||
<translation>Не удалось прочитать версию прошивки. Убедитесь, что выбранный порт действительно принадлежит ENNOID-BMS. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="802"/>
|
||||
<source>Not Supported Firmwares</source>
|
||||
<translation>Не поддерживаемые прошивки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="803"/>
|
||||
<source>This version of ENNOID-BMS Tool does not seem to have any supported firmwares. Something is probably wrong with the BMS configuration file.</source>
|
||||
<translation>Эта версия утилиты не имеет поддерживаемых прошивок. Вероятно, что-то не так с файлом конфигурации BMS.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="823"/>
|
||||
<location filename="../bmsinterface.cpp" line="851"/>
|
||||
<source>Error</source>
|
||||
<translation>Ошибка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="823"/>
|
||||
<location filename="../bmsinterface.cpp" line="851"/>
|
||||
<source>The firmware on the connected ENNOID-BMS is too old. Please update it using a programmer.</source>
|
||||
<translation>Прошивка подключенного ENNOID-BMS устарела. Пожалуйста, обновите его с помощью программатора.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="828"/>
|
||||
<location filename="../bmsinterface.cpp" line="840"/>
|
||||
<source>Warning</source>
|
||||
<translation>Внимание</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="828"/>
|
||||
<source>The connected ENNOID-BMS has newer firmware than this version of the ENNOID-BMS Tool supports. It is recommended that you update the ENNOID-BMS Tool to the latest version. Alternatively, the firmware on the connected ENNOID-BMS can be downgraded in the firmware page. Until then, limited communication mode will be used where only the firmware can be changed.</source>
|
||||
<translation>Подключенный ENNOID-BMS имеет более новую прошивку, чем поддерживает эта версия инструмента ENNOID-BMS. Рекомендуется обновить инструмент ENNOID-BMS до последней версии. Кроме того, прошивку подключенного ENNOID-BMS можно понизить на странице прошивки. До тех пор будет использоваться ограниченный режим связи, при котором можно будет изменить только прошивку.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="840"/>
|
||||
<source>The connected ENNOID-BMS has too old firmware. Since the connected ENNOID-BMS has firmware with bootloader support, it can be updated from the Firmware page. Until then, limited communication mode will be used where only the firmware can be changed.</source>
|
||||
<translation>Подключенный ENNOID-BMS имеет слишком старую прошивку. Поскольку подключенный ENNOID-BMS имеет встроенное ПО с поддержкой загрузчика, его можно обновить со страницы встроенного ПО. До тех пор будет использоваться ограниченный режим связи, при котором можно будет изменить только прошивку.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="864"/>
|
||||
<source>Firmware version: %1.%2, Hardware: %3, UUID: %4</source>
|
||||
<translation>Версия прошивки: %1.%2, Оборудование: %3, UUID: %4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="896"/>
|
||||
<source>BMS configuration updated</source>
|
||||
<translation>Конфигурация BMS обновлена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bmsinterface.cpp" line="900"/>
|
||||
<source>BMS configuration stored to Flash</source>
|
||||
<translation>Конфигурация BMS сохранена во флэш-памяти</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BmsServiceScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="29"/>
|
||||
<source>Clear</source>
|
||||
<translation>Очистить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="42"/>
|
||||
<source>Send</source>
|
||||
<translation>Отправить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsServiceScreen.qml" line="51"/>
|
||||
<source>Help</source>
|
||||
<translation>Помощь</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BmsSettingsScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="40"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="625"/>
|
||||
<source>Serial number</source>
|
||||
<translation>Серийный номер</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="67"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="630"/>
|
||||
<source>Configuration</source>
|
||||
<translation>Конфигурация</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="73"/>
|
||||
<source>Number of boards</source>
|
||||
<translation>Количество плат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="79"/>
|
||||
<source>Number of cells</source>
|
||||
<translation>Количество ячеек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="113"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="635"/>
|
||||
<source>SOC</source>
|
||||
<translation>SOC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="119"/>
|
||||
<source>Number of cells connected in parallel</source>
|
||||
<translation>Количество параллельно включенных ячеек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="127"/>
|
||||
<source>Battery capacity</source>
|
||||
<translation>Ёмкость батареи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="161"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="640"/>
|
||||
<source>Limits</source>
|
||||
<translation>Ограничения</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="167"/>
|
||||
<source>Maximum charge current, A</source>
|
||||
<translation>Максимальный ток заряда, A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="175"/>
|
||||
<source>Maximum load current, A</source>
|
||||
<translation>Максимальный ток нагрузки, A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="197"/>
|
||||
<source>Maximum temperature, °C</source>
|
||||
<translation>Максимальная температура, C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="228"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="645"/>
|
||||
<source>Cell configuration</source>
|
||||
<translation>Конфигурация ячеек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="234"/>
|
||||
<source>Lower disable threshold, V</source>
|
||||
<translation>Нижний порог отключения, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="242"/>
|
||||
<source>Upper disable threshold, V</source>
|
||||
<translation>Верхний порог отключения, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="264"/>
|
||||
<source>Lower enable threshold (should be higher than disable), V</source>
|
||||
<translation>Нижний порог включения (должен быть выше отключения), В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="272"/>
|
||||
<source>Upper enable threshold (should be higher than disable), V</source>
|
||||
<translation>Верхний порог включения (должен быть выше отключения), В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="308"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="650"/>
|
||||
<source>Balancing configuration</source>
|
||||
<translation>Конфигурация балансировки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="314"/>
|
||||
<source>Balancing start voltage, V</source>
|
||||
<translation>Напряжение старта балансировки, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="322"/>
|
||||
<source>Cell voltage delta to start balancing, V</source>
|
||||
<translation>Дельта напряжения ячеек для старта балансировки, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="344"/>
|
||||
<source>Cell balancing interval, ms</source>
|
||||
<translation>Интервал балансировки ячейки, мс</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="377"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="655"/>
|
||||
<source>Output settings</source>
|
||||
<translation>Настройка выходов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="386"/>
|
||||
<source># 1</source>
|
||||
<translation>№ 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="392"/>
|
||||
<source>Use for storage management</source>
|
||||
<translation>Использовать для управления ЗУ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="410"/>
|
||||
<source># 2</source>
|
||||
<translation>№ 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="450"/>
|
||||
<source># 3</source>
|
||||
<translation>№ 3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="497"/>
|
||||
<source># 4</source>
|
||||
<translation>№ 4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="672"/>
|
||||
<source>Read default settings</source>
|
||||
<translation>Загрузить настройки по-умолчанию</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="696"/>
|
||||
<source>The settings are written to non-volatile memory.
|
||||
Wait, please.</source>
|
||||
<translation>Выполняется запись настроек в энергонезависимую память.
|
||||
Пожалуйста подождите.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="416"/>
|
||||
<source>Normally closed</source>
|
||||
<translation>Нормально замкнут</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="426"/>
|
||||
<source>Change in value during SOC</source>
|
||||
<translation>Изменение значения при SOC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="465"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="512"/>
|
||||
<source>Closes at t<, °C</source>
|
||||
<translation>Замыкается при t<, °C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="471"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="518"/>
|
||||
<source>Opens at t>, °C</source>
|
||||
<translation>Размыкается при t>, °C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="555"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="660"/>
|
||||
<source>Current sensor value "0"</source>
|
||||
<translation>Значение датчика тока «0»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="570"/>
|
||||
<source>Calibrate "0"</source>
|
||||
<translation>Калибровать «0»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="580"/>
|
||||
<source>Load settings from file</source>
|
||||
<translation>Загрузить настройки из файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="586"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="602"/>
|
||||
<source>Select configuration file</source>
|
||||
<translation>Выберите файл конфигурации</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="588"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="605"/>
|
||||
<source>Configuration files (*.xml)</source>
|
||||
<translation>Файлы конфигурации (*.xml)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="588"/>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="605"/>
|
||||
<source>All files (*)</source>
|
||||
<translation>Все файлы (*)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="596"/>
|
||||
<source>Save settings to file</source>
|
||||
<translation>Сохранить настройки в файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Read settings from file</source>
|
||||
<translation type="vanished">Загрузить настройки из файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="678"/>
|
||||
<source>Read current settings from BMS</source>
|
||||
<translation>Загрузить текущие настройки из BMS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="693"/>
|
||||
<source>Write to non-volatile memory of BMS</source>
|
||||
<translation>Записать в энергонезависимую память BMS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/BmsSettingsScreen.qml" line="684"/>
|
||||
<source>Write current values to BMS</source>
|
||||
<translation>Записать текущие значения в BMS</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CellMonitorScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="24"/>
|
||||
<source>#</source>
|
||||
<translation>№</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="37"/>
|
||||
<source>Voltage</source>
|
||||
<translation>Напряжение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="50"/>
|
||||
<source>Balancing</source>
|
||||
<translation>Балансировка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/CellMonitorScreen.qml" line="84"/>
|
||||
<source>V</source>
|
||||
<translation>V</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Commands</name>
|
||||
<message>
|
||||
<location filename="../commands.cpp" line="237"/>
|
||||
<source>BMS configuration is set</source>
|
||||
<translation>Конфигурация BMS установлена</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConfigParams</name>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="42"/>
|
||||
<location filename="../configparams.cpp" line="1150"/>
|
||||
<location filename="../configparams.cpp" line="1178"/>
|
||||
<location filename="../configparams.cpp" line="1381"/>
|
||||
<location filename="../configparams.cpp" line="1407"/>
|
||||
<source>OK</source>
|
||||
<translation>Ок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1154"/>
|
||||
<location filename="../configparams.cpp" line="1384"/>
|
||||
<source>tag <b>%1</b> not found</source>
|
||||
<translation>тэг <b>%1</b> не найден</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1164"/>
|
||||
<location filename="../configparams.cpp" line="1394"/>
|
||||
<location filename="../configparams.cpp" line="1432"/>
|
||||
<source>Could not open %1 for writing</source>
|
||||
<translation>Не удалось открыть %1 для записи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../configparams.cpp" line="1186"/>
|
||||
<location filename="../configparams.cpp" line="1415"/>
|
||||
<source>Could not open %1 for reading</source>
|
||||
<translation>Не удалось открыть %1 для чтения</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConnectionDialog</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="11"/>
|
||||
<source>Connection screen</source>
|
||||
<translation>Экран подключения</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="36"/>
|
||||
<source>Select serial port</source>
|
||||
<translation>Выберите последовательный порт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="50"/>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="82"/>
|
||||
<source>Connect</source>
|
||||
<translation>Подключение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/ConnectionDialog.qml" line="82"/>
|
||||
<source>Disconnect</source>
|
||||
<translation>Отключение</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DebugInformationScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/DebugInformationScreen.qml" line="23"/>
|
||||
<source>Clear</source>
|
||||
<translation>Очистить</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="12"/>
|
||||
<source>Cubo Verde BMS tool</source>
|
||||
<translation>Cubo Verde утилита для BMS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="48"/>
|
||||
<source>Hide menu</source>
|
||||
<translation>Скрыть меню</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="76"/>
|
||||
<location filename="../qml/MainWindow.qml" line="131"/>
|
||||
<source>AKB monitor</source>
|
||||
<translation>Монитор АКБ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="77"/>
|
||||
<location filename="../qml/MainWindow.qml" line="132"/>
|
||||
<source>Cell monitor</source>
|
||||
<translation>Монитор ячеек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="78"/>
|
||||
<source>Configuration</source>
|
||||
<translation>Конфигурация</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="79"/>
|
||||
<location filename="../qml/MainWindow.qml" line="134"/>
|
||||
<source>Visualization</source>
|
||||
<translation>Визуализация</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="80"/>
|
||||
<source>History</source>
|
||||
<translation>История</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="81"/>
|
||||
<source>BMS service</source>
|
||||
<translation>Сервис BMS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="99"/>
|
||||
<source>Connection</source>
|
||||
<translation>Подключение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="133"/>
|
||||
<source>BMS settings</source>
|
||||
<translation>Настройка BMS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="135"/>
|
||||
<source>Information output</source>
|
||||
<translation>Вывод информации</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="136"/>
|
||||
<source>Terminal</source>
|
||||
<translation>Терминал</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exit</source>
|
||||
<translation type="vanished">Выход</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="161"/>
|
||||
<location filename="../qml/MainWindow.qml" line="346"/>
|
||||
<source>Disconnected</source>
|
||||
<translation>Отключено</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="184"/>
|
||||
<source>Serial number</source>
|
||||
<translation>Серийный номер</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/MainWindow.qml" line="346"/>
|
||||
<source>Connected</source>
|
||||
<translation>Подключено</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessageDialog</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/MessageDialog.qml" line="48"/>
|
||||
<source>Ok</source>
|
||||
<translation>Ок</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="126"/>
|
||||
<source>Autoconnect</source>
|
||||
<translation>Автоподключение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="127"/>
|
||||
<source>Could not autoconnect. Make sure that the USB cable is plugged in and that the ENNOID-BMS is powered.</source>
|
||||
<translation>Не удалось автоматически подключиться. Убедитесь, что USB-кабель подключен и ENNOID-BMS включен.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Translator</name>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="16"/>
|
||||
<source>EN</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="17"/>
|
||||
<source>RU</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../translator.cpp" line="18"/>
|
||||
<source>IT</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Utility</name>
|
||||
<message>
|
||||
<location filename="../utility.cpp" line="187"/>
|
||||
<source><b>ENNOID-BMS Tool V%1</b><br>&copy; Kevin Dionne 2019<br><a href="mailto:kevin.dionne@ennoid.me">kevin.dionne@ennoid.me</a><br><a href="https://www.ennoid.me/">https://www.ennoid.me/</a><br>Based on: DieBieMS-tool<br><br><b>DieBieMS Tool </b><br>&copy; Danny Bokma 2018<br><a href="mailto:bms@diebie.nl">bms@diebie.nl</a><br><a href="https://diebie.nl/">https://diebie.nl/</a><br>Based on: VESC-tool<br><br><b>VESC Tool </b><br>&copy; Benjamin Vedder 2018<br><a href="mailto:benjamin@vedder.se">benjamin@vedder.se</a><br><a href="https://vesc-project.com/">https://vesc-project.com/</a><br><br></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>VisualizationScreen</name>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="34"/>
|
||||
<source>Voltage</source>
|
||||
<translation>Напряжение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="39"/>
|
||||
<source>Current</source>
|
||||
<translation>Ток</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="44"/>
|
||||
<source>Battery temperature</source>
|
||||
<translation>Температура батареи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="49"/>
|
||||
<source>BMS temperature</source>
|
||||
<translation>Температура BMS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="54"/>
|
||||
<source>Cell voltage</source>
|
||||
<translation>Вольтаж ячейки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="59"/>
|
||||
<source>Cell list</source>
|
||||
<translation>Список ячеек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="189"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="202"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="215"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="228"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="241"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="254"/>
|
||||
<source>Time, s</source>
|
||||
<translation>Время, c</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="190"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="242"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="255"/>
|
||||
<source>Voltage, V</source>
|
||||
<translation>Напряжение, В</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="203"/>
|
||||
<source>Current, A</source>
|
||||
<translation>Ток, А</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="216"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="229"/>
|
||||
<source>Temperature, °C</source>
|
||||
<translation>Температура, °C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="273"/>
|
||||
<source>Pause data collection</source>
|
||||
<translation>Приостановить сбор данных</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="273"/>
|
||||
<source>Resume data collection</source>
|
||||
<translation>Продолжить сбор данных</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="283"/>
|
||||
<source>Clear data</source>
|
||||
<translation>Очистить данные</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="312"/>
|
||||
<source>Reset zoom</source>
|
||||
<translation>Сбросить масштаб</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="371"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="398"/>
|
||||
<source>Cell #</source>
|
||||
<translation>Ячейка №</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="473"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="475"/>
|
||||
<source>Voltage indicator</source>
|
||||
<translation>Показатель вольтажа</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="480"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="482"/>
|
||||
<source>Current indicator</source>
|
||||
<translation>Показатель тока</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="487"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="493"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="500"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="506"/>
|
||||
<source>Maximum temperature</source>
|
||||
<translation>Максимальная температура</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="489"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="494"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="502"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="507"/>
|
||||
<source>Average temperature</source>
|
||||
<translation>Средняя температура</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="491"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="495"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="504"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="508"/>
|
||||
<source>Minimum temperature</source>
|
||||
<translation>Минимальная температура</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="513"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="519"/>
|
||||
<source>Maximum voltage</source>
|
||||
<translation>Максимальное напряжение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="515"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="520"/>
|
||||
<source>Average voltage</source>
|
||||
<translation>Среднее напряжение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="517"/>
|
||||
<location filename="../qml/Screens/VisualizationScreen.qml" line="521"/>
|
||||
<source>Minimum voltage</source>
|
||||
<translation>Минимальное напряжение</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
7
translations/translations.qrc
Normal file
7
translations/translations.qrc
Normal file
@@ -0,0 +1,7 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>cubo_en.qm</file>
|
||||
<file>cubo_it.qm</file>
|
||||
<file>cubo_ru.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
87
translator.cpp
Normal file
87
translator.cpp
Normal file
@@ -0,0 +1,87 @@
|
||||
#include "translator.h"
|
||||
|
||||
#include <QTranslator>
|
||||
#include <QCoreApplication>
|
||||
#include <QQmlEngine>
|
||||
#include <QLocale>
|
||||
#include <QTimer>
|
||||
|
||||
Translator::Translator(QQmlEngine *engine, QObject *parent) :
|
||||
QObject(parent),
|
||||
mQmlEngine(engine),
|
||||
mCurrentTranslator(new QTranslator(this))
|
||||
{
|
||||
mNamesMap =
|
||||
{
|
||||
{Language::English, tr("EN")},
|
||||
{Language::Russian, tr("RU")},
|
||||
{Language::Italian, tr("IT")}
|
||||
};
|
||||
|
||||
mIconsMap =
|
||||
{
|
||||
{Language::English, "qrc:/Icons/english-flag.svg"},
|
||||
{Language::Russian, "qrc:/Icons/russian-flag.svg"},
|
||||
{Language::Italian, "qrc:/Icons/italian-flag.svg"}
|
||||
};
|
||||
|
||||
mTranslationsMap =
|
||||
{
|
||||
{Language::English, ":/cubo_en.qm"},
|
||||
{Language::Russian, ":/cubo_ru.qm"},
|
||||
{Language::Italian, ":/cubo_it.qm"}
|
||||
};
|
||||
|
||||
QCoreApplication::installTranslator(mCurrentTranslator);
|
||||
|
||||
if (QLocale::system().language() == QLocale::Russian)
|
||||
{
|
||||
setCurrentLanguage(Language::Russian);
|
||||
}
|
||||
else if (QLocale::system().language() == QLocale::Italian)
|
||||
{
|
||||
setCurrentLanguage(Language::Italian);
|
||||
}
|
||||
else
|
||||
{
|
||||
setCurrentLanguage(Language::English);
|
||||
}
|
||||
}
|
||||
|
||||
QString Translator::languageName(Language language) const
|
||||
{
|
||||
return mNamesMap.value(language);
|
||||
}
|
||||
|
||||
QString Translator::languageIcon(Language language) const
|
||||
{
|
||||
return mIconsMap.value(language);
|
||||
}
|
||||
|
||||
Translator::Language Translator::currentLanguage() const
|
||||
{
|
||||
return mCurrentLanguage;
|
||||
}
|
||||
|
||||
void Translator::setCurrentLanguage(Language language)
|
||||
{
|
||||
if (mCurrentTranslator->load(mTranslationsMap.value(language)))
|
||||
{
|
||||
QTimer::singleShot(0, this, [this]{ mQmlEngine->retranslate();} );
|
||||
}
|
||||
|
||||
mCurrentLanguage = language;
|
||||
emit currentLanguageChanged();
|
||||
emit currentLanguageNameChanged();
|
||||
emit currentLanguageIconChanged();
|
||||
}
|
||||
|
||||
QString Translator::currentLanguageName() const
|
||||
{
|
||||
return languageName(mCurrentLanguage);
|
||||
}
|
||||
|
||||
QString Translator::currentLanguageIcon() const
|
||||
{
|
||||
return languageIcon(mCurrentLanguage);
|
||||
}
|
||||
53
translator.h
Normal file
53
translator.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#ifndef TRANSLATOR_H
|
||||
#define TRANSLATOR_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QMap>
|
||||
|
||||
class QQmlEngine;
|
||||
class QTranslator;
|
||||
|
||||
class Translator : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(Language currentLanguage READ currentLanguage WRITE setCurrentLanguage NOTIFY currentLanguageChanged)
|
||||
Q_PROPERTY(QString currentLanguageName READ currentLanguageName NOTIFY currentLanguageNameChanged)
|
||||
Q_PROPERTY(QString currentLanguageIcon READ currentLanguageIcon NOTIFY currentLanguageNameChanged)
|
||||
|
||||
public:
|
||||
enum class Language {
|
||||
English,
|
||||
Russian,
|
||||
Italian
|
||||
};
|
||||
Q_ENUM(Language)
|
||||
|
||||
explicit Translator(QQmlEngine* engine, QObject *parent = nullptr);
|
||||
|
||||
public slots:
|
||||
QString languageName(Language language) const;
|
||||
QString languageIcon(Language language) const;
|
||||
|
||||
public:
|
||||
Language currentLanguage() const;
|
||||
void setCurrentLanguage(Language language);
|
||||
|
||||
QString currentLanguageName() const;
|
||||
QString currentLanguageIcon() const;
|
||||
|
||||
signals:
|
||||
void currentLanguageChanged();
|
||||
void currentLanguageNameChanged();
|
||||
void currentLanguageIconChanged();
|
||||
|
||||
private:
|
||||
Language mCurrentLanguage = Language::English;
|
||||
QQmlEngine* mQmlEngine = nullptr;
|
||||
QTranslator* mCurrentTranslator = nullptr;
|
||||
QMap<Language, QString> mNamesMap;
|
||||
QMap<Language, QString> mIconsMap;
|
||||
QMap<Language, QString> mTranslationsMap;
|
||||
};
|
||||
|
||||
#endif // TRANSLATOR_H
|
||||
Reference in New Issue
Block a user