备份
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include <translation.h>
|
||||
#include <QDialog>
|
||||
#include <QTableWidget>
|
||||
#include <QPlainTextEdit>
|
||||
@@ -40,7 +40,7 @@ class JsonParamTableEditor : public QDialog {
|
||||
public:
|
||||
explicit JsonParamTableEditor(QWidget* parent = nullptr)
|
||||
: QDialog(parent) {
|
||||
this->setWindowTitle("JSON 表格编辑器");
|
||||
this->setWindowTitle(TR("JSON Table Editor"));
|
||||
this->resize(700, 450);
|
||||
setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint);// 去掉边框
|
||||
//setAttribute(Qt::WA_TranslucentBackground); // 背景透明
|
||||
@@ -76,7 +76,7 @@ public:
|
||||
m_tableView->setFocusPolicy(Qt::NoFocus);
|
||||
|
||||
//设置表头
|
||||
m_tableModel->setHorizontalHeaderLabels({ "选项", "值" });
|
||||
m_tableModel->setHorizontalHeaderLabels({ TR("Option"), TR("Value") });
|
||||
|
||||
//设置表格属性
|
||||
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
@@ -85,8 +85,8 @@ public:
|
||||
m_tableView->setColumnWidth(1, 200);// 选项列宽度
|
||||
|
||||
|
||||
fancyButtonText* okBtn = new fancyButtonText("保存", 70, 22, "");
|
||||
fancyButtonText* cancelBtn = new fancyButtonText("取消", 70, 22, "");
|
||||
fancyButtonText* okBtn = new fancyButtonText(TR("Save"), 70, 22, "");
|
||||
fancyButtonText* cancelBtn = new fancyButtonText(TR("Cancel"), 70, 22, "");
|
||||
|
||||
connect(okBtn, &QPushButton::clicked, this, &JsonParamTableEditor::onAccept);
|
||||
connect(cancelBtn, &QPushButton::clicked, this, &QDialog::reject);
|
||||
@@ -222,20 +222,20 @@ private slots:
|
||||
for (int row = 0; row < m_tableModel->rowCount(); ++row) {
|
||||
QStandardItem* keyItem = m_tableModel->item(row, 0);
|
||||
if (!keyItem) {
|
||||
QMessageBox::warning(this, "错误", QString("第 %1 行数据不完整").arg(row + 1));
|
||||
QMessageBox::warning(this, TR("Error"), QString(TR("Row %1 data is incomplete")).arg(row + 1));
|
||||
return;
|
||||
}
|
||||
|
||||
QString key = keyItem->text().trimmed();
|
||||
if (key.isEmpty()) {
|
||||
QMessageBox::warning(this, "错误", QString("第 %1 行 key 为空").arg(row + 1));
|
||||
QMessageBox::warning(this, TR("Error"), QString(TR("Row %1 key is empty")).arg(row + 1));
|
||||
return;
|
||||
}
|
||||
|
||||
//获取原始类型
|
||||
std::string keyStd = key.toStdString();
|
||||
if (m_originalTypes.find(keyStd) == m_originalTypes.end()) {
|
||||
QMessageBox::warning(this, "错误", QString("第 %1 行找不到原始类型信息").arg(row + 1));
|
||||
QMessageBox::warning(this, TR("Error"), QString(TR("Original type information not found for row %1")).arg(row + 1));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ private slots:
|
||||
nlohmann::json convertedValue;
|
||||
QString errorMsg;
|
||||
if (!getValueFromEditor(keyStd, expectedType, convertedValue, errorMsg)) {
|
||||
QMessageBox::critical(this, "类型验证失败",QString("第 %1 行值验证失败:\n%2").arg(row + 1).arg(errorMsg));
|
||||
QMessageBox::critical(this, TR("Type Validation Failed"), QString(TR("Row %1 value validation failed:\n%2")).arg(row + 1).arg(errorMsg));
|
||||
return;
|
||||
}
|
||||
result[keyStd] = convertedValue;
|
||||
@@ -318,7 +318,7 @@ private:
|
||||
updateModelData(key, value ? "true" : "false");
|
||||
return true;
|
||||
}
|
||||
errorMsg = "布尔值控件类型错误";
|
||||
errorMsg = TR("Boolean control type mismatch");
|
||||
return false;
|
||||
}
|
||||
case JsonValueType::Number: {
|
||||
@@ -336,7 +336,7 @@ private:
|
||||
}
|
||||
return true;
|
||||
}
|
||||
errorMsg = "数字控件类型错误";
|
||||
errorMsg = TR("Number control type mismatch");
|
||||
return false;
|
||||
}
|
||||
case JsonValueType::String: {
|
||||
@@ -347,7 +347,7 @@ private:
|
||||
updateModelData(key, value);
|
||||
return true;
|
||||
}
|
||||
errorMsg = "字符串控件类型错误";
|
||||
errorMsg = TR("String control type mismatch");
|
||||
return false;
|
||||
}
|
||||
default:
|
||||
@@ -361,7 +361,7 @@ private:
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
errorMsg = QString("获取值错误: %1").arg(e.what());
|
||||
errorMsg = QString(TR("Get value error: %1")).arg(e.what());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -447,19 +447,19 @@ private:
|
||||
QString generateTypeHint(JsonValueType type) {
|
||||
switch (type) {
|
||||
case JsonValueType::String:
|
||||
return "输入字符串值(不需要引号)";
|
||||
return TR("Enter a string value (no quotes required)");
|
||||
case JsonValueType::Number:
|
||||
return "输入数字值(整数或小数)";
|
||||
return TR("Enter a numeric value (integer or decimal)");
|
||||
case JsonValueType::Boolean:
|
||||
return "输入布尔值(true 或 false)";
|
||||
return TR("Enter a boolean value (true or false)");
|
||||
case JsonValueType::Array:
|
||||
return "输入JSON数组格式,如:[1,2,3] 或 [\"a\",\"b\"]";
|
||||
return TR("Enter a JSON array, e.g., [1,2,3] or [\"a\",\"b\"]");
|
||||
case JsonValueType::Object:
|
||||
return "输入JSON对象格式,如:{\"key\":\"value\"}";
|
||||
return TR("Enter a JSON object, e.g., {\"key\":\"value\"}");
|
||||
case JsonValueType::Null:
|
||||
return "空值(输入 null)";
|
||||
return TR("Null (enter null)");
|
||||
default:
|
||||
return "请输入有效的JSON值";
|
||||
return TR("Please enter a valid JSON value");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -470,7 +470,7 @@ private:
|
||||
|
||||
// 长度检查
|
||||
if (trimmedInput.size() > 10240) {
|
||||
errorMsg = "输入值过大(超过10240字符)";
|
||||
errorMsg = TR("Input value too large (exceeds 10240 characters)");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -494,7 +494,7 @@ private:
|
||||
result = doubleVal;
|
||||
return true;
|
||||
}
|
||||
errorMsg = "无效的数字格式";
|
||||
errorMsg = TR("Invalid numeric format");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -506,7 +506,7 @@ private:
|
||||
result = false;
|
||||
return true;
|
||||
}
|
||||
errorMsg = "布尔值只能是 true 或 false";
|
||||
errorMsg = TR("Boolean must be true or false");
|
||||
return false;
|
||||
|
||||
case JsonValueType::Null:
|
||||
@@ -514,7 +514,7 @@ private:
|
||||
result = nullptr;
|
||||
return true;
|
||||
}
|
||||
errorMsg = "空值只能是 null";
|
||||
errorMsg = TR("Null value must be null");
|
||||
return false;
|
||||
|
||||
case JsonValueType::Array:
|
||||
@@ -524,27 +524,27 @@ private:
|
||||
|
||||
// 验证类型是否匹配
|
||||
if (expectedType == JsonValueType::Array && !result.is_array()) {
|
||||
errorMsg = "期望数组格式,如:[1,2,3]";
|
||||
errorMsg = TR("Expected array format, e.g., [1,2,3]");
|
||||
return false;
|
||||
}
|
||||
if (expectedType == JsonValueType::Object && !result.is_object()) {
|
||||
errorMsg = "期望对象格式,如:{\"key\":\"value\"}";
|
||||
errorMsg = TR("Expected object format, e.g., {\"key\":\"value\"}");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
default:
|
||||
errorMsg = "未知的数据类型";
|
||||
errorMsg = TR("Unknown data type");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (const nlohmann::json::parse_error& e) {
|
||||
errorMsg = QString("JSON解析错误: %1").arg(e.what());
|
||||
errorMsg = QString(TR("JSON parse error: %1")).arg(e.what());
|
||||
return false;
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
errorMsg = QString("转换错误: %1").arg(e.what());
|
||||
errorMsg = QString(TR("Conversion error: %1")).arg(e.what());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -556,17 +556,17 @@ class JsonEditorGeneral : public QDialog {
|
||||
public:
|
||||
explicit JsonEditorGeneral(QWidget* parent = nullptr)
|
||||
: QDialog(parent) {
|
||||
setWindowTitle("通用 JSON 编辑");
|
||||
setWindowTitle(TR("General JSON Editor"));
|
||||
|
||||
m_textEdit = new QPlainTextEdit(this);
|
||||
QPushButton* okBtn = new QPushButton("确定", this);
|
||||
QPushButton* cancelBtn = new QPushButton("取消", this);
|
||||
QPushButton* okBtn = new QPushButton(TR("OK"), this);
|
||||
QPushButton* cancelBtn = new QPushButton(TR("Cancel"), this);
|
||||
|
||||
connect(okBtn, &QPushButton::clicked, this, &JsonEditorGeneral::onAccept);
|
||||
connect(cancelBtn, &QPushButton::clicked, this, &QDialog::reject);
|
||||
|
||||
QVBoxLayout* mainLayout = new QVBoxLayout(this);
|
||||
mainLayout->addWidget(new QLabel("请输入 JSON:"));
|
||||
mainLayout->addWidget(new QLabel(TR("Please enter JSON:")));
|
||||
mainLayout->addWidget(m_textEdit);
|
||||
|
||||
QHBoxLayout* btnLayout = new QHBoxLayout();
|
||||
@@ -589,12 +589,12 @@ private slots:
|
||||
QString text = m_textEdit->toPlainText().trimmed();
|
||||
|
||||
if (text.isEmpty()) {
|
||||
QMessageBox::warning(this, "警告", "JSON 内容不能为空");
|
||||
QMessageBox::warning(this, TR("Warning"), TR("JSON content cannot be empty"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (text.size() > 102400) {
|
||||
QMessageBox::warning(this, "警告", "JSON 内容过大,可能导致崩溃");
|
||||
QMessageBox::warning(this, TR("Warning"), TR("JSON content is too large and may cause a crash"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -604,7 +604,7 @@ private slots:
|
||||
accept();
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
QMessageBox::critical(this, "解析错误", QString("JSON 解析失败:\n%1").arg(e.what()));
|
||||
QMessageBox::critical(this, TR("Parse Error"), QString(TR("JSON parse failed:\n%1")).arg(e.what()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,6 @@ MainWindow::MainWindow(appConfig* configIn, fSignalHub*bridgeIn, nlohmann::order
|
||||
|
||||
|
||||
QObject::connect(_loadingWidget.manualBtn, &QPushButton::clicked, this, &MainWindow::switchToManulMode);
|
||||
_displayWidget->historyImgs->hide();
|
||||
|
||||
#if skipLogin == 1
|
||||
login(true);
|
||||
|
||||
@@ -417,9 +417,6 @@ public slots:
|
||||
_loadingWidget.initLog->append(strIn);
|
||||
}
|
||||
}
|
||||
void addDetHistoryData(bool isOK, historyPack _historyPack){
|
||||
_displayWidget->historyImgs->addData(isOK, _historyPack);
|
||||
}
|
||||
void addCtData(int index, int value){
|
||||
switch (index)
|
||||
{
|
||||
|
||||
@@ -183,7 +183,6 @@ public:
|
||||
ImageWidgetManager _ImageWidgetManager;
|
||||
summaryDataManager* _summaryDataManager;
|
||||
dsStatsWidget* _dsStatsWidget;
|
||||
historyShowListWidget* historyImgs = new historyShowListWidget();
|
||||
dayNightShiftHistogramWidget* _dayNightShiftHistogramWidget;
|
||||
userSwitch* _userSwitch;
|
||||
softwareDataDisplay* _softwareDataDisplay;
|
||||
@@ -223,16 +222,10 @@ public:
|
||||
//Layout->setColumnStretch(2, 1);
|
||||
leftItemInit(config);
|
||||
rightItemInit1();
|
||||
rightItemInit2();
|
||||
connectFunc();
|
||||
//historyImgs->addData(true, "D:/CCD/yuantu/2024-06-04/23H/TEST/1 (1).bmp", QPixmap("D:/CCD/yuantu/2024-06-04/23H/TEST/1 (1).bmp"));
|
||||
}
|
||||
|
||||
void rightItemInit1(){
|
||||
QVBoxLayout* hLayout = new QVBoxLayout(rightWidget1);
|
||||
hLayout->addWidget(historyImgs);
|
||||
}
|
||||
void rightItemInit2(){
|
||||
QVBoxLayout* hLayout = new QVBoxLayout(rightWidget2);
|
||||
|
||||
{
|
||||
@@ -290,34 +283,6 @@ public:
|
||||
QWidget* titleWidget = new QWidget(this);
|
||||
|
||||
QFont font3("微软雅黑", 10, QFont::Bold);
|
||||
#pragma region 打开配置文件按钮
|
||||
{
|
||||
/*QVBoxLayout* btnLayout = new QVBoxLayout();
|
||||
QPushButton* btn = new QPushButton(this);
|
||||
btn->setIcon(QIcon(":/TongYongUiIcon/TongYongUiIcon/9.paramSetting.png"));
|
||||
btn->setFixedSize(QSize(50, 50));
|
||||
btn->setIconSize(QSize(25, 25));
|
||||
btn->setStyleSheet(R"(
|
||||
QPushButton {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: black;
|
||||
border-radius: 5px;
|
||||
}
|
||||
)");
|
||||
QLabel* text = new QLabel(config->_translation->translate("SettingJson"));
|
||||
text->setFont(font3);
|
||||
text->setPalette(palette);
|
||||
btnLayout->addWidget(btn);
|
||||
btnLayout->addWidget(text);
|
||||
titleLayout->addLayout(btnLayout);
|
||||
connect(btn, &QPushButton::clicked, [=]() {
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromStdString(config->settingJsonPath)));
|
||||
});*/
|
||||
}
|
||||
#pragma endregion
|
||||
#pragma region 结果图查看按钮
|
||||
{
|
||||
_toolBarWidget->createToolButton(QIcon(":/TongYongUiIcon/TongYongUiIcon/23.1.imageView.png"),
|
||||
@@ -401,11 +366,6 @@ public:
|
||||
//leftWidget->setMaximumWidth(width / 1.2);
|
||||
//rightWidget->setMaximumWidth(width / 2);
|
||||
}
|
||||
void connectFunc(){
|
||||
QObject::connect(historyImgs, &historyShowListWidget::itemClickSignal,
|
||||
this, &displayWidget::historyClick);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public slots:
|
||||
|
||||
@@ -406,7 +406,7 @@ public:
|
||||
consoleMainLayout->addWidget(btn);
|
||||
}
|
||||
{
|
||||
fancyButtonText* btn = new fancyButtonText(u8"相机实时取流");
|
||||
fancyButtonText* btn = new fancyButtonText(u8"相机实时取流(只适配软触发相机)");
|
||||
QObject::connect(btn, &QPushButton::clicked, &_cameraRealTimeCapture, &QWidget::show);
|
||||
consoleMainLayout->addWidget(btn);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class paramTableEditor : public QDialog {
|
||||
public:
|
||||
explicit paramTableEditor(QWidget* parent = nullptr)
|
||||
: QDialog(parent) {
|
||||
this->setWindowTitle("JSON 表格编辑器");
|
||||
this->setWindowTitle(TR("JSON Table Editor"));
|
||||
this->resize(700, 450);
|
||||
setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint);// 去掉边框
|
||||
//setAttribute(Qt::WA_TranslucentBackground); // 背景透明
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
m_tableView->setFocusPolicy(Qt::NoFocus);
|
||||
|
||||
//设置表头
|
||||
m_tableModel->setHorizontalHeaderLabels({ "选项", "值" });
|
||||
m_tableModel->setHorizontalHeaderLabels({ TR("Option"), TR("Value") });
|
||||
|
||||
//设置表格属性
|
||||
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
@@ -76,8 +76,8 @@ public:
|
||||
m_tableView->setColumnWidth(1, 200);// 选项列宽度
|
||||
|
||||
|
||||
fancyButtonText* okBtn = new fancyButtonText("保存", 70, 22, "");
|
||||
fancyButtonText* cancelBtn = new fancyButtonText("取消", 70, 22, "");
|
||||
fancyButtonText* okBtn = new fancyButtonText(TR("Save"), 70, 22, "");
|
||||
fancyButtonText* cancelBtn = new fancyButtonText(TR("Cancel"), 70, 22, "");
|
||||
|
||||
connect(okBtn, &QPushButton::clicked, this, ¶mTableEditor::onAccept);
|
||||
connect(cancelBtn, &QPushButton::clicked, this, &QDialog::reject);
|
||||
@@ -196,19 +196,19 @@ private slots:
|
||||
for (int row = 0; row < m_tableModel->rowCount(); ++row) {
|
||||
QStandardItem* keyItem = m_tableModel->item(row, 0);
|
||||
if (!keyItem) {
|
||||
QMessageBox::warning(this, "错误", QString("第 %1 行数据不完整").arg(row + 1));
|
||||
QMessageBox::warning(this, TR("Error"), QString(TR("Row %1 data is incomplete")).arg(row + 1));
|
||||
return;
|
||||
}
|
||||
|
||||
QString key = keyItem->text().trimmed();
|
||||
if (key.isEmpty()) {
|
||||
QMessageBox::warning(this, "错误", QString("第 %1 行 key 为空").arg(row + 1));
|
||||
QMessageBox::warning(this, TR("Error"), QString(TR("Row %1 key is empty")).arg(row + 1));
|
||||
return;
|
||||
}
|
||||
|
||||
//获取原始类型
|
||||
if (m_originalTypes.find(key) == m_originalTypes.end()) {
|
||||
QMessageBox::warning(this, "错误", QString("第 %1 行找不到原始类型信息").arg(row + 1));
|
||||
QMessageBox::warning(this, TR("Error"), QString(TR("Original type information not found for row %1")).arg(row + 1));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -218,7 +218,7 @@ private slots:
|
||||
QVariant convertedValue;
|
||||
QString errorMsg;
|
||||
if (!getValueFromEditor(key, expectedType, convertedValue, errorMsg)) {
|
||||
QMessageBox::critical(this, "类型验证失败",QString("第 %1 行值验证失败:\n%2").arg(row + 1).arg(errorMsg));
|
||||
QMessageBox::critical(this, TR("Type Validation Failed"),QString(TR("Row %1 value validation failed:\n%2")).arg(row + 1).arg(errorMsg));
|
||||
return;
|
||||
}
|
||||
//esult[keyStd] = convertedValue;
|
||||
@@ -291,7 +291,7 @@ private:
|
||||
updateModelData(key, value ? "true" : "false");
|
||||
return true;
|
||||
}
|
||||
errorMsg = "布尔值控件类型错误";
|
||||
errorMsg = TR("Boolean control type mismatch");
|
||||
return false;
|
||||
}
|
||||
case QVariant::Type::Int: {
|
||||
@@ -302,7 +302,7 @@ private:
|
||||
updateModelData(key, QString::number(value));
|
||||
return true;
|
||||
}
|
||||
errorMsg = "数字控件INT类型错误";
|
||||
errorMsg = TR("Integer number control type mismatch");
|
||||
return false;
|
||||
}
|
||||
case QVariant::Type::Double: {
|
||||
@@ -313,7 +313,7 @@ private:
|
||||
updateModelData(key, QString::number(value));
|
||||
return true;
|
||||
}
|
||||
errorMsg = "数字控件INT类型错误";
|
||||
errorMsg = TR("Number control type mismatch");
|
||||
return false;
|
||||
}
|
||||
case QVariant::Type::String: {
|
||||
@@ -324,7 +324,7 @@ private:
|
||||
updateModelData(key, value);
|
||||
return true;
|
||||
}
|
||||
errorMsg = "字符串控件类型错误";
|
||||
errorMsg = TR("String control type mismatch");
|
||||
return false;
|
||||
}
|
||||
//default:
|
||||
@@ -338,7 +338,7 @@ private:
|
||||
//}
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
errorMsg = QString("获取值错误: %1").arg(e.what());
|
||||
errorMsg = QString(TR("Get value error: %1")).arg(e.what());
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
@@ -379,15 +379,15 @@ private:
|
||||
QString generateTypeHint(QVariant::Type type) {
|
||||
switch (type) {
|
||||
case QVariant::Type::String:
|
||||
return "输入字符串值(不需要引号)";
|
||||
return TR("Enter a string value (no quotes required)");
|
||||
case QVariant::Type::Int:
|
||||
return "输入数字值(整数)";
|
||||
return TR("Enter an integer value");
|
||||
case QVariant::Type::Double:
|
||||
return "输入数字值(小数)";
|
||||
return TR("Enter a decimal value");
|
||||
case QVariant::Type::Bool:
|
||||
return "输入布尔值(true 或 false)";
|
||||
return TR("Enter a boolean value (true or false)");
|
||||
default:
|
||||
return "请输入有效的JSON值";
|
||||
return TR("Please enter a valid JSON value");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
#include <qlayout.h>
|
||||
#include <qwidget.h>
|
||||
#include <qlabel.h>
|
||||
class OnceDataDisplay :public QWidget
|
||||
{
|
||||
public:
|
||||
QVBoxLayout* layout;
|
||||
QLabel* title;
|
||||
QLabel* widthValueLabel;
|
||||
QLabel* heightValueLabel;
|
||||
QWidget* dataPanel;
|
||||
OnceDataDisplay()
|
||||
{
|
||||
this->setObjectName("OnceDataDisplay");
|
||||
this->setStyleSheet("QWidget#OnceDataDisplay {"
|
||||
" border: 2px solid white;"
|
||||
" border-radius: 10px;"
|
||||
"}");
|
||||
layout = new QVBoxLayout();
|
||||
layout->setAlignment(Qt::AlignTop);
|
||||
this->setLayout(layout);
|
||||
|
||||
title = new QLabel(u8"本次运行数据");
|
||||
QFont font("微软雅黑", 16, QFont::Bold);
|
||||
QPalette palette;
|
||||
palette.setColor(QPalette::WindowText, Qt::white);
|
||||
|
||||
title->setFont(font);
|
||||
title->setPalette(palette);
|
||||
title->setAlignment(Qt::AlignCenter);
|
||||
title->setObjectName("titleLabel");
|
||||
title->setStyleSheet("QLabel#titleLabel {"
|
||||
" border: 4px solid white;"
|
||||
" border-radius: 12px;"
|
||||
"}");
|
||||
|
||||
dataPanel = new QWidget;
|
||||
dataPanel->setObjectName("dataPanel");
|
||||
dataPanel->setStyleSheet("QWidget#dataPanel {"
|
||||
" border: 2px solid white;"
|
||||
" border-radius: 3px;"
|
||||
"}");
|
||||
QVBoxLayout* dataPanelVboxLayout = new QVBoxLayout();
|
||||
dataPanel->setLayout(dataPanelVboxLayout);
|
||||
QFont font2("微软雅黑", 8, QFont::Bold);
|
||||
|
||||
QHBoxLayout* widthVLayout = new QHBoxLayout();
|
||||
QLabel* widthTextLabel = new QLabel(u8"长度");
|
||||
widthValueLabel = new QLabel(u8"待读取");
|
||||
widthVLayout->addWidget(widthTextLabel);
|
||||
widthVLayout->addWidget(widthValueLabel);
|
||||
widthTextLabel->setPalette(palette);
|
||||
widthValueLabel->setPalette(palette);
|
||||
|
||||
QHBoxLayout* heightVLayout = new QHBoxLayout();
|
||||
QLabel* heightTextLabel = new QLabel(u8"宽度:");
|
||||
heightValueLabel = new QLabel(u8"待读取");
|
||||
heightVLayout->addWidget(heightTextLabel);
|
||||
heightVLayout->addWidget(heightValueLabel);
|
||||
heightTextLabel->setPalette(palette);
|
||||
heightValueLabel->setPalette(palette);
|
||||
|
||||
dataPanelVboxLayout->addLayout(widthVLayout);
|
||||
dataPanelVboxLayout->addLayout(heightVLayout);
|
||||
|
||||
layout->addWidget(title);
|
||||
layout->addWidget(dataPanel);
|
||||
}
|
||||
};
|
||||
|
||||
#pragma once
|
||||
@@ -125,7 +125,7 @@ class historyShowListWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QLabel* title = new QLabel(u8"历史记录");
|
||||
QLabel* title = new QLabel(TR("History"));
|
||||
QListWidget* showDataListWidget = new QListWidget();
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
historyShowListSubThread _historyShowListSubThread;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#include <translation.h>
|
||||
#include <QApplication>
|
||||
#include <QWidget>
|
||||
#include <QVBoxLayout>
|
||||
@@ -412,12 +413,12 @@ public:
|
||||
)"
|
||||
);
|
||||
zoombtn->setIcon(QPixmap(":icon/icon/fullscreen.png"));
|
||||
zoombtn->setToolTip("放大窗口");
|
||||
zoombtn->setToolTip(TR("Zoom In"));
|
||||
hLayout->addWidget(zoombtn);
|
||||
connect(zoombtn, &QPushButton::clicked, this, &ImageWidget::toggleZoom);
|
||||
|
||||
|
||||
label = new QLabel(u8"相机标签");
|
||||
label = new QLabel(TR("Camera Label"));
|
||||
label->setAlignment(Qt::AlignLeft);
|
||||
label->setFont(font);
|
||||
label->setPalette(palette);
|
||||
@@ -608,7 +609,7 @@ public slots:
|
||||
// 更新按钮状态
|
||||
isZoomed = true;
|
||||
zoombtn->setIcon(QIcon(":/icon/icon/fullscreen-exit.png"));
|
||||
zoombtn->setToolTip("缩小窗口");
|
||||
zoombtn->setToolTip(TR("Zoom Out"));
|
||||
|
||||
// 强制更新布局
|
||||
parentGridLayout->update();
|
||||
@@ -629,7 +630,7 @@ public slots:
|
||||
//更新按钮状态
|
||||
isZoomed = false;
|
||||
zoombtn->setIcon(QIcon(":/icon/icon/fullscreen.png"));
|
||||
zoombtn->setToolTip("放大窗口");
|
||||
zoombtn->setToolTip(TR("Zoom In"));
|
||||
|
||||
//强制更新布局
|
||||
parentGridLayout->update();
|
||||
|
||||
@@ -20,10 +20,10 @@ public:
|
||||
QPalette palette;
|
||||
palette.setColor(QPalette::WindowText, Qt::white);
|
||||
|
||||
returnBtn = new fancyButton(40,40, QIcon(":/icon/icon/rollback.png"),"返回上一级");
|
||||
returnBtn = new fancyButton(40,40, QIcon(":/icon/icon/rollback.png"),TR("Go Back"));
|
||||
layout->addWidget(returnBtn);
|
||||
|
||||
homeBtn = new fancyButton(40, 40, QIcon(":/icon/icon/home2.png"), "返回目录");
|
||||
|
||||
homeBtn = new fancyButton(40, 40, QIcon(":/icon/icon/home2.png"), TR("Back to Menu"));
|
||||
layout->addWidget(homeBtn);
|
||||
|
||||
dirLabel->setText(title);
|
||||
|
||||
@@ -61,7 +61,7 @@ class runCommandWidget : public QDialog {
|
||||
public:
|
||||
explicit runCommandWidget(QWidget* parent = nullptr)
|
||||
: QDialog(parent) {
|
||||
this->setWindowTitle("执行命令");
|
||||
this->setWindowTitle(TR("Execute Command"));
|
||||
this->setObjectName("runCommandWidget");
|
||||
this->setStyleSheet(QString("QDialog#runCommandWidget {background-color: rgb(%1);border: 2px solid #000000;border-radius: 6px;}").arg(sColor_Blue));
|
||||
|
||||
@@ -99,10 +99,10 @@ public slots:
|
||||
connect(funcBtn, &fancyButtonText::clicked, this, [this, uuid]() {
|
||||
QMessageBox::StandardButton reply;
|
||||
reply = QMessageBox::question(
|
||||
this, // 父窗口
|
||||
"提示", // 标题
|
||||
"确定要执行此操作吗?", // 内容
|
||||
QMessageBox::Yes | QMessageBox::No // 按钮
|
||||
this, // parent
|
||||
TR("Confirm"), // title
|
||||
TR("Are you sure you want to execute this action?"), // content
|
||||
QMessageBox::Yes | QMessageBox::No // buttons
|
||||
);
|
||||
if (reply == QMessageBox::Yes) {
|
||||
emit excuteCommandPreset(uuid);
|
||||
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
runStateIconLabel->setPixmap(scaledPixmap);
|
||||
runStateIconLabel->setFixedSize(25, 25);
|
||||
|
||||
runStateText = new QLabel("正在检测...");
|
||||
runStateText = new QLabel(TR("Detecting..."));
|
||||
runStateText->setFont(font);
|
||||
runStateText->setPalette(palette);
|
||||
|
||||
@@ -105,15 +105,15 @@ private slots:
|
||||
runStateText->setStyleSheet(QString("QLabel { %1 }").arg(colorStyle));
|
||||
|
||||
// 设置工具提示显示详细信息
|
||||
QString tooltip = QString("系统状态: %1\n");
|
||||
QString tooltip = QString(TR("System status: %1\n"));
|
||||
|
||||
|
||||
runStateText->setToolTip(tooltip);
|
||||
}
|
||||
void onMonitorError(const QString& error) {
|
||||
runStateText->setText("监控异常");
|
||||
runStateText->setStyleSheet("QLabel { color: #999; }");
|
||||
runStateText->setToolTip(QString("监控错误: %1").arg(error));
|
||||
runStateText->setText(TR("Monitoring Error"));
|
||||
runStateText->setStyleSheet("QLabel { color: #999; }");
|
||||
runStateText->setToolTip(QString(TR("Monitor error: %1")).arg(error));
|
||||
}
|
||||
public slots:
|
||||
void onTriggerSateChanged(int loopCounterPerMin, int maxInterval) {
|
||||
|
||||
@@ -33,7 +33,7 @@ public:
|
||||
vlayout1->setContentsMargins(0, 0, 0, 0);
|
||||
{
|
||||
QHBoxLayout* tempLayout = new QHBoxLayout();
|
||||
QLabel* tempLabel = new QLabel(dataName + u8"OK数量:");
|
||||
QLabel* tempLabel = new QLabel(dataName + TR(" OK Count:"));
|
||||
tempLabel->setFont(font);
|
||||
tempLabel->setPalette(palette);
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
}
|
||||
{
|
||||
QHBoxLayout* tempLayout = new QHBoxLayout();
|
||||
QLabel* tempLabel = new QLabel(dataName + u8"NG数量:");
|
||||
QLabel* tempLabel = new QLabel(dataName + TR(" NG Count:"));
|
||||
tempLabel->setFont(font);
|
||||
tempLabel->setPalette(palette);
|
||||
|
||||
@@ -59,7 +59,7 @@ public:
|
||||
}
|
||||
{
|
||||
QHBoxLayout* tempLayout = new QHBoxLayout();
|
||||
QLabel* tempLabel = new QLabel(dataName + u8"总数量:");
|
||||
QLabel* tempLabel = new QLabel(dataName + TR(" Total Count:"));
|
||||
tempLabel->setFont(font);
|
||||
tempLabel->setPalette(palette);
|
||||
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
palette.setColor(QPalette::WindowText, Qt::white);
|
||||
QFont font("微软雅黑", 14, QFont::Bold);
|
||||
QFont font2("微软雅黑", 20, QFont::Bold);
|
||||
widget = new fancyWidget(u8" 运行数据");
|
||||
widget = new fancyWidget(TR(" Run Data"));
|
||||
|
||||
/* fancyButtonText* resetBtn = new fancyButtonText(80,40,u8"重置", u8"重置跑料数据");
|
||||
QObject::connect(resetBtn, &QPushButton::clicked, this, &summaryDataManager::resetAllValue);
|
||||
|
||||
@@ -0,0 +1,599 @@
|
||||
{
|
||||
"current_language": "zh-CN",
|
||||
"section": [
|
||||
"us-EN",
|
||||
"zh-CN",
|
||||
"ms-MY"
|
||||
],
|
||||
"translate": {
|
||||
"AI Detection System": {
|
||||
"ms-MY": "Sistem Pengesanan AI",
|
||||
"us-EN": "AI Detection System",
|
||||
"zh-CN": "AI检测系统"
|
||||
},
|
||||
"All password fields cannot be empty": {
|
||||
"ms-MY": "Semua medan kata laluan tidak boleh kosong",
|
||||
"us-EN": "All password fields cannot be empty",
|
||||
"zh-CN": "所有密码字段都不能为空"
|
||||
},
|
||||
"Auto Logout": {
|
||||
"ms-MY": "Auto Log Keluar",
|
||||
"us-EN": "Auto Logout",
|
||||
"zh-CN": "自动注销"
|
||||
},
|
||||
"Change Password": {
|
||||
"ms-MY": "Tukar Kata Laluan",
|
||||
"us-EN": "Change Password",
|
||||
"zh-CN": "修改密码"
|
||||
},
|
||||
"Close": {
|
||||
"ms-MY": "Tutup",
|
||||
"us-EN": "Close",
|
||||
"zh-CN": "关闭"
|
||||
},
|
||||
"Confirm Password:": {
|
||||
"ms-MY": "Sahkan Kata Laluan:",
|
||||
"us-EN": "Confirm Password:",
|
||||
"zh-CN": "确认密码:"
|
||||
},
|
||||
"Console Settings": {
|
||||
"ms-MY": "Tetapan Konsol",
|
||||
"us-EN": "Console Settings",
|
||||
"zh-CN": "控制台设置"
|
||||
},
|
||||
"Create User": {
|
||||
"ms-MY": "Cipta Pengguna",
|
||||
"us-EN": "Create User",
|
||||
"zh-CN": "创建用户"
|
||||
},
|
||||
"Current Password:": {
|
||||
"ms-MY": "Kata Laluan Semasa:",
|
||||
"us-EN": "Current Password:",
|
||||
"zh-CN": "当前密码:"
|
||||
},
|
||||
"Current User Information": {
|
||||
"ms-MY": "Maklumat Pengguna Semasa",
|
||||
"us-EN": "Current User Information",
|
||||
"zh-CN": "当前用户信息"
|
||||
},
|
||||
"Current User: ": {
|
||||
"ms-MY": "Pengguna Semasa: ",
|
||||
"us-EN": "Current User: ",
|
||||
"zh-CN": "当前用户: "
|
||||
},
|
||||
"Current User: Not logged in": {
|
||||
"ms-MY": "Pengguna Semasa: Tidak log masuk",
|
||||
"us-EN": "Current User: Not logged in",
|
||||
"zh-CN": "当前用户: 未登录"
|
||||
},
|
||||
"Current user logged out": {
|
||||
"ms-MY": "Pengguna semasa telah log keluar",
|
||||
"us-EN": "Current user logged out",
|
||||
"zh-CN": "已注销当前用户"
|
||||
},
|
||||
"Debug": {
|
||||
"ms-MY": "Penyelesaian Masalah",
|
||||
"us-EN": "Debug",
|
||||
"zh-CN": "故障排查"
|
||||
},
|
||||
"Do you want to exit the application?": {
|
||||
"ms-MY": "Adakah anda mahu keluar daripada aplikasi?",
|
||||
"us-EN": "Do you want to exit the application?",
|
||||
"zh-CN": "是否退出程序?"
|
||||
},
|
||||
"Error": {
|
||||
"ms-MY": "Ralat",
|
||||
"us-EN": "Error",
|
||||
"zh-CN": "错误"
|
||||
},
|
||||
"Exit Confirmation": {
|
||||
"ms-MY": "Pengesahan Keluar",
|
||||
"us-EN": "Exit Confirmation",
|
||||
"zh-CN": "退出确认"
|
||||
},
|
||||
"Guest": {
|
||||
"ms-MY": "Tetamu",
|
||||
"us-EN": "Guest",
|
||||
"zh-CN": "访客"
|
||||
},
|
||||
"Hardware Information": {
|
||||
"ms-MY": "Maklumat Perkakasan",
|
||||
"us-EN": "Hardware Information",
|
||||
"zh-CN": "硬件信息"
|
||||
},
|
||||
"Insufficient permissions": {
|
||||
"ms-MY": "Kebenaran tidak mencukupi",
|
||||
"us-EN": "Insufficient permissions",
|
||||
"zh-CN": "权限不足"
|
||||
},
|
||||
"Language Settings": {
|
||||
"ms-MY": "Tetapan Bahasa",
|
||||
"us-EN": "Language Settings",
|
||||
"zh-CN": "语言设置"
|
||||
},
|
||||
"Log": {
|
||||
"ms-MY": "Analisis Log",
|
||||
"us-EN": "Log",
|
||||
"zh-CN": "日志分析"
|
||||
},
|
||||
"Login": {
|
||||
"ms-MY": "Log Masuk",
|
||||
"us-EN": "Login",
|
||||
"zh-CN": "登录"
|
||||
},
|
||||
"Login failed, please check username and password": {
|
||||
"ms-MY": "Log masuk gagal, sila periksa nama pengguna dan kata laluan",
|
||||
"us-EN": "Login failed, please check username and password",
|
||||
"zh-CN": "登录失败,请检查用户名和密码"
|
||||
},
|
||||
"Login successful! System will auto logout in 3 minutes": {
|
||||
"ms-MY": "Log masuk berjaya! Sistem akan auto log keluar dalam 3 minit",
|
||||
"us-EN": "Login successful! System will auto logout in 3 minutes",
|
||||
"zh-CN": "登录成功!系统将在3分钟后自动注销"
|
||||
},
|
||||
"Login/Logout": {
|
||||
"ms-MY": "Log Masuk/Log Keluar",
|
||||
"us-EN": "Login/Logout",
|
||||
"zh-CN": "登录/注销"
|
||||
},
|
||||
"Logout": {
|
||||
"ms-MY": "Log Keluar",
|
||||
"us-EN": "Logout",
|
||||
"zh-CN": "注销"
|
||||
},
|
||||
"New Password:": {
|
||||
"ms-MY": "Kata Laluan Baru:",
|
||||
"us-EN": "New Password:",
|
||||
"zh-CN": "新密码:"
|
||||
},
|
||||
"New password and confirm password do not match": {
|
||||
"ms-MY": "Kata laluan baru dan pengesahan kata laluan tidak sepadan",
|
||||
"us-EN": "New password and confirm password do not match",
|
||||
"zh-CN": "新密码和确认密码不匹配"
|
||||
},
|
||||
"New password must be at least 4 characters": {
|
||||
"ms-MY": "Kata laluan baru mestilah sekurang-kurangnya 4 aksara",
|
||||
"us-EN": "New password must be at least 4 characters",
|
||||
"zh-CN": "新密码长度至少为4位"
|
||||
},
|
||||
"Param": {
|
||||
"ms-MY": "Tetapan Parameter",
|
||||
"us-EN": "Param",
|
||||
"zh-CN": "参数设置"
|
||||
},
|
||||
"Password change failed, please check current password": {
|
||||
"ms-MY": "Penukaran kata laluan gagal, sila periksa kata laluan semasa",
|
||||
"us-EN": "Password change failed, please check current password",
|
||||
"zh-CN": "密码修改失败,请检查当前密码"
|
||||
},
|
||||
"Password changed successfully!": {
|
||||
"ms-MY": "Kata laluan berjaya ditukar!",
|
||||
"us-EN": "Password changed successfully!",
|
||||
"zh-CN": "密码修改成功!"
|
||||
},
|
||||
"Password must be at least 4 characters": {
|
||||
"ms-MY": "Kata laluan mestilah sekurang-kurangnya 4 aksara",
|
||||
"us-EN": "Password must be at least 4 characters",
|
||||
"zh-CN": "密码长度至少为4位"
|
||||
},
|
||||
"Password:": {
|
||||
"ms-MY": "Kata Laluan:",
|
||||
"us-EN": "Password:",
|
||||
"zh-CN": "密码:"
|
||||
},
|
||||
"Permission Level:": {
|
||||
"ms-MY": "Tahap Kebenaran:",
|
||||
"us-EN": "Permission Level:",
|
||||
"zh-CN": "权限等级:"
|
||||
},
|
||||
"Permission Level: ": {
|
||||
"ms-MY": "Tahap Kebenaran: ",
|
||||
"us-EN": "Permission Level: ",
|
||||
"zh-CN": "权限等级: "
|
||||
},
|
||||
"Permission Level: Guest": {
|
||||
"ms-MY": "Tahap Kebenaran: Tetamu",
|
||||
"us-EN": "Permission Level: Guest",
|
||||
"zh-CN": "权限等级: 访客"
|
||||
},
|
||||
"Please create user first": {
|
||||
"ms-MY": "Sila cipta pengguna dahulu",
|
||||
"us-EN": "Please create user first",
|
||||
"zh-CN": "请先创建用户"
|
||||
},
|
||||
"Remaining: ": {
|
||||
"ms-MY": "Baki: ",
|
||||
"us-EN": "Remaining: ",
|
||||
"zh-CN": "剩余: "
|
||||
},
|
||||
"Setting": {
|
||||
"ms-MY": "Tetapan",
|
||||
"us-EN": "Setting",
|
||||
"zh-CN": "设置"
|
||||
},
|
||||
"Success": {
|
||||
"ms-MY": "Berjaya",
|
||||
"us-EN": "Success",
|
||||
"zh-CN": "成功"
|
||||
},
|
||||
"TOOLS": {
|
||||
"ms-MY": "Alat",
|
||||
"us-EN": "TOOLS",
|
||||
"zh-CN": "工<br>具"
|
||||
},
|
||||
"Timed out": {
|
||||
"ms-MY": "Masa tamat",
|
||||
"us-EN": "Timed out",
|
||||
"zh-CN": "已超时"
|
||||
},
|
||||
"User Management": {
|
||||
"ms-MY": "Pengurusan Pengguna",
|
||||
"us-EN": "User Management",
|
||||
"zh-CN": "用户管理"
|
||||
},
|
||||
"User created successfully!": {
|
||||
"ms-MY": "Pengguna berjaya dicipta!",
|
||||
"us-EN": "User created successfully!",
|
||||
"zh-CN": "用户创建成功!"
|
||||
},
|
||||
"User creation failed, username may already exist": {
|
||||
"ms-MY": "Penciptaan pengguna gagal, nama pengguna mungkin sudah wujud",
|
||||
"us-EN": "User creation failed, username may already exist",
|
||||
"zh-CN": "用户创建失败,用户名可能已存在"
|
||||
},
|
||||
"Username and password cannot be empty": {
|
||||
"ms-MY": "Nama pengguna dan kata laluan tidak boleh kosong",
|
||||
"us-EN": "Username and password cannot be empty",
|
||||
"zh-CN": "用户名和密码不能为空"
|
||||
},
|
||||
"Username:": {
|
||||
"ms-MY": "Nama Pengguna:",
|
||||
"us-EN": "Username:",
|
||||
"zh-CN": "用户名:"
|
||||
},
|
||||
"ViewImage": {
|
||||
"ms-MY": "Lihat Imej",
|
||||
"us-EN": "View Image",
|
||||
"zh-CN": "查看图片"
|
||||
},
|
||||
"Window Settings": {
|
||||
"ms-MY": "Tetapan Tetingkap",
|
||||
"us-EN": "Window Settings",
|
||||
"zh-CN": "窗口设置"
|
||||
},
|
||||
"You need administrator permissions to create users": {
|
||||
"ms-MY": "Anda memerlukan kebenaran pentadbir untuk mencipta pengguna",
|
||||
"us-EN": "You need administrator permissions to create users",
|
||||
"zh-CN": "您需要管理员权限才能创建用户"
|
||||
},
|
||||
"hideConsole": {
|
||||
"ms-MY": "Sembunyikan Konsol",
|
||||
"us-EN": "Hide Console",
|
||||
"zh-CN": "隐藏控制台"
|
||||
},
|
||||
"refresh": {
|
||||
"ms-MY": "Segarkan",
|
||||
"us-EN": "Refresh",
|
||||
"zh-CN": "刷新"
|
||||
},
|
||||
"showConsole": {
|
||||
"ms-MY": "Tunjukkan Konsol",
|
||||
"us-EN": "Show Console",
|
||||
"zh-CN": "显示控制台"
|
||||
},
|
||||
"will change after restart": {
|
||||
"ms-MY": "Akan berubah selepas restart",
|
||||
"zh-CN": "重启后将会更改"
|
||||
},
|
||||
"History": {
|
||||
"ms-MY": "History",
|
||||
"us-EN": "History",
|
||||
"zh-CN": "历史记录"
|
||||
},
|
||||
"Camera Label": {
|
||||
"ms-MY": "Camera Label",
|
||||
"us-EN": "Camera Label",
|
||||
"zh-CN": "相机标签"
|
||||
},
|
||||
"Zoom In": {
|
||||
"ms-MY": "Zoom In",
|
||||
"us-EN": "Zoom In",
|
||||
"zh-CN": "放大窗口"
|
||||
},
|
||||
"Zoom Out": {
|
||||
"ms-MY": "Zoom Out",
|
||||
"us-EN": "Zoom Out",
|
||||
"zh-CN": "缩小窗口"
|
||||
},
|
||||
"Go Back": {
|
||||
"ms-MY": "Go Back",
|
||||
"us-EN": "Go Back",
|
||||
"zh-CN": "返回上一级"
|
||||
},
|
||||
"Back to Menu": {
|
||||
"ms-MY": "Back to Menu",
|
||||
"us-EN": "Back to Menu",
|
||||
"zh-CN": "返回目录"
|
||||
},
|
||||
"Current Run Data": {
|
||||
"ms-MY": "Current Run Data",
|
||||
"us-EN": "Current Run Data",
|
||||
"zh-CN": "本次运行数据"
|
||||
},
|
||||
"Length": {
|
||||
"ms-MY": "Length",
|
||||
"us-EN": "Length",
|
||||
"zh-CN": "长度"
|
||||
},
|
||||
"Pending": {
|
||||
"ms-MY": "Pending",
|
||||
"us-EN": "Pending",
|
||||
"zh-CN": "待读取"
|
||||
},
|
||||
"Width:": {
|
||||
"ms-MY": "Width:",
|
||||
"us-EN": "Width:",
|
||||
"zh-CN": "宽度:"
|
||||
},
|
||||
"Detecting...": {
|
||||
"ms-MY": "Detecting...",
|
||||
"us-EN": "Detecting...",
|
||||
"zh-CN": "正在检测..."
|
||||
},
|
||||
"System status: %1\n": {
|
||||
"ms-MY": "System status: %1\\n",
|
||||
"us-EN": "System status: %1\\n",
|
||||
"zh-CN": "系统状态: %1\\n"
|
||||
},
|
||||
"Monitoring Error": {
|
||||
"ms-MY": "Monitoring Error",
|
||||
"us-EN": "Monitoring Error",
|
||||
"zh-CN": "监控异常"
|
||||
},
|
||||
"Monitor error: %1": {
|
||||
"ms-MY": "Monitor error: %1",
|
||||
"us-EN": "Monitor error: %1",
|
||||
"zh-CN": "监控错误: %1"
|
||||
},
|
||||
"Execute Command": {
|
||||
"ms-MY": "Execute Command",
|
||||
"us-EN": "Execute Command",
|
||||
"zh-CN": "执行命令"
|
||||
},
|
||||
"Confirm": {
|
||||
"ms-MY": "Confirm",
|
||||
"us-EN": "Confirm",
|
||||
"zh-CN": "提示"
|
||||
},
|
||||
"Are you sure you want to execute this action?": {
|
||||
"ms-MY": "Are you sure you want to execute this action?",
|
||||
"us-EN": "Are you sure you want to execute this action?",
|
||||
"zh-CN": "确定要执行此操作吗?"
|
||||
},
|
||||
"Run Data": {
|
||||
"ms-MY": "Run Data",
|
||||
"us-EN": "Run Data",
|
||||
"zh-CN": "运行数据"
|
||||
},
|
||||
"OK Count": {
|
||||
"ms-MY": "OK Count",
|
||||
"us-EN": "OK Count",
|
||||
"zh-CN": "OK数量"
|
||||
},
|
||||
"NG Count": {
|
||||
"ms-MY": "NG Count",
|
||||
"us-EN": "NG Count",
|
||||
"zh-CN": "NG数量"
|
||||
},
|
||||
"Total Count": {
|
||||
"ms-MY": "Total Count",
|
||||
"us-EN": "Total Count",
|
||||
"zh-CN": "总数量"
|
||||
},
|
||||
"JSON Table Editor": {
|
||||
"ms-MY": "JSON Table Editor",
|
||||
"us-EN": "JSON Table Editor",
|
||||
"zh-CN": "JSON 表格编辑器"
|
||||
},
|
||||
"Option": {
|
||||
"ms-MY": "Option",
|
||||
"us-EN": "Option",
|
||||
"zh-CN": "选项"
|
||||
},
|
||||
"Value": {
|
||||
"ms-MY": "Value",
|
||||
"us-EN": "Value",
|
||||
"zh-CN": "值"
|
||||
},
|
||||
"Save": {
|
||||
"ms-MY": "Save",
|
||||
"us-EN": "Save",
|
||||
"zh-CN": "保存"
|
||||
},
|
||||
"Cancel": {
|
||||
"ms-MY": "Cancel",
|
||||
"us-EN": "Cancel",
|
||||
"zh-CN": "取消"
|
||||
},
|
||||
"Row %1 data is incomplete": {
|
||||
"ms-MY": "Row %1 data is incomplete",
|
||||
"us-EN": "Row %1 data is incomplete",
|
||||
"zh-CN": "第 %1 行数据不完整"
|
||||
},
|
||||
"Row %1 key is empty": {
|
||||
"ms-MY": "Row %1 key is empty",
|
||||
"us-EN": "Row %1 key is empty",
|
||||
"zh-CN": "第 %1 行 key 为空"
|
||||
},
|
||||
"Original type information not found for row %1": {
|
||||
"ms-MY": "Original type information not found for row %1",
|
||||
"us-EN": "Original type information not found for row %1",
|
||||
"zh-CN": "第 %1 行找不到原始类型信息"
|
||||
},
|
||||
"Type Validation Failed": {
|
||||
"ms-MY": "Type Validation Failed",
|
||||
"us-EN": "Type Validation Failed",
|
||||
"zh-CN": "类型验证失败"
|
||||
},
|
||||
"Row %1 value validation failed:\n%2": {
|
||||
"ms-MY": "Row %1 value validation failed:\\n%2",
|
||||
"us-EN": "Row %1 value validation failed:\\n%2",
|
||||
"zh-CN": "第 %1 行值验证失败:\\n%2"
|
||||
},
|
||||
"Boolean control type mismatch": {
|
||||
"ms-MY": "Boolean control type mismatch",
|
||||
"us-EN": "Boolean control type mismatch",
|
||||
"zh-CN": "布尔值控件类型错误"
|
||||
},
|
||||
"Number control type mismatch": {
|
||||
"ms-MY": "Number control type mismatch",
|
||||
"us-EN": "Number control type mismatch",
|
||||
"zh-CN": "数字控件类型错误"
|
||||
},
|
||||
"String control type mismatch": {
|
||||
"ms-MY": "String control type mismatch",
|
||||
"us-EN": "String control type mismatch",
|
||||
"zh-CN": "字符串控件类型错误"
|
||||
},
|
||||
"Get value error: %1": {
|
||||
"ms-MY": "Get value error: %1",
|
||||
"us-EN": "Get value error: %1",
|
||||
"zh-CN": "获取值错误: %1"
|
||||
},
|
||||
"Enter a string value (no quotes required)": {
|
||||
"ms-MY": "Enter a string value (no quotes required)",
|
||||
"us-EN": "Enter a string value (no quotes required)",
|
||||
"zh-CN": "输入字符串值(不需要引号)"
|
||||
},
|
||||
"Enter a numeric value (integer or decimal)": {
|
||||
"ms-MY": "Enter a numeric value (integer or decimal)",
|
||||
"us-EN": "Enter a numeric value (integer or decimal)",
|
||||
"zh-CN": "输入数字值(整数或小数)"
|
||||
},
|
||||
"Enter a boolean value (true or false)": {
|
||||
"ms-MY": "Enter a boolean value (true or false)",
|
||||
"us-EN": "Enter a boolean value (true or false)",
|
||||
"zh-CN": "输入布尔值(true 或 false)"
|
||||
},
|
||||
"Enter a JSON array, e.g., [1,2,3] or [\"a\",\"b\"]": {
|
||||
"ms-MY": "Enter a JSON array, e.g., [1,2,3] or [\"a\",\"b\"]",
|
||||
"us-EN": "Enter a JSON array, e.g., [1,2,3] or [\"a\",\"b\"]",
|
||||
"zh-CN": "输入JSON数组格式,如:[1,2,3] 或 [\"a\",\"b\"]"
|
||||
},
|
||||
"Enter a JSON object, e.g., {\"key\":\"value\"}": {
|
||||
"ms-MY": "Enter a JSON object, e.g., {\\\"key\\\":\\\"value\\\"}",
|
||||
"us-EN": "Enter a JSON object, e.g., {\\\"key\\\":\\\"value\\\"}",
|
||||
"zh-CN": "输入JSON对象格式,如:{\\\"key\\\":\\\"value\\\"}"
|
||||
},
|
||||
"Null (enter null)": {
|
||||
"ms-MY": "Null (enter null)",
|
||||
"us-EN": "Null (enter null)",
|
||||
"zh-CN": "空值(输入 null)"
|
||||
},
|
||||
"Please enter a valid JSON value": {
|
||||
"ms-MY": "Please enter a valid JSON value",
|
||||
"us-EN": "Please enter a valid JSON value",
|
||||
"zh-CN": "请输入有效的JSON值"
|
||||
},
|
||||
"Input value too large (exceeds 10240 characters)": {
|
||||
"ms-MY": "Input value too large (exceeds 10240 characters)",
|
||||
"us-EN": "Input value too large (exceeds 10240 characters)",
|
||||
"zh-CN": "输入值过大(超过10240字符)"
|
||||
},
|
||||
"Invalid numeric format": {
|
||||
"ms-MY": "Invalid numeric format",
|
||||
"us-EN": "Invalid numeric format",
|
||||
"zh-CN": "无效的数字格式"
|
||||
},
|
||||
"Boolean must be true or false": {
|
||||
"ms-MY": "Boolean must be true or false",
|
||||
"us-EN": "Boolean must be true or false",
|
||||
"zh-CN": "布尔值只能是 true 或 false"
|
||||
},
|
||||
"Null value must be null": {
|
||||
"ms-MY": "Null value must be null",
|
||||
"us-EN": "Null value must be null",
|
||||
"zh-CN": "空值只能是 null"
|
||||
},
|
||||
"Expected array format, e.g., [1,2,3]": {
|
||||
"ms-MY": "Expected array format, e.g., [1,2,3]",
|
||||
"us-EN": "Expected array format, e.g., [1,2,3]",
|
||||
"zh-CN": "期望数组格式,如:[1,2,3]"
|
||||
},
|
||||
"Expected object format, e.g., {\"key\":\"value\"}": {
|
||||
"ms-MY": "Expected object format, e.g., {\\\"key\\\":\\\"value\\\"}",
|
||||
"us-EN": "Expected object format, e.g., {\\\"key\\\":\\\"value\\\"}",
|
||||
"zh-CN": "期望对象格式,如:{\\\"key\\\":\\\"value\\\"}"
|
||||
},
|
||||
"Unknown data type": {
|
||||
"ms-MY": "Jenis data tidak diketahui",
|
||||
"us-EN": "Unknown data type",
|
||||
"zh-CN": "未知的数据类型"
|
||||
},
|
||||
"JSON parse error: %1": {
|
||||
"ms-MY": "Ralat parse JSON: %1",
|
||||
"us-EN": "JSON parse error: %1",
|
||||
"zh-CN": "JSON解析错误: %1"
|
||||
},
|
||||
"Conversion error: %1": {
|
||||
"ms-MY": "Ralat penukaran: %1",
|
||||
"us-EN": "Conversion error: %1",
|
||||
"zh-CN": "转换错误: %1"
|
||||
},
|
||||
"General JSON Editor": {
|
||||
"ms-MY": "Penyunting JSON Am",
|
||||
"us-EN": "General JSON Editor",
|
||||
"zh-CN": "通用 JSON 编辑"
|
||||
},
|
||||
"OK": {
|
||||
"ms-MY": "OK",
|
||||
"us-EN": "OK",
|
||||
"zh-CN": "确定"
|
||||
},
|
||||
"Please enter JSON:": {
|
||||
"ms-MY": "Sila masukkan JSON:",
|
||||
"us-EN": "Please enter JSON:",
|
||||
"zh-CN": "请输入 JSON:"
|
||||
},
|
||||
"Warning": {
|
||||
"ms-MY": "Amaran",
|
||||
"us-EN": "Warning",
|
||||
"zh-CN": "警告"
|
||||
},
|
||||
"JSON content cannot be empty": {
|
||||
"ms-MY": "Kandungan JSON tidak boleh kosong",
|
||||
"us-EN": "JSON content cannot be empty",
|
||||
"zh-CN": "JSON 内容不能为空"
|
||||
},
|
||||
"JSON content is too large and may cause a crash": {
|
||||
"ms-MY": "Kandungan JSON terlalu besar dan mungkin menyebabkan kerosakan",
|
||||
"us-EN": "JSON content is too large and may cause a crash",
|
||||
"zh-CN": "JSON 内容过大,可能导致崩溃"
|
||||
},
|
||||
"Parse Error": {
|
||||
"ms-MY": "Ralat Parse",
|
||||
"us-EN": "Parse Error",
|
||||
"zh-CN": "解析错误"
|
||||
},
|
||||
"JSON parse failed:\n%1": {
|
||||
"ms-MY": "Parse JSON gagal:\\n%1",
|
||||
"us-EN": "JSON parse failed:\\n%1",
|
||||
"zh-CN": "JSON 解析失败:\\n%1"
|
||||
},
|
||||
"Integer number control type mismatch": {
|
||||
"ms-MY": "Jenis kawalan nombor integer tidak sepadan",
|
||||
"us-EN": "Integer number control type mismatch",
|
||||
"zh-CN": "数字控件INT类型错误"
|
||||
},
|
||||
"Enter an integer value": {
|
||||
"ms-MY": "Masukkan nilai integer",
|
||||
"us-EN": "Enter an integer value",
|
||||
"zh-CN": "输入数字值(整数)"
|
||||
},
|
||||
"Enter a decimal value": {
|
||||
"ms-MY": "Masukkan nilai perpuluhan",
|
||||
"us-EN": "Enter a decimal value",
|
||||
"zh-CN": "输入数字值(小数)"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user