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
|
INCLUDEPATH += $$PWD
|
||||||
# Version
|
# Version
|
||||||
DT_VERSION = 1.3
|
DT_VERSION = 2.0
|
||||||
DEFINES += DT_VERSION=$$DT_VERSION
|
DEFINES += DT_VERSION=$$DT_VERSION
|
||||||
|
|
||||||
!android: {
|
!android: {
|
||||||
@@ -21,13 +21,13 @@ CONFIG += c++14
|
|||||||
|
|
||||||
|
|
||||||
# Bluetooth available
|
# Bluetooth available
|
||||||
DEFINES += HAS_BLUETOOTH
|
#DEFINES += HAS_BLUETOOTH
|
||||||
|
|
||||||
QT += core gui
|
QT += core gui
|
||||||
QT += widgets
|
#QT += widgets
|
||||||
QT += printsupport
|
#QT += printsupport
|
||||||
QT += network
|
QT += network
|
||||||
QT += bluetooth
|
#QT += bluetooth
|
||||||
QT += quick
|
QT += quick
|
||||||
QT += quickcontrols2
|
QT += quickcontrols2
|
||||||
QT += charts
|
QT += charts
|
||||||
@@ -75,96 +75,104 @@ build_mobile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SOURCES += main.cpp\
|
SOURCES += main.cpp\
|
||||||
akbmonitorpage.cpp \
|
# akbmonitorpage.cpp \
|
||||||
bmsservicepage.cpp \
|
# bmsservicepage.cpp \
|
||||||
bmssettings.cpp \
|
# bmssettings.cpp \
|
||||||
bmssettingswidget.cpp \
|
# bmssettingswidget.cpp \
|
||||||
cellsmonitorcheckboxdelegate.cpp \
|
# cellsmonitorcheckboxdelegate.cpp \
|
||||||
cellsmonitorlabelvoltagedelegate.cpp \
|
# cellsmonitorlabelvoltagedelegate.cpp \
|
||||||
cellsmonitorpage.cpp \
|
# cellsmonitorpage.cpp \
|
||||||
configparamsgetter.cpp \
|
# configparamsgetter.cpp \
|
||||||
configurationpage.cpp \
|
# configurationpage.cpp \
|
||||||
connectandenterpage.cpp \
|
# connectandenterpage.cpp \
|
||||||
customlefttabbarbutton.cpp \
|
# customlefttabbarbutton.cpp \
|
||||||
debugprintpage.cpp \
|
# debugprintpage.cpp \
|
||||||
historylineeditbox.cpp \
|
# historylineeditbox.cpp \
|
||||||
hoverablecombobox.cpp \
|
# hoverablecombobox.cpp \
|
||||||
languageselectorbutton.cpp \
|
# languageselectorbutton.cpp \
|
||||||
mainwindow.cpp \
|
# mainwindow.cpp \
|
||||||
mainwindownew.cpp \
|
# mainwindownew.cpp \
|
||||||
packet.cpp \
|
packet.cpp \
|
||||||
settingsextrapage.cpp \
|
# settingsextrapage.cpp \
|
||||||
vbytearray.cpp \
|
vbytearray.cpp \
|
||||||
commands.cpp \
|
commands.cpp \
|
||||||
configparams.cpp \
|
configparams.cpp \
|
||||||
configparam.cpp \
|
configparam.cpp \
|
||||||
parametereditor.cpp \
|
# parametereditor.cpp \
|
||||||
digitalfiltering.cpp \
|
# digitalfiltering.cpp \
|
||||||
bleuart.cpp \
|
# bleuart.cpp \
|
||||||
utility.cpp \
|
utility.cpp \
|
||||||
bmsinterface.cpp \
|
bmsinterface.cpp \
|
||||||
visualizationchart.cpp \
|
translator.cpp \
|
||||||
visualizationpage.cpp
|
# visualizationchart.cpp \
|
||||||
|
# visualizationpage.cpp
|
||||||
|
|
||||||
HEADERS += mainwindow.h \
|
HEADERS += \ #mainwindow.h \
|
||||||
akbmonitorpage.h \
|
# akbmonitorpage.h \
|
||||||
bmsservicepage.h \
|
# bmsservicepage.h \
|
||||||
bmssettings.h \
|
# bmssettings.h \
|
||||||
bmssettingswidget.h \
|
# bmssettingswidget.h \
|
||||||
cellsmonitorcheckboxdelegate.h \
|
# cellsmonitorcheckboxdelegate.h \
|
||||||
cellsmonitorlabelvoltagedelegate.h \
|
# cellsmonitorlabelvoltagedelegate.h \
|
||||||
cellsmonitorpage.h \
|
# cellsmonitorpage.h \
|
||||||
configparamsgetter.h \
|
# configparamsgetter.h \
|
||||||
configurationpage.h \
|
# configurationpage.h \
|
||||||
connectandenterpage.h \
|
# connectandenterpage.h \
|
||||||
customlefttabbarbutton.h \
|
# customlefttabbarbutton.h \
|
||||||
debugprintpage.h \
|
# debugprintpage.h \
|
||||||
historylineedit.h \
|
# historylineedit.h \
|
||||||
historylineeditbox.h \
|
# historylineeditbox.h \
|
||||||
hoverablecombobox.h \
|
# hoverablecombobox.h \
|
||||||
languageselectorbutton.h \
|
# languageselectorbutton.h \
|
||||||
mainwindownew.h \
|
# mainwindownew.h \
|
||||||
packet.h \
|
packet.h \
|
||||||
settingsextrapage.h \
|
# settingsextrapage.h \
|
||||||
vbytearray.h \
|
vbytearray.h \
|
||||||
commands.h \
|
commands.h \
|
||||||
datatypes.h \
|
datatypes.h \
|
||||||
configparams.h \
|
configparams.h \
|
||||||
configparam.h \
|
configparam.h \
|
||||||
parametereditor.h \
|
# parametereditor.h \
|
||||||
digitalfiltering.h \
|
# digitalfiltering.h \
|
||||||
bleuart.h \
|
# bleuart.h \
|
||||||
utility.h \
|
utility.h \
|
||||||
bmsinterface.h \
|
bmsinterface.h \
|
||||||
visualizationchart.h \
|
translator.h \
|
||||||
visualizationpage.h
|
# visualizationchart.h \
|
||||||
|
# visualizationpage.h
|
||||||
|
|
||||||
FORMS += mainwindow.ui \
|
#FORMS += mainwindow.ui \
|
||||||
akbmonitorpage.ui \
|
# akbmonitorpage.ui \
|
||||||
bmsservicepage.ui \
|
# bmsservicepage.ui \
|
||||||
bmssettings.ui \
|
# bmssettings.ui \
|
||||||
bmssettingswidget.ui \
|
# bmssettingswidget.ui \
|
||||||
cellsmonitorpage.ui \
|
# cellsmonitorpage.ui \
|
||||||
configurationpage.ui \
|
# configurationpage.ui \
|
||||||
connectandenterpage.ui \
|
# connectandenterpage.ui \
|
||||||
debugprintpage.ui \
|
# debugprintpage.ui \
|
||||||
mainwindownew.ui \
|
# mainwindownew.ui \
|
||||||
parametereditor.ui \
|
# parametereditor.ui \
|
||||||
settingsextrapage.ui \
|
# settingsextrapage.ui \
|
||||||
visualizationpage.ui
|
# visualizationpage.ui
|
||||||
|
|
||||||
include(pages/pages.pri)
|
#include(pages/pages.pri)
|
||||||
include(widgets/widgets.pri)
|
#include(widgets/widgets.pri)
|
||||||
include(mobile/mobile.pri)
|
#include(mobile/mobile.pri)
|
||||||
|
|
||||||
RESOURCES += res.qrc \
|
RESOURCES += res.qrc \
|
||||||
qml/qml_icons.qrc \
|
translations/translations.qrc
|
||||||
|
|
||||||
|
RESOURCES += qml/qml_icons.qrc \
|
||||||
qml/qml_items.qrc
|
qml/qml_items.qrc
|
||||||
|
|
||||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||||
QML_IMPORT_PATH *= $$PWD/qml
|
QML_IMPORT_PATH *= $$PWD/qml
|
||||||
QML2_IMPORT_PATH *= $$PWD/qml
|
QML2_IMPORT_PATH *= $$PWD/qml
|
||||||
|
|
||||||
|
TRANSLATIONS = translations/cubo_en.ts \
|
||||||
|
translations/cubo_ru.ts \
|
||||||
|
translations/cubo_it.ts
|
||||||
|
|
||||||
DISTFILES += \
|
DISTFILES += \
|
||||||
android/AndroidManifest.xml \
|
android/AndroidManifest.xml \
|
||||||
android/gradle/wrapper/gradle-wrapper.jar \
|
android/gradle/wrapper/gradle-wrapper.jar \
|
||||||
|
|||||||
@@ -89,8 +89,11 @@ BMSInterface::BMSInterface(QObject *parent) : QObject(parent)
|
|||||||
|
|
||||||
// BLE
|
// BLE
|
||||||
|
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
mBleUart = new BleUart(this);
|
mBleUart = new BleUart(this);
|
||||||
mLastBleAddr = QSettings().value("ble_addr").toString();
|
mLastBleAddr = QSettings().value("ble_addr").toString();
|
||||||
|
connect(mBleUart, SIGNAL(dataRx(QByteArray)), this, SLOT(bleDataRx(QByteArray)));
|
||||||
|
#endif
|
||||||
|
|
||||||
int size = mSettings.beginReadArray("bleNames");
|
int size = mSettings.beginReadArray("bleNames");
|
||||||
for (int i = 0; i < size; ++i) {
|
for (int i = 0; i < size; ++i) {
|
||||||
@@ -101,8 +104,6 @@ BMSInterface::BMSInterface(QObject *parent) : QObject(parent)
|
|||||||
}
|
}
|
||||||
mSettings.endArray();
|
mSettings.endArray();
|
||||||
|
|
||||||
connect(mBleUart, SIGNAL(dataRx(QByteArray)), this, SLOT(bleDataRx(QByteArray)));
|
|
||||||
|
|
||||||
mCommands->setbmsConfig(mbmsConfig);
|
mCommands->setbmsConfig(mbmsConfig);
|
||||||
|
|
||||||
// Other signals/slots
|
// Other signals/slots
|
||||||
@@ -280,9 +281,11 @@ bool BMSInterface::isPortConnected()
|
|||||||
res = true;
|
res = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
if (mBleUart->isConnected()) {
|
if (mBleUart->isConnected()) {
|
||||||
res = true;
|
res = true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -301,10 +304,12 @@ void BMSInterface::disconnectPort()
|
|||||||
updateFwRx(false);
|
updateFwRx(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
if (mBleUart->isConnected()) {
|
if (mBleUart->isConnected()) {
|
||||||
mBleUart->disconnectBle();
|
mBleUart->disconnectBle();
|
||||||
updateFwRx(false);
|
updateFwRx(false);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
mFwRetries = 0;
|
mFwRetries = 0;
|
||||||
}
|
}
|
||||||
@@ -321,8 +326,12 @@ bool BMSInterface::reconnectLastPort()
|
|||||||
connectTcp(mLastTcpServer, mLastTcpPort);
|
connectTcp(mLastTcpServer, mLastTcpPort);
|
||||||
return true;
|
return true;
|
||||||
} else if (mLastConnType == CONN_BLE) {
|
} else if (mLastConnType == CONN_BLE) {
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
mBleUart->startConnect(mLastBleAddr);
|
mBleUart->startConnect(mLastBleAddr);
|
||||||
return true;
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
#ifdef HAS_SERIALPORT
|
#ifdef HAS_SERIALPORT
|
||||||
QList<VSerialInfo_t> ports = listSerialPorts();
|
QList<VSerialInfo_t> ports = listSerialPorts();
|
||||||
@@ -408,10 +417,12 @@ QString BMSInterface::getConnectedPortName()
|
|||||||
connected = true;
|
connected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
if (mBleUart->isConnected()) {
|
if (mBleUart->isConnected()) {
|
||||||
res = tr("Connected (BLE) to %1").arg(mLastBleAddr);
|
res = tr("Connected (BLE) to %1").arg(mLastBleAddr);
|
||||||
connected = true;
|
connected = true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (connected && mCommands->isLimitedMode()) {
|
if (connected && mCommands->isLimitedMode()) {
|
||||||
res += tr(", limited mode");
|
res += tr(", limited mode");
|
||||||
@@ -551,10 +562,12 @@ void BMSInterface::connectTcp(QString server, int port)
|
|||||||
|
|
||||||
void BMSInterface::connectBle(QString address)
|
void BMSInterface::connectBle(QString address)
|
||||||
{
|
{
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
mBleUart->startConnect(address);
|
mBleUart->startConnect(address);
|
||||||
mLastConnType = CONN_BLE;
|
mLastConnType = CONN_BLE;
|
||||||
mLastBleAddr = address;
|
mLastBleAddr = address;
|
||||||
setLastConnectionType(CONN_BLE);
|
setLastConnectionType(CONN_BLE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BMSInterface::isAutoconnectOngoing() const
|
bool BMSInterface::isAutoconnectOngoing() const
|
||||||
@@ -629,7 +642,7 @@ void BMSInterface::serialPortError(QSerialPort::SerialPortError error)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
message = "Serial port error: " + mSerialPort->errorString();
|
message = tr("Serial port error: ") + mSerialPort->errorString();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -762,9 +775,11 @@ void BMSInterface::packetDataToSend(QByteArray &data)
|
|||||||
mTcpSocket->write(data);
|
mTcpSocket->write(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
if (mBleUart->isConnected()) {
|
if (mBleUart->isConnected()) {
|
||||||
mBleUart->writeData(data);
|
mBleUart->writeData(data);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BMSInterface::packetReceived(QByteArray &data)
|
void BMSInterface::packetReceived(QByteArray &data)
|
||||||
@@ -846,15 +861,17 @@ void BMSInterface::fwVersionReceived(int major, int minor, QString hw, QByteArra
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString fwStr;
|
auto fwStr = tr("Firmware version: %1.%2, Hardware: %3, UUID: %4").arg(major).arg(minor).arg(hw).arg(strUuid);
|
||||||
fwStr.sprintf("ENNOID-BMS Firmware Version %d.%d", major, minor);
|
|
||||||
if (!hw.isEmpty()) {
|
|
||||||
fwStr += ", Hardware: " + hw;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strUuid.isEmpty()) {
|
// QString fwStr;
|
||||||
fwStr += ", UUID: " + strUuid;
|
// 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);
|
emit statusMessage(fwStr, true);
|
||||||
#if 0
|
#if 0
|
||||||
|
|||||||
@@ -141,7 +141,9 @@ private slots:
|
|||||||
void tcpInputDataAvailable();
|
void tcpInputDataAvailable();
|
||||||
void tcpInputError(QAbstractSocket::SocketError socketError);
|
void tcpInputError(QAbstractSocket::SocketError socketError);
|
||||||
|
|
||||||
|
#ifdef HAS_BLUETOOTH
|
||||||
void bleDataRx(QByteArray data);
|
void bleDataRx(QByteArray data);
|
||||||
|
#endif
|
||||||
|
|
||||||
void timerSlot();
|
void timerSlot();
|
||||||
void packetDataToSend(QByteArray &data);
|
void packetDataToSend(QByteArray &data);
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ void Commands::processPacket(QByteArray data)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case COMM_SET_MCCONF:
|
case COMM_SET_MCCONF:
|
||||||
emit ackReceived("BMS Write OK");
|
emit ackReceived(tr("BMS configuration is set"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case COMM_STORE_BMS_CONF:
|
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 *ConfigParams::getEditor(const QString &name, QWidget *parent)
|
||||||
{
|
//{
|
||||||
QWidget *retVal = 0;
|
// QWidget *retVal = 0;
|
||||||
|
|
||||||
if (mParams.contains(name)) {
|
// if (mParams.contains(name)) {
|
||||||
ConfigParam &p = mParams[name];
|
// ConfigParam &p = mParams[name];
|
||||||
|
|
||||||
switch (p.type) {
|
// switch (p.type) {
|
||||||
case CFG_T_DOUBLE: {
|
// case CFG_T_DOUBLE: {
|
||||||
ParamEditDouble *edit = new ParamEditDouble(parent);
|
// ParamEditDouble *edit = new ParamEditDouble(parent);
|
||||||
edit->setName(name);
|
// edit->setName(name);
|
||||||
edit->setSuffix(p.suffix);
|
// edit->setSuffix(p.suffix);
|
||||||
edit->setDecimals(p.editorDecimalsDouble);
|
// edit->setDecimals(p.editorDecimalsDouble);
|
||||||
edit->setShowAsPercentage(p.editAsPercentage);
|
// edit->setShowAsPercentage(p.editAsPercentage);
|
||||||
edit->showDisplay(p.showDisplay);
|
// edit->showDisplay(p.showDisplay);
|
||||||
|
|
||||||
edit->setProperty("type", int(p.type));
|
// edit->setProperty("type", int(p.type));
|
||||||
edit->setProperty("suffix", p.suffix);
|
// edit->setProperty("suffix", p.suffix);
|
||||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||||
edit->setProperty("value", p.valDouble);
|
// edit->setProperty("value", p.valDouble);
|
||||||
|
|
||||||
edit->setConfig(this);
|
// edit->setConfig(this);
|
||||||
retVal = edit;
|
// retVal = edit;
|
||||||
} break;
|
// } break;
|
||||||
|
|
||||||
case CFG_T_INT: {
|
// case CFG_T_INT: {
|
||||||
ParamEditInt *edit = new ParamEditInt(parent);
|
// ParamEditInt *edit = new ParamEditInt(parent);
|
||||||
edit->setName(name);
|
// edit->setName(name);
|
||||||
edit->setSuffix(p.suffix);
|
// edit->setSuffix(p.suffix);
|
||||||
edit->setShowAsPercentage(p.editAsPercentage);
|
// edit->setShowAsPercentage(p.editAsPercentage);
|
||||||
edit->showDisplay(p.showDisplay);
|
// edit->showDisplay(p.showDisplay);
|
||||||
|
|
||||||
edit->setProperty("type", int(p.type));
|
// edit->setProperty("type", int(p.type));
|
||||||
edit->setProperty("suffix", p.suffix);
|
// edit->setProperty("suffix", p.suffix);
|
||||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||||
edit->setProperty("value", p.valInt);
|
// edit->setProperty("value", p.valInt);
|
||||||
|
|
||||||
edit->setConfig(this);
|
// edit->setConfig(this);
|
||||||
retVal = edit;
|
// retVal = edit;
|
||||||
} break;
|
// } break;
|
||||||
|
|
||||||
case CFG_T_QSTRING: {
|
// case CFG_T_QSTRING: {
|
||||||
ParamEditString *edit = new ParamEditString(parent);
|
// ParamEditString *edit = new ParamEditString(parent);
|
||||||
edit->setName(name);
|
// edit->setName(name);
|
||||||
|
|
||||||
edit->setProperty("type", int(p.type));
|
// edit->setProperty("type", int(p.type));
|
||||||
edit->setProperty("suffix", p.suffix);
|
// edit->setProperty("suffix", p.suffix);
|
||||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||||
edit->setProperty("value", p.valString);
|
// edit->setProperty("value", p.valString);
|
||||||
|
|
||||||
edit->setConfig(this);
|
// edit->setConfig(this);
|
||||||
retVal = edit;
|
// retVal = edit;
|
||||||
} break;
|
// } break;
|
||||||
|
|
||||||
case CFG_T_ENUM: {
|
// case CFG_T_ENUM: {
|
||||||
ParamEditEnum *edit = new ParamEditEnum(parent);
|
// ParamEditEnum *edit = new ParamEditEnum(parent);
|
||||||
edit->setName(name);
|
// edit->setName(name);
|
||||||
|
|
||||||
edit->setProperty("type", int(p.type));
|
// edit->setProperty("type", int(p.type));
|
||||||
edit->setProperty("suffix", p.suffix);
|
// edit->setProperty("suffix", p.suffix);
|
||||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||||
edit->setProperty("value", p.valInt);
|
// edit->setProperty("value", p.valInt);
|
||||||
|
|
||||||
edit->setConfig(this);
|
// edit->setConfig(this);
|
||||||
retVal = edit;
|
// retVal = edit;
|
||||||
} break;
|
// } break;
|
||||||
|
|
||||||
case CFG_T_BOOL: {
|
// case CFG_T_BOOL: {
|
||||||
ParamEditBool *edit = new ParamEditBool(parent);
|
// ParamEditBool *edit = new ParamEditBool(parent);
|
||||||
edit->setName(name);
|
// edit->setName(name);
|
||||||
|
|
||||||
edit->setProperty("type", int(p.type));
|
// edit->setProperty("type", int(p.type));
|
||||||
edit->setProperty("suffix", p.suffix);
|
// edit->setProperty("suffix", p.suffix);
|
||||||
edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
// edit->setProperty("editorDecimalsDouble", p.editorDecimalsDouble);
|
||||||
edit->setProperty("editAsPercentage", p.editAsPercentage);
|
// edit->setProperty("editAsPercentage", p.editAsPercentage);
|
||||||
edit->setProperty("value", p.valInt);
|
// edit->setProperty("value", p.valInt);
|
||||||
|
|
||||||
edit->setConfig(this);
|
// edit->setConfig(this);
|
||||||
retVal = edit;
|
// retVal = edit;
|
||||||
} break;
|
// } break;
|
||||||
|
|
||||||
default:
|
// default:
|
||||||
qWarning() << "no editor for" << name << "could be created";
|
// qWarning() << "no editor for" << name << "could be created";
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
|
|
||||||
} else {
|
// } else {
|
||||||
qWarning() << name << "not found";
|
// qWarning() << name << "not found";
|
||||||
}
|
// }
|
||||||
|
|
||||||
return retVal;
|
// return retVal;
|
||||||
}
|
//}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
QWidget *ConfigParams::getEditor(const QString &name, QWidget *parent)
|
QWidget *ConfigParams::getEditor(const QString &name, QWidget *parent)
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public:
|
|||||||
QStringList getParamOrder() const;
|
QStringList getParamOrder() const;
|
||||||
void setParamOrder(const QStringList &order);
|
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 getParamSerial(VByteArray &vb, const QString &name);
|
||||||
void setParamSerial(VByteArray &vb, const QString &name, QObject *src = 0);
|
void setParamSerial(VByteArray &vb, const QString &name, QObject *src = 0);
|
||||||
|
|||||||
14
main.cpp
14
main.cpp
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "bmsinterface.h"
|
#include "bmsinterface.h"
|
||||||
#include "utility.h"
|
#include "utility.h"
|
||||||
#include "mobile/fwhelper.h"
|
#include "translator.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
@@ -40,9 +40,16 @@ QObject *utilitySingletontypeProvider(QQmlEngine */*engine*/, QJSEngine */*scrip
|
|||||||
return utility;
|
return utility;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QObject *translatorSingletontypeProvider(QQmlEngine *engine, QJSEngine */*scriptEngine*/)
|
||||||
|
{
|
||||||
|
auto *translator = new Translator(engine);
|
||||||
|
return translator;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
Q_INIT_RESOURCE(res);
|
Q_INIT_RESOURCE(res);
|
||||||
|
Q_INIT_RESOURCE(translations);
|
||||||
Q_INIT_RESOURCE(qml_icons);
|
Q_INIT_RESOURCE(qml_icons);
|
||||||
Q_INIT_RESOURCE(qml_items);
|
Q_INIT_RESOURCE(qml_items);
|
||||||
|
|
||||||
@@ -59,16 +66,13 @@ int main(int argc, char *argv[])
|
|||||||
font.setStyleStrategy(QFont::PreferAntialias);
|
font.setStyleStrategy(QFont::PreferAntialias);
|
||||||
app.setFont(font);
|
app.setFont(font);
|
||||||
|
|
||||||
// app.setFont(QFont("Artifakt Element", 16, QFont::Medium));
|
|
||||||
|
|
||||||
QQmlApplicationEngine engine;
|
QQmlApplicationEngine engine;
|
||||||
|
|
||||||
qmlRegisterSingletonType<BMSInterface>("Cubo", 1, 0, "BmsInterface", bmsInterfaceSingletontypeProvider);
|
qmlRegisterSingletonType<BMSInterface>("Cubo", 1, 0, "BmsInterface", bmsInterfaceSingletontypeProvider);
|
||||||
qmlRegisterSingletonType<Utility>("Cubo", 1, 0, "Utility", utilitySingletontypeProvider);
|
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<Commands>("Cubo", 1, 0, "Commands");
|
||||||
qmlRegisterType<ConfigParams>("Cubo", 1, 0, "ConfigParams");
|
qmlRegisterType<ConfigParams>("Cubo", 1, 0, "ConfigParams");
|
||||||
qmlRegisterType<FwHelper>("Cubo", 1, 0, "FwHelper");
|
|
||||||
|
|
||||||
engine.addImportPath(QStringLiteral("qrc:/"));
|
engine.addImportPath(QStringLiteral("qrc:/"));
|
||||||
engine.load(QUrl(QStringLiteral("qrc:/MainWindow.qml")));
|
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
|
horizontalAlignment: Text.AlignHCenter
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
import QtQuick 2.0
|
|
||||||
|
|
||||||
Item {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -5,13 +5,15 @@ import Utils 1.0
|
|||||||
|
|
||||||
Shape {
|
Shape {
|
||||||
id: shape
|
id: shape
|
||||||
|
implicitWidth: 1
|
||||||
implicitHeight: 1
|
implicitHeight: 1
|
||||||
|
property bool horizontal: true
|
||||||
|
|
||||||
ShapePath {
|
ShapePath {
|
||||||
strokeColor: Palette.borderColor
|
strokeColor: Palette.borderColor
|
||||||
strokeStyle: ShapePath.SolidLine
|
strokeStyle: ShapePath.SolidLine
|
||||||
startX: 0
|
startX: 0
|
||||||
startY: 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
|
horizontalAlignment: Text.AlignHCenter
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
import QtQuick 2.0
|
|
||||||
|
|
||||||
Item {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -6,6 +6,6 @@ import Utils 1.0
|
|||||||
TextArea {
|
TextArea {
|
||||||
color: Palette.textColor
|
color: Palette.textColor
|
||||||
selectByMouse: true
|
selectByMouse: true
|
||||||
selectionColor: Palette.alternativeBackgroundColor
|
selectionColor: Palette.selectedTextBackgroundColor
|
||||||
font.pixelSize: 16
|
font.pixelSize: 16
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ TextField {
|
|||||||
implicitHeight: 58
|
implicitHeight: 58
|
||||||
color: Palette.textColor
|
color: Palette.textColor
|
||||||
selectByMouse: true
|
selectByMouse: true
|
||||||
selectionColor: Palette.alternativeBackgroundColor
|
selectionColor: Palette.selectedTextBackgroundColor
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
color: enabled ? Palette.backgroundColor : Palette.hoveredBackgroundColor
|
color: enabled ? Palette.backgroundColor : Palette.hoveredBackgroundColor
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
module Controls
|
module Controls
|
||||||
Label 1.0 Label.qml
|
|
||||||
ComboBox 1.0 ComboBox.qml
|
ComboBox 1.0 ComboBox.qml
|
||||||
PaneItem 1.0 PaneItem.qml
|
|
||||||
ScrollBar 1.0 ScrollBar.qml
|
ScrollBar 1.0 ScrollBar.qml
|
||||||
Button 1.0 Button.qml
|
Button 1.0 Button.qml
|
||||||
OutlineButton 1.0 OutlineButton.qml
|
OutlineButton 1.0 OutlineButton.qml
|
||||||
@@ -22,3 +20,5 @@ ChartView 1.0 ChartView.qml
|
|||||||
TextArea 1.0 TextArea.qml
|
TextArea 1.0 TextArea.qml
|
||||||
DialogHeader 1.0 DialogHeader.qml
|
DialogHeader 1.0 DialogHeader.qml
|
||||||
DialogBackground 1.0 DialogBackground.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">
|
<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">
|
<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>
|
</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">
|
<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>
|
</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">
|
<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>
|
</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">
|
<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>
|
</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>
|
</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 2.12
|
||||||
import QtQuick.Controls 2.12
|
import QtQuick.Controls 2.12
|
||||||
import QtQuick.Layouts 1.12
|
import QtQuick.Layouts 1.12
|
||||||
import QtGraphicalEffects 1.0
|
|
||||||
|
|
||||||
import Controls 1.0 as Controls
|
import Controls 1.0 as Controls
|
||||||
import Screens 1.0 as Screens
|
import Screens 1.0 as Screens
|
||||||
@@ -10,7 +9,7 @@ import Utils 1.0
|
|||||||
|
|
||||||
ApplicationWindow {
|
ApplicationWindow {
|
||||||
id: window
|
id: window
|
||||||
title: qsTr("Cubo Verde BMS Tool")
|
title: qsTr("Cubo Verde BMS tool")
|
||||||
width: 1366
|
width: 1366
|
||||||
height: 768
|
height: 768
|
||||||
visible: true
|
visible: true
|
||||||
@@ -45,38 +44,11 @@ ApplicationWindow {
|
|||||||
Layout.preferredHeight: pane.minimized ? 85 : 40
|
Layout.preferredHeight: pane.minimized ? 85 : 40
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemDelegate {
|
Controls.MenuItemDelegate {
|
||||||
leftPadding: pane.minimized ? 0 : 40
|
text: qsTr("Hide menu")
|
||||||
|
font.weight: Font.Normal
|
||||||
contentItem: RowLayout {
|
icon.source: "qrc:/Icons/hide-menu.svg"
|
||||||
height: 50
|
minimized: pane.minimized
|
||||||
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"
|
|
||||||
}
|
|
||||||
|
|
||||||
onClicked: if (pane.implicitWidth === 300) {
|
onClicked: if (pane.implicitWidth === 300) {
|
||||||
animation.from = 300
|
animation.from = 300
|
||||||
@@ -90,7 +62,6 @@ ApplicationWindow {
|
|||||||
pane.minimized = false
|
pane.minimized = false
|
||||||
}
|
}
|
||||||
|
|
||||||
Layout.preferredHeight: 52
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,101 +71,36 @@ ApplicationWindow {
|
|||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
id: menuView
|
id: menuView
|
||||||
model: [
|
|
||||||
|
property var menuModel: [
|
||||||
{"text": qsTr("AKB monitor"), "icon": "qrc:/Icons/akb-monitor.svg"},
|
{"text": qsTr("AKB monitor"), "icon": "qrc:/Icons/akb-monitor.svg"},
|
||||||
{"text": qsTr("Cell monitor"), "icon": "qrc:/Icons/cell-monitor.svg"},
|
{"text": qsTr("Cell monitor"), "icon": "qrc:/Icons/cell-monitor.svg"},
|
||||||
{"text": qsTr("Configuration"), "icon": "qrc:/Icons/bms-configuration.svg"},
|
{"text": qsTr("Configuration"), "icon": "qrc:/Icons/bms-configuration.svg"},
|
||||||
{"text": qsTr("Visualization"), "icon": "qrc:/Icons/visualization.svg"},
|
{"text": qsTr("Visualization"), "icon": "qrc:/Icons/visualization.svg"},
|
||||||
{"text": qsTr("History"), "icon": "qrc:/Icons/history.svg"},
|
{"text": qsTr("History"), "icon": "qrc:/Icons/history.svg"},
|
||||||
{"text": qsTr("BMS service"), "icon": "qrc:/Icons/bms-service.svg"},
|
{"text": qsTr("BMS service"), "icon": "qrc:/Icons/bms-service.svg"}
|
||||||
// {"text": qsTr("Exit"), "icon": "qrc:/Icons/exit.svg"},
|
|
||||||
]
|
]
|
||||||
|
|
||||||
delegate: ItemDelegate {
|
model: menuModel.length
|
||||||
id: menuDelegate
|
|
||||||
|
delegate: Controls.MenuItemDelegate {
|
||||||
width: ListView.view.width
|
width: ListView.view.width
|
||||||
height: 52
|
text: menuView.menuModel[modelData].text
|
||||||
leftPadding: pane.minimized ? 0 : 40
|
icon.source: menuView.menuModel[modelData].icon
|
||||||
highlighted: ListView.isCurrentItem
|
minimized: pane.minimized
|
||||||
onClicked: menuView.currentIndex = index
|
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.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemDelegate {
|
Controls.MenuItemDelegate {
|
||||||
leftPadding: pane.minimized ? 0 : 40
|
text: qsTr("Connection")
|
||||||
|
icon.source: "qrc:/Icons/connection.svg"
|
||||||
|
icon.color: "#FFFFFF"
|
||||||
|
minimized: pane.minimized
|
||||||
onClicked: connectionDialog.open()
|
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
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,6 +122,8 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
id: topBar
|
id: topBar
|
||||||
|
|
||||||
@@ -226,13 +134,13 @@ ApplicationWindow {
|
|||||||
qsTr("Visualization"),
|
qsTr("Visualization"),
|
||||||
qsTr("Information output"),
|
qsTr("Information output"),
|
||||||
qsTr("Terminal"),
|
qsTr("Terminal"),
|
||||||
qsTr("Exit"),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: topBar.labels[stack.currentIndex]
|
text: topBar.labels[stack.currentIndex]
|
||||||
font.pixelSize: 38
|
font.pixelSize: 38
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
|
color: Palette.textColor
|
||||||
}
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
@@ -240,8 +148,14 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
spacing: 20
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
spacing: 5
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
spacing: 7
|
||||||
|
|
||||||
Controls.ContentLabel {
|
Controls.ContentLabel {
|
||||||
id: connectionStatusLabel
|
id: connectionStatusLabel
|
||||||
text: qsTr("Disconnected")
|
text: qsTr("Disconnected")
|
||||||
@@ -264,6 +178,8 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
spacing: 5
|
||||||
|
|
||||||
Controls.ContentLabel {
|
Controls.ContentLabel {
|
||||||
text: qsTr("Serial number") + ":"
|
text: qsTr("Serial number") + ":"
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
@@ -277,11 +193,111 @@ ApplicationWindow {
|
|||||||
|
|
||||||
Layout.alignment: Qt.AlignRight
|
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.leftMargin: 45
|
||||||
Layout.rightMargin: 45
|
Layout.rightMargin: 45
|
||||||
|
Layout.maximumHeight: 90
|
||||||
}
|
}
|
||||||
|
|
||||||
StackLayout {
|
StackLayout {
|
||||||
@@ -301,6 +317,14 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Screens.BmsSettingsScreen {
|
Screens.BmsSettingsScreen {
|
||||||
|
onNeedWait: {
|
||||||
|
if (active) {
|
||||||
|
busyPopup.text = text
|
||||||
|
busyPopup.open()
|
||||||
|
} else {
|
||||||
|
busyPopup.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Screens.VisualizationScreen {
|
Screens.VisualizationScreen {
|
||||||
@@ -319,7 +343,7 @@ ApplicationWindow {
|
|||||||
target: BmsInterface
|
target: BmsInterface
|
||||||
|
|
||||||
onPortConnectedChanged: {
|
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()
|
connectionStatusIndicator.enabled = BmsInterface.isPortConnected()
|
||||||
if (BmsInterface.isPortConnected()) {
|
if (BmsInterface.isPortConnected()) {
|
||||||
BmsInterface.commands().getBMSconf()
|
BmsInterface.commands().getBMSconf()
|
||||||
@@ -351,7 +375,6 @@ ApplicationWindow {
|
|||||||
statusPopup.text = msg
|
statusPopup.text = msg
|
||||||
statusPopup.good = isGood
|
statusPopup.good = isGood
|
||||||
statusPopup.open()
|
statusPopup.open()
|
||||||
hideStatusTimer.start()
|
|
||||||
} else {
|
} else {
|
||||||
if (statusPopup.text !== msg) {
|
if (statusPopup.text !== msg) {
|
||||||
statusPopup.queue.push({"text": msg, "good": isGood})
|
statusPopup.queue.push({"text": msg, "good": isGood})
|
||||||
@@ -395,7 +418,7 @@ ApplicationWindow {
|
|||||||
Screens.StatusPopup {
|
Screens.StatusPopup {
|
||||||
id: statusPopup
|
id: statusPopup
|
||||||
|
|
||||||
property var filteredStatuses: []//[qsTr("BMS configuration updated")]
|
property var filteredStatuses: []
|
||||||
property var queue: []
|
property var queue: []
|
||||||
|
|
||||||
onClosed: {
|
onClosed: {
|
||||||
@@ -404,9 +427,13 @@ ApplicationWindow {
|
|||||||
statusPopup.text = message.text
|
statusPopup.text = message.text
|
||||||
statusPopup.good = message.good
|
statusPopup.good = message.good
|
||||||
statusPopup.open()
|
statusPopup.open()
|
||||||
hideStatusTimer.start()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onOpened: {
|
||||||
|
hideStatusTimer.start()
|
||||||
|
busyPopup.close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
@@ -415,13 +442,57 @@ ApplicationWindow {
|
|||||||
onTriggered: statusPopup.close()
|
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 {
|
background: Rectangle {
|
||||||
color: Palette.screenBackgroundColor
|
color: Palette.screenBackgroundColor
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
// BmsInterface.bmsConfig().loadParamsXml("://res/config.xml")
|
|
||||||
// BmsInterface.infoConfig().loadParamsXml("://res/info.xml")
|
|
||||||
connectionDialog.open()
|
connectionDialog.open()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Item {
|
|||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: 90
|
spacing: 70
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
Controls.TitleLabel {
|
Controls.TitleLabel {
|
||||||
@@ -41,14 +41,14 @@ Item {
|
|||||||
|
|
||||||
GridLayout {
|
GridLayout {
|
||||||
columns: 2
|
columns: 2
|
||||||
columnSpacing: 90
|
columnSpacing: 70
|
||||||
rowSpacing: 20
|
rowSpacing: 20
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: 10
|
spacing: 10
|
||||||
Controls.ContentLabel {
|
Controls.ContentLabel {
|
||||||
text: qsTr("Battery charge level, V")
|
text: qsTr("Battery charge level, %")
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: implicitWidth
|
Layout.maximumWidth: implicitWidth
|
||||||
}
|
}
|
||||||
@@ -222,7 +222,7 @@ Item {
|
|||||||
|
|
||||||
GridLayout {
|
GridLayout {
|
||||||
columns: 2
|
columns: 2
|
||||||
columnSpacing: 90
|
columnSpacing: 70
|
||||||
rowSpacing: 20
|
rowSpacing: 20
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ RowLayout {
|
|||||||
property real contentRowSpacing: 20
|
property real contentRowSpacing: 20
|
||||||
property real contentColumnSpacing: 35
|
property real contentColumnSpacing: 35
|
||||||
|
|
||||||
|
signal needWait(bool active, string text)
|
||||||
|
|
||||||
spacing: contentColumnSpacing
|
spacing: contentColumnSpacing
|
||||||
|
|
||||||
Flickable {
|
Flickable {
|
||||||
@@ -163,12 +165,16 @@ RowLayout {
|
|||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Maximum charge current, A")
|
text: qsTr("Maximum charge current, A")
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Maximum load current, A")
|
text: qsTr("Maximum load current, A")
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
}
|
}
|
||||||
@@ -189,6 +195,8 @@ RowLayout {
|
|||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Maximum temperature, °C")
|
text: qsTr("Maximum temperature, °C")
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
Layout.columnSpan: 2
|
Layout.columnSpan: 2
|
||||||
@@ -224,12 +232,16 @@ RowLayout {
|
|||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Lower disable threshold, V")
|
text: qsTr("Lower disable threshold, V")
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Upper disable threshold, V")
|
text: qsTr("Upper disable threshold, V")
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
}
|
}
|
||||||
@@ -250,14 +262,16 @@ RowLayout {
|
|||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Lower enable threshold (should be higher than disable), V")
|
text: qsTr("Lower enable threshold (should be higher than disable), V")
|
||||||
maximumLineCount: 2
|
maximumLineCount: 3
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Upper enable threshold (should be higher than disable), V")
|
text: qsTr("Upper enable threshold (should be higher than disable), V")
|
||||||
maximumLineCount: 2
|
maximumLineCount: 3
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
}
|
}
|
||||||
@@ -328,6 +342,8 @@ RowLayout {
|
|||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Cell balancing interval, ms")
|
text: qsTr("Cell balancing interval, ms")
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
Layout.columnSpan: 2
|
Layout.columnSpan: 2
|
||||||
@@ -367,13 +383,13 @@ RowLayout {
|
|||||||
spacing: 20
|
spacing: 20
|
||||||
|
|
||||||
Controls.LabelWithBackground {
|
Controls.LabelWithBackground {
|
||||||
text: qsTr("№ 1")
|
text: qsTr("# 1")
|
||||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.CheckBox {
|
Controls.CheckBox {
|
||||||
text: qsTr("Use for management")
|
text: qsTr("Use for storage management")
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||||
}
|
}
|
||||||
@@ -391,7 +407,7 @@ RowLayout {
|
|||||||
spacing: 20
|
spacing: 20
|
||||||
|
|
||||||
Controls.LabelWithBackground {
|
Controls.LabelWithBackground {
|
||||||
text: qsTr("№ 2")
|
text: qsTr("# 2")
|
||||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||||
}
|
}
|
||||||
@@ -408,6 +424,8 @@ RowLayout {
|
|||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Change in value during SOC")
|
text: qsTr("Change in value during SOC")
|
||||||
|
maximumLineCount: 2
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
Layout.columnSpan: 2
|
Layout.columnSpan: 2
|
||||||
@@ -429,7 +447,7 @@ RowLayout {
|
|||||||
spacing: 20
|
spacing: 20
|
||||||
|
|
||||||
Controls.LabelWithBackground {
|
Controls.LabelWithBackground {
|
||||||
text: qsTr("№ 3")
|
text: qsTr("# 3")
|
||||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||||
}
|
}
|
||||||
@@ -476,7 +494,7 @@ RowLayout {
|
|||||||
spacing: 20
|
spacing: 20
|
||||||
|
|
||||||
Controls.LabelWithBackground {
|
Controls.LabelWithBackground {
|
||||||
text: qsTr("№ 4")
|
text: qsTr("# 4")
|
||||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||||
}
|
}
|
||||||
@@ -534,7 +552,7 @@ RowLayout {
|
|||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("Current sensor value «0»")
|
text: qsTr("Current sensor value \"0\"")
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.columnSpan: 2
|
Layout.columnSpan: 2
|
||||||
}
|
}
|
||||||
@@ -549,7 +567,7 @@ RowLayout {
|
|||||||
|
|
||||||
Controls.Button {
|
Controls.Button {
|
||||||
id: zeroSensorValueCalibrationButton
|
id: zeroSensorValueCalibrationButton
|
||||||
text: qsTr("Calibrate «0»")
|
text: qsTr("Calibrate \"0\"")
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||||
Layout.columnSpan: 2
|
Layout.columnSpan: 2
|
||||||
@@ -561,6 +579,7 @@ RowLayout {
|
|||||||
Controls.OutlineButton {
|
Controls.OutlineButton {
|
||||||
text: qsTr("Load settings from file")
|
text: qsTr("Load settings from file")
|
||||||
onClicked: loadFileDialog.open()
|
onClicked: loadFileDialog.open()
|
||||||
|
Layout.preferredWidth: 270
|
||||||
|
|
||||||
FileDialog {
|
FileDialog {
|
||||||
id: loadFileDialog
|
id: loadFileDialog
|
||||||
@@ -576,6 +595,7 @@ RowLayout {
|
|||||||
Controls.OutlineButton {
|
Controls.OutlineButton {
|
||||||
text: qsTr("Save settings to file")
|
text: qsTr("Save settings to file")
|
||||||
onClicked: saveFileDialog.open()
|
onClicked: saveFileDialog.open()
|
||||||
|
Layout.preferredWidth: 270
|
||||||
|
|
||||||
FileDialog {
|
FileDialog {
|
||||||
id: saveFileDialog
|
id: saveFileDialog
|
||||||
@@ -637,7 +657,7 @@ RowLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Controls.LinkLabel {
|
Controls.LinkLabel {
|
||||||
text: qsTr("Current sensor value «0»")
|
text: qsTr("Current sensor value \"0\"")
|
||||||
onClicked: settingsFlickable.contentY = zeroSensorSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
onClicked: settingsFlickable.contentY = zeroSensorSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,7 +669,7 @@ RowLayout {
|
|||||||
spacing: 15
|
spacing: 15
|
||||||
|
|
||||||
Controls.OutlineButton {
|
Controls.OutlineButton {
|
||||||
text: qsTr("Read settings from file")
|
text: qsTr("Read default settings")
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
onClicked: BmsInterface.commands().getBMSconfDefault()
|
onClicked: BmsInterface.commands().getBMSconfDefault()
|
||||||
}
|
}
|
||||||
@@ -661,15 +681,6 @@ RowLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Controls.OutlineButton {
|
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")
|
text: qsTr("Write current values to BMS")
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
onClicked: {
|
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.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
Layout.maximumWidth: 320
|
Layout.maximumWidth: 280
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Item {
|
|||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
Controls.SubtitleLabel {
|
Controls.SubtitleLabel {
|
||||||
text: qsTr("№")
|
text: qsTr("#")
|
||||||
color: Palette.tableHeaderTextColor
|
color: Palette.tableHeaderTextColor
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import Utils 1.0
|
|||||||
Dialog {
|
Dialog {
|
||||||
id: root
|
id: root
|
||||||
title: qsTr("Connection screen")
|
title: qsTr("Connection screen")
|
||||||
width: 400
|
width: 470
|
||||||
height: 320
|
height: 320
|
||||||
modal: true
|
modal: true
|
||||||
closePolicy: Popup.CloseOnEscape
|
closePolicy: Popup.CloseOnEscape
|
||||||
@@ -79,7 +79,7 @@ Dialog {
|
|||||||
Connections {
|
Connections {
|
||||||
target: BmsInterface
|
target: BmsInterface
|
||||||
onPortConnectedChanged: {
|
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()
|
serialBox.enabled = !BmsInterface.isPortConnected()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,27 +37,27 @@ ColumnLayout {
|
|||||||
|
|
||||||
Controls.TabButton {
|
Controls.TabButton {
|
||||||
text: qsTr("Current")
|
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
|
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 {
|
Controls.TabButton {
|
||||||
text: qsTr("Cell list")
|
text: qsTr("Cell list")
|
||||||
width: bar.width / 6 * 0.9
|
width: bar.width / 6 * 0.85
|
||||||
}
|
}
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -81,6 +81,8 @@ ColumnLayout {
|
|||||||
Controls.CheckBox {
|
Controls.CheckBox {
|
||||||
id: checkSeries
|
id: checkSeries
|
||||||
checked: true
|
checked: true
|
||||||
|
spacing: 10
|
||||||
|
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
if (checked) {
|
if (checked) {
|
||||||
chartItem.series(modelData).color = seriesColor
|
chartItem.series(modelData).color = seriesColor
|
||||||
@@ -103,7 +105,7 @@ ColumnLayout {
|
|||||||
chartItem = ListView.view ? ListView.view.chartItem : parent.chartItem
|
chartItem = ListView.view ? ListView.view.chartItem : parent.chartItem
|
||||||
horizontal = !ListView.view
|
horizontal = !ListView.view
|
||||||
seriesColor = chartItem.series(modelData).color
|
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 {
|
RowLayout {
|
||||||
visible: horizontalLegend
|
visible: horizontalLegend
|
||||||
spacing: 20
|
spacing: 0
|
||||||
|
|
||||||
property Controls.ChartView chartItem: chart
|
property Controls.ChartView chartItem: chart
|
||||||
|
|
||||||
@@ -170,7 +172,7 @@ ColumnLayout {
|
|||||||
|
|
||||||
property Controls.ChartView chartItem: chart
|
property Controls.ChartView chartItem: chart
|
||||||
|
|
||||||
Layout.preferredWidth: 180
|
Layout.preferredWidth: 200
|
||||||
Layout.fillHeight: true
|
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 {
|
Connections {
|
||||||
target: BmsInterface.commands()
|
target: BmsInterface.commands()
|
||||||
|
|
||||||
@@ -461,38 +472,53 @@ ColumnLayout {
|
|||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
voltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Voltage indicator"),
|
voltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Voltage indicator"),
|
||||||
voltageLoader.item.chart.xAxis, voltageLoader.item.chart.yAxis)
|
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.chart.axes[0].max = 10
|
||||||
voltageLoader.item.seriesCount = voltageLoader.item.chart.count
|
voltageLoader.item.seriesCount = voltageLoader.item.chart.count
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
currentLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Current indicator"),
|
currentLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Current indicator"),
|
||||||
currentLoader.item.chart.xAxis, currentLoader.item.chart.yAxis)
|
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.chart.axes[0].max = 10
|
||||||
currentLoader.item.seriesCount = currentLoader.item.chart.count
|
currentLoader.item.seriesCount = currentLoader.item.chart.count
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum temperature"),
|
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum temperature"),
|
||||||
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
||||||
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average temperature"),
|
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average temperature"),
|
||||||
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
||||||
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum temperature"),
|
batteryTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum temperature"),
|
||||||
batteryTemperatureLoader.item.chart.xAxis, batteryTemperatureLoader.item.chart.yAxis)
|
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.chart.axes[0].max = 10
|
||||||
batteryTemperatureLoader.item.seriesCount = batteryTemperatureLoader.item.chart.count
|
batteryTemperatureLoader.item.seriesCount = batteryTemperatureLoader.item.chart.count
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum temperature"),
|
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum temperature"),
|
||||||
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
||||||
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average temperature"),
|
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average temperature"),
|
||||||
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
||||||
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum temperature"),
|
bmsTemperatureLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum temperature"),
|
||||||
bmsTemperatureLoader.item.chart.xAxis, bmsTemperatureLoader.item.chart.yAxis)
|
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.chart.axes[0].max = 10
|
||||||
bmsTemperatureLoader.item.seriesCount = bmsTemperatureLoader.item.chart.count
|
bmsTemperatureLoader.item.seriesCount = bmsTemperatureLoader.item.chart.count
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum voltage"),
|
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Maximum voltage"),
|
||||||
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
||||||
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average voltage"),
|
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Average voltage"),
|
||||||
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
||||||
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum voltage"),
|
cellVoltageLoader.item.chart.createSeries(ChartView.SeriesTypeLine, qsTr("Minimum voltage"),
|
||||||
cellVoltageLoader.item.chart.xAxis, cellVoltageLoader.item.chart.yAxis)
|
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.chart.axes[0].max = 10
|
||||||
cellVoltageLoader.item.seriesCount = cellVoltageLoader.item.chart.count
|
cellVoltageLoader.item.seriesCount = cellVoltageLoader.item.chart.count
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ QtObject {
|
|||||||
property color alternativeBackgroundColor: "#009352"
|
property color alternativeBackgroundColor: "#009352"
|
||||||
property color screenBackgroundColor: "#F7F8FC"
|
property color screenBackgroundColor: "#F7F8FC"
|
||||||
property color tableHeaderBackgroundColor: "#F0F1F4"
|
property color tableHeaderBackgroundColor: "#F0F1F4"
|
||||||
|
property color selectedTextBackgroundColor: "#009150"
|
||||||
|
|
||||||
property color borderColor: "#DFE0EB"
|
property color borderColor: "#DFE0EB"
|
||||||
|
|
||||||
|
|||||||
@@ -14,5 +14,8 @@
|
|||||||
<file>Icons/close.svg</file>
|
<file>Icons/close.svg</file>
|
||||||
<file>Icons/info.svg</file>
|
<file>Icons/info.svg</file>
|
||||||
<file>Icons/warning.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>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
<file>Screens/AkbMonitorScreen.qml</file>
|
<file>Screens/AkbMonitorScreen.qml</file>
|
||||||
<file>Screens/CellMonitorScreen.qml</file>
|
<file>Screens/CellMonitorScreen.qml</file>
|
||||||
<file>Controls/ComboBox.qml</file>
|
<file>Controls/ComboBox.qml</file>
|
||||||
<file>Controls/PaneItem.qml</file>
|
|
||||||
<file>Controls/Label.qml</file>
|
|
||||||
<file>Utils/Palette.qml</file>
|
<file>Utils/Palette.qml</file>
|
||||||
<file>Controls/qmldir</file>
|
<file>Controls/qmldir</file>
|
||||||
<file>Screens/qmldir</file>
|
<file>Screens/qmldir</file>
|
||||||
@@ -38,5 +36,7 @@
|
|||||||
<file>Screens/MessageDialog.qml</file>
|
<file>Screens/MessageDialog.qml</file>
|
||||||
<file>Screens/StatusPopup.qml</file>
|
<file>Screens/StatusPopup.qml</file>
|
||||||
<file>Utils/MathHelper.qml</file>
|
<file>Utils/MathHelper.qml</file>
|
||||||
|
<file>Controls/BusyIndicator.qml</file>
|
||||||
|
<file>Controls/MenuItemDelegate.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</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