This commit is contained in:
2025-11-14 01:42:55 +08:00
parent b2b295ea72
commit 09900a1cb7
22 changed files with 811 additions and 457 deletions
-11
View File
@@ -302,15 +302,4 @@ add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
string(TIMESTAMP RUN_TIME)
message( " project end : " ${RUN_TIME} "TYPE:"${CMAKE_BUILD_TYPE})
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
configure_file(
${CMAKE_SOURCE_DIR}/git_version.h.in
${CMAKE_BINARY_DIR}/git_version.h
@ONLY
)
-4
View File
@@ -1,4 +0,0 @@
#ifndef GIT_VERSION_H
#define GIT_VERSION_H
#define GIT_COMMIT_HASH "@GIT_COMMIT_HASH@"
#endif
View File
+192
View File
@@ -0,0 +1,192 @@
("默认标题") -> ("Default Title")
("编辑参数") -> ("Edit Parameters")
("值:") -> ("Value:")
("重试") -> ("Retry")
("重新进行初始化") -> ("Reinitialize")
("离线模式") -> ("Offline Mode")
("正在初始化...") -> ("Initializing...")
("控制台日志...") -> ("Console Log...")
("History") -> ("History")
("历史记录") -> ("History")
("Camera Label") -> ("Camera Label")
("相机标签") -> ("Camera Label")
("放大窗口") -> ("Zoom In")
("缩小窗口") -> ("Zoom Out")
("Go Back") -> ("Go Back")
("返回上一级") -> ("Go Back")
("Back to Menu") -> ("Back to Menu")
("返回目录") -> ("Back to Menu")
("Current Run Data") -> ("Current Run Data")
("长度") -> ("Length")
("待读取") -> ("Pending")
("宽度:") -> ("Width:")
("Detecting...") -> ("Detecting...")
("系统状态: %1\n") -> ("System status: %1\n")
("监控异常") -> ("Monitoring Error")
("监控错误: %1") -> ("Monitor error: %1")
("执行命令") -> ("Execute Command")
("提示") -> ("Confirm")
("确定要执行此操作吗?") -> ("Are you sure you want to execute this action?")
("班次") -> ("Shift")
("SN查询") -> ("SN Search")
("导出为CSV") -> ("Export as CSV")
("CSV文件 (*.csv)") -> ("CSV File (*.csv)")
("导出成功") -> ("Export Successful")
("数据已成功导出到:\n") -> ("Data successfully exported to:\n")
("导出失败") -> ("Export Failed")
("导出CSV文件失败,请检查路径或数据库状态。") -> ("Failed to export CSV. Please check the path or database status.")
("刷新") -> ("Refresh")
("查询") -> ("Search")
("导出") -> ("Export")
("数据库操作界面") -> ("Database Operations")
("服务已离线") -> ("Service is offline")
("权限不足") -> ("Insufficient permissions")
("您没有足够的权限执行此操作。\n\n需要权限级别: %1\n当前权限级别: %2") -> ("You do not have sufficient permissions to perform this action.\n\nRequired level: %1\nCurrent level: %2")
("日志") -> ("Log")
("控制台") -> ("Console")
("系统日志") -> ("System Log")
("打开日志文件夹") -> ("Open Log Folder")
("自动滚动") -> ("Auto Scroll")
("确定") -> ("Confirm")
("欢迎!") -> ("Welcome!")
("工程师") -> ("Engineer")
("售后") -> ("After-sales")
("调试") -> ("Debug")
("退出") -> ("Exit")
("生产数据采集") -> ("Production Data Collection")
("(规格上限)") -> ("(Spec Upper Limit)")
("(均值)") -> ("(Mean)")
("(标准差)") -> ("(Std Dev)")
("(规格下限)") -> ("(Spec Lower Limit)")
("CPK计算") -> ("CPK Calculation")
("cpk长度") -> ("CPK Length")
("cpk宽度") -> ("CPK Width")
("输入坐标") -> ("Enter Coordinates")
("请输入X坐标") -> ("Enter X coordinate")
("请输入Y坐标") -> ("Enter Y coordinate")
("X坐标:") -> ("X Coordinate:")
("Y坐标:") -> ("Y Coordinate:")
("输入错误") -> ("Input Error")
("请输入有效的坐标数值") -> ("Please enter valid coordinates")
("左上") -> ("Top-Left")
("中上") -> ("Top-Center")
("右上") -> ("Top-Right")
("中右") -> ("Right-Center")
("中心") -> ("Center")
("中左") -> ("Left-Center")
("左下") -> ("Bottom-Left")
("中下") -> ("Bottom-Center")
("右下") -> ("Bottom-Right")
("请按照数字顺序依次拍摄标定点图像") -> ("Please capture calibration point images in numeric order")
("拍摄当前点") -> ("Capture Current Point")
("上一个") -> ("Previous")
("下一个") -> ("Next")
("修改坐标") -> ("Modify Coordinates")
("重新拍摄当前点") -> ("Retake Current Point")
("全部重新拍照") -> ("Retake All Points")
("准备开始标定") -> ("Ready to start calibration")
("第 %1 个标定点已经拍摄过了") -> ("Point %1 has already been captured")
("已拍摄第 %1 个标定点") -> ("Captured point %1")
("已取消第 %1 个标定点的坐标输入") -> ("Cancelled coordinate input for point %1")
("第 %1 个标定点没有图像,无法修改坐标") -> ("Point %1 has no image, cannot modify coordinates")
("已修改第 %1 个标定点的坐标") -> ("Modified coordinates for point %1")
("重新拍摄选项") -> ("Retake Options")
("请选择操作:") -> ("Select an action:")
("重新拍摄图像") -> ("Retake Image")
("仅修改坐标") -> ("Modify Coordinates Only")
("已重新拍摄第 %1 个标定点") -> ("Retook point %1")
("确认重新拍摄") -> ("Confirm Retake")
("确定要全部重新拍摄吗?\n这将清除所有已拍摄的图像和坐标数据!") -> ("Are you sure you want to retake all points?\nThis will clear all captured images and coordinate data!")
("已重置所有标定点,请重新开始标定") -> ("All calibration points have been reset. Please start calibration again")
("九点标定完成!正在处理数据...") -> ("Nine-point calibration complete! Processing data...")
("标定计算完成!") -> ("Calibration calculations complete!")
("保存标定结果...") -> ("Saving calibration results...")
("开始时间:") -> ("Start Time:")
("结束时间:") -> ("End Time:")
("导出数据为表格") -> ("Export Data to Table")
("请选择日期") -> ("Please select a date")
("导出选项") -> ("Export Options")
("选择导出路径") -> ("Select Export Path")
("导出指定时间段数据为csv表格") -> ("Export specified time-range data to CSV")
("导出数据为CSV表格") -> ("Export data to CSV")
("搜索结果") -> ("Search Results")
("找不到数据") -> ("No data found")
("检索不到数据!") -> ("No data found!")
("CSV文件保存成功") -> ("CSV file saved successfully")
("无法创建CSV文件") -> ("Unable to create CSV file")
("没有权限或空间不足!") -> ("No permission or insufficient space!")
("成功!") -> ("Export succeeded!")
("无法打开CSV文件") -> ("Unable to open CSV file")
("文件已存在且无法被写入!") -> ("File already exists and cannot be written!")
("刷新相机") -> ("Refresh Cameras")
("开始取流") -> ("Start Grabbing")
("保存图像") -> ("Save Image")
("实时取流") -> ("Real-time Grabbing")
("提示") -> ("Notice")
("没有可保存的图像") -> ("No image available to save")
("保存失败") -> ("Save Failed")
("无法保存图像到所选位置") -> ("Unable to save image to selected location")
("停止取流") -> ("Stop Grabbing")
("当前版本: v%1 | 提交版本: %2") -> ("Current version: v%1 | Commit: %2")
("选择语言/Language/Bahasa:") -> ("Select Language / Language / Bahasa:")
("设置1920x1040") -> ("Set 1920x1040")
("九点标定") -> ("Nine-Point Calibration")
("相机实时取流(只适配软触发相机)") -> ("Camera Real-time Capture (soft-trigger only)")
("打开配置文件") -> ("Open Config File")
("小工具") -> ("Toolbox")
("运行数据") -> ("Run Data")
("OK数量") -> ("OK Count")
("NG数量") -> ("NG Count")
("总数量") -> ("Total Count")
("JSON 表格编辑器") -> ("JSON Table Editor")
("选项") -> ("Option")
("值") -> ("Value")
("保存") -> ("Save")
("取消") -> ("Cancel")
("第 %1 行数据不完整") -> ("Row %1 data is incomplete")
("第 %1 行 key 为空") -> ("Row %1 key is empty")
("第 %1 行找不到原始类型信息") -> ("Original type information not found for row %1")
("类型验证失败") -> ("Type Validation Failed")
("第 %1 行值验证失败:\n%2") -> ("Row %1 value validation failed:\n%2")
("布尔值控件类型错误") -> ("Boolean control type mismatch")
("数字控件类型错误") -> ("Number control type mismatch")
("字符串控件类型错误") -> ("String control type mismatch")
("获取值错误: %1") -> ("Get value error: %1")
("字符串") -> ("String")
("数字") -> ("Number")
("布尔") -> ("Boolean")
("数组") -> ("Array")
("对象") -> ("Object")
("空值") -> ("Null")
("未知") -> ("Unknown")
("输入字符串值(不需要引号)") -> ("Enter a string value (no quotes required)")
("输入数字值(整数或小数)") -> ("Enter a numeric value (integer or decimal)")
("输入布尔值(true 或 false)") -> ("Enter a boolean value (true or false)")
("输入JSON数组格式,如:[1,2,3] 或 [\"a\",\"b\"]") -> ("Enter a JSON array, e.g., [1,2,3] or [\"a\",\"b\"]")
("输入JSON对象格式,如:{\"key\":\"value\"}") -> ("Enter a JSON object, e.g., {\"key\":\"value\"}")
("空值(输入 null)") -> ("Null (enter null)")
("请输入有效的JSON值") -> ("Please enter a valid JSON value")
("输入值过大(超过10240字符)") -> ("Input value too large (exceeds 10240 characters)")
("无效的数字格式") -> ("Invalid numeric format")
("布尔值只能是 true 或 false") -> ("Boolean must be true or false")
("空值只能是 null") -> ("Null value must be null")
("期望数组格式,如:[1,2,3]") -> ("Expected array format, e.g., [1,2,3]")
("期望对象格式,如:{\"key\":\"value\"}") -> ("Expected object format, e.g., {\"key\":\"value\"}")
("未知的数据类型") -> ("Unknown data type")
("JSON解析错误: %1") -> ("JSON parse error: %1")
("转换错误: %1") -> ("Conversion error: %1")
("通用 JSON 编辑") -> ("General JSON Editor")
("确定") -> ("OK")
("请输入 JSON:") -> ("Please enter JSON:")
("警告") -> ("Warning")
("JSON 内容不能为空") -> ("JSON content cannot be empty")
("JSON 内容过大,可能导致崩溃") -> ("JSON content is too large and may cause a crash")
("解析错误") -> ("Parse Error")
("JSON 解析失败:\n%1") -> ("JSON parse failed:\n%1")
("错误") -> ("Error")
("数字控件INT类型错误") -> ("Integer number control type mismatch")
("输入数字值(整数)") -> ("Enter an integer value")
("输入数字值(小数)") -> ("Enter a decimal value")
("执行命令") -> ("Execute Command")
("提示") -> ("Confirm")
("确定要执行此操作吗?") -> ("Are you sure you want to execute this action?")
+4 -4
View File
@@ -453,9 +453,9 @@ private:
case JsonValueType::Boolean:
return TR("Enter a boolean value (true or false)");
case JsonValueType::Array:
return TR("Enter a JSON array, e.g., [1,2,3] or [\"a\",\"b\"]");
return "输入JSON数组格式,如:[1, 2, 3] or [\"a\",\"b\"]";
case JsonValueType::Object:
return TR("Enter a JSON object, e.g., {\"key\":\"value\"}");
return "输入JSON对象格式,如: {\"key\":\"value\"}";
case JsonValueType::Null:
return TR("Null (enter null)");
default:
@@ -524,11 +524,11 @@ private:
// 验证类型是否匹配
if (expectedType == JsonValueType::Array && !result.is_array()) {
errorMsg = TR("Expected array format, e.g., [1,2,3]");
errorMsg = "期望数组格式,如:[1,2,3]";
return false;
}
if (expectedType == JsonValueType::Object && !result.is_object()) {
errorMsg = TR("Expected object format, e.g., {\"key\":\"value\"}");
errorMsg = "期望对象格式,如:{key:value}";
return false;
}
return true;
+12 -11
View File
@@ -1,4 +1,5 @@
#include <qwidget.h>
#include <translation.h>
#include <qwidget.h>
#include <qpainter.h>
#include <Qlabel>
#include <opencv.hpp>
@@ -18,8 +19,8 @@ public:
QMovie* movie = nullptr;
QTextEdit* initLog = nullptr;
QTextEdit* consoleLog = nullptr;
fancyButtonText* retryBtn = new fancyButtonText("重试", 100, 50, "重新进行初始化");
fancyButtonText* manualBtn = new fancyButtonText("离线模式", 180, 50, "离线模式");
fancyButtonText* retryBtn = new fancyButtonText(TR("Retry"), 100, 50, TR("Reinitialize"));
fancyButtonText* manualBtn = new fancyButtonText(TR("Offline Mode"), 180, 50, TR("Offline Mode"));
QGridLayout* glayout = new QGridLayout(this);
QGridLayout* logLayout = new QGridLayout(this);
loadingWidget(fSignalHub* bridgeIn){
@@ -52,11 +53,11 @@ public:
"border: 0px solid red;"
"border-radius: 0px;"));
initLog->setReadOnly(true);
QFont font("微软雅黑", 8);
QFont font("Microsoft YaHei", 8);
initLog->setFont(font);
initLog->setTextColor(Qt::white);
initLog->append("正在初始化...");
initLog->setFont(font);
initLog->setTextColor(Qt::white);
initLog->append(TR("Initializing..."));
logLayout->addWidget(initLog, 0, 0);
@@ -68,10 +69,10 @@ public:
"border-radius: 0px;"));
consoleLog->setReadOnly(true);
consoleLog->setFixedWidth(720);
QFont font2("微软雅黑", 7);
consoleLog->setFont(font2);
consoleLog->setTextColor(Qt::white);
consoleLog->append("控制台日志...");
QFont font2("Microsoft YaHei", 7);
consoleLog->setFont(font2);
consoleLog->setTextColor(Qt::white);
consoleLog->append(TR("Console Log..."));
logLayout->addWidget(consoleLog, 1, 0,Qt::AlignCenter|Qt::AlignTop);
//重试或者离线模式等按钮
+6 -5
View File
@@ -1,4 +1,5 @@
#include <QApplication>
#include <translation.h>
#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QRegion>
@@ -31,15 +32,15 @@ public:
palette.setColor(QPalette::WindowText, Qt::white);
layout= new QVBoxLayout(this);
button = new fancyButtonText("确定", 100, 40, "");
button = new fancyButtonText(TR("Confirm"), 100, 40, "");
label=new QLabel("欢迎!");
label=new QLabel(TR("Welcome!"));
label->setAlignment(Qt::AlignHCenter);
label->setFont(QFont("Microsoft YaHei", 30, QFont::Bold));
label->setPalette(palette);
comboBox= new QComboBox;
comboBox->addItems({ u8"工程师",u8"售后",u8"调试" });
comboBox->addItems({ TR("Engineer"),TR("After-sales"),TR("Debug") });
comboBox->setFont(QFont("Microsoft YaHei", 14));
comboBox->setStyleSheet("QComboBox { padding-left: 4px; padding-right: 4px; }"
"QComboBox::drop-down { subcontrol-origin: padding; subcontrol-position: right; }"
@@ -56,7 +57,7 @@ public:
passwordEdit.setFont(QFont("Microsoft YaHei", 12, QFont::Bold));
layout->addWidget(&passwordEdit);
exitBtn = new fancyButtonText(u8"退出", 100, 40, "");
exitBtn = new fancyButtonText(TR("Exit"), 100, 40, "");
QObject::connect(exitBtn, &QPushButton::clicked, [=]() {
exit(0);
});
+3 -3
View File
@@ -79,9 +79,9 @@ public:
layout->addWidget(rightWidget);
// 左侧
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("微软雅黑", 18, QFont::Bold);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("Microsoft YaHei", 18, QFont::Bold);
QLabel* factoryIconLabel = new QLabel();
factoryIconLabel->setPixmap(QPixmap(":/icon/icon/logo_Dongsheng.png")); // 设置图标
+7 -7
View File
@@ -55,7 +55,7 @@ public:
logWidget() {
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("微软雅黑", 24, QFont::Bold);
QFont font("Microsoft YaHei", 24, QFont::Bold);
// 初始化批量处理定时器
batchUpdateTimer = new QTimer(this);
@@ -73,7 +73,7 @@ public:
Layout->setContentsMargins(0, 0, 0, 0);
Layout->setAlignment(Qt::AlignLeft | Qt::AlignTop);
Title = new QLabel(u8"日志");
Title = new QLabel(TR("Log"));
Title->setFont(font);
Title->setPalette(palette);
Title->setAlignment(Qt::AlignLeft);
@@ -104,8 +104,8 @@ public:
stdConsoleOutput.setStyleSheet(textEditStyle);
qtConsoleOutput.setStyleSheet(textEditStyle);
addLogWidget(u8"控制台", &stdConsoleOutput, logType::stdConsle);
addLogWidget(u8"系统日志", &qtConsoleOutput, logType::qtConsle);
addLogWidget(TR("Console"), &stdConsoleOutput, logType::stdConsle);
addLogWidget(TR("System Log"), &qtConsoleOutput, logType::qtConsle);
btns[0]->pressed();
Layout->addWidget(widgets);
@@ -118,7 +118,7 @@ public:
void addLogWidget(QString btnText, QPlainTextEdit* textWidget, logType type) {
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font2("微软雅黑", 8);
QFont font2("Microsoft YaHei", 8);
int index = btns.size();
gradientButton* btn = new gradientButton(160, 50, btnText, "");
@@ -144,8 +144,8 @@ public:
QHBoxLayout* toolHLayout2 = new QHBoxLayout();
widgetLayout->addLayout(toolHLayout2);
QPushButton* openDirBtn = new QPushButton("打开日志文件夹");
QPushButton* autoScrollBtn = new QPushButton("自动滚动");
QPushButton* openDirBtn = new QPushButton(TR("Open Log Folder"));
QPushButton* autoScrollBtn = new QPushButton(TR("Auto Scroll"));
autoScrollBtn->setCheckable(true);
autoScrollBtn->setChecked(true);
+12 -12
View File
@@ -118,7 +118,7 @@ public:
Title->setPalette(palette);
Title->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
QLabel* versionShow = new QLabel(QString(u8"当前版本: v%1 | 提交版本: %2").arg(QString::fromStdString(softwareVersion)).arg(GIT_COMMIT_HASH));
QLabel* versionShow = new QLabel(QString(TR("Current version: v%1")).arg(QString::fromStdString(softwareVersion)));
versionShow->setFont(font2);
versionShow->setPalette(palette);
versionShow->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
@@ -133,13 +133,13 @@ public:
//语言设置
{
// 创建语言设置分组容器
QGroupBox* languageGroupBox = new QGroupBox(QString::fromStdString(Translation::getInstance().translate("Language Settings")));
QGroupBox* languageGroupBox = new QGroupBox(TR("Language Settings"));
languageGroupBox->setObjectName("languageGroupBox");
languageGroupBox->setStyleSheet(R"(
QGroupBox#languageGroupBox {
background: rgb(50, 55, 60);
border-radius: 10px;
font-family: "微软雅黑";
font-family: "Microsoft YaHei";
font-size: 14px;
font-weight: bold;
color: white;
@@ -159,7 +159,7 @@ public:
QHBoxLayout* languageSelectLayout = new QHBoxLayout();
languageSelectLayout->setSpacing(15);
QLabel* languageSelectLabel = new QLabel(u8"选择语言/Language/Bahasa:");
QLabel* languageSelectLabel = new QLabel(TR("Select Language / Language / Bahasa:"));
languageSelectLabel->setFont(font2);
languageSelectLabel->setPalette(palette);
languageSelectLabel->setMinimumWidth(200);
@@ -218,7 +218,7 @@ public:
//控制台
{
// 创建控制台设置分组容器
QGroupBox* consoleGroupBox = new QGroupBox(QString::fromStdString(Translation::getInstance().translate("Window Settings")));
QGroupBox* consoleGroupBox = new QGroupBox(TR("Window Settings"));
consoleGroupBox->setObjectName("consoleGroupBox");
consoleGroupBox->setStyleSheet(R"(
QGroupBox#consoleGroupBox {
@@ -242,7 +242,7 @@ public:
consoleMainLayout->setSpacing(10);
// 添加说明文字
QLabel* consoleDescription = new QLabel(QString::fromStdString(Translation::getInstance().translate("Control the visibility of the debug console window")));
QLabel* consoleDescription = new QLabel(TR("Control the visibility of the debug console window"));
consoleDescription->setFont(font2);
consoleDescription->setPalette(palette);
consoleDescription->setStyleSheet("color: rgb(180, 180, 180);");
@@ -281,7 +281,7 @@ public:
}
)");
fancyButtonText* setResolutionBtn = new fancyButtonText(u8"设置1920x1040");
fancyButtonText* setResolutionBtn = new fancyButtonText(TR("Set 1920x1040"));
setResolutionBtn->setStyleSheet(R"(
fancyButtonText {
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
@@ -378,7 +378,7 @@ public:
//小工具
{
// 创建控制台设置分组容器
QGroupBox* GroupBox = new QGroupBox(QString::fromStdString(Translation::getInstance().translate("小工具")));
QGroupBox* GroupBox = new QGroupBox(TR("Toolbox"));
GroupBox->setObjectName("toolsGroupBox");
GroupBox->setStyleSheet(R"(
QGroupBox#toolsGroupBox {
@@ -401,17 +401,17 @@ public:
consoleMainLayout->setContentsMargins(15, 15, 15, 15);
consoleMainLayout->setSpacing(10);
{
fancyButtonText* btn = new fancyButtonText(u8"九点标定");
QObject::connect(btn, &QPushButton::clicked, &_calibration,&QWidget::show);
fancyButtonText* btn = new fancyButtonText(TR("Nine-Point Calibration"));
QObject::connect(btn, &QPushButton::clicked, &_calibration, &QWidget::show);
consoleMainLayout->addWidget(btn);
}
{
fancyButtonText* btn = new fancyButtonText(u8"相机实时取流(只适配软触发相机)");
fancyButtonText* btn = new fancyButtonText(TR("Camera Real-time Capture (soft-trigger only)"));
QObject::connect(btn, &QPushButton::clicked, &_cameraRealTimeCapture, &QWidget::show);
consoleMainLayout->addWidget(btn);
}
{
fancyButtonText* btn = new fancyButtonText(u8"打开配置文件");
fancyButtonText* btn = new fancyButtonText(TR("Open Config File"));
consoleMainLayout->addWidget(btn);
connect(btn, &QPushButton::clicked, [=]() {
QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromStdString(appConfig::getInstance().missionJsonPath)));
+15 -15
View File
@@ -14,8 +14,8 @@ class sqliteReader : public QWidget{
Q_OBJECT
public:
sqliteReader(SQLiteDB* dbIn):db(dbIn) {
QFont font("微软雅黑", 12, QFont::Bold);
sqliteReader(SQLiteDB* dbIn):db(dbIn) {
QFont font("Microsoft YaHei", 12, QFont::Bold);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
@@ -24,7 +24,7 @@ public:
layout->addLayout(vLayout);
//1-1-1
QLabel* showLabel = new QLabel(u8"班次");
QLabel* showLabel = new QLabel(TR("Shift"));
showLabel->setFont(font);
showLabel->setPalette(palette);
vLayout->addWidget(showLabel);
@@ -43,7 +43,7 @@ public:
connect(refreshBtn, &QPushButton::clicked,
this, [=]() {refreshTable(); });
QLabel* showLabel2 = new QLabel(u8"SN查询");
QLabel* showLabel2 = new QLabel(TR("SN Search"));
showLabel2->setFont(font);
showLabel2->setPalette(palette);
vLayout->addWidget(showLabel2);
@@ -101,9 +101,9 @@ public:
// 打开文件管理器,默认文件名为表名.csv
QString filePath = QFileDialog::getSaveFileName(
this,
u8"导出为CSV",
TR("Export as CSV"),
QDir::homePath() + "/" + tableName + ".csv",
u8"CSV文件 (*.csv)"
TR("CSV File (*.csv)")
);
if (filePath.isEmpty()) {
@@ -118,9 +118,9 @@ public:
// 提示导出结果
if (success) {
QMessageBox::information(this, u8"导出成功", u8"数据已成功导出到:\n" + filePath);
QMessageBox::information(this, TR("Export Successful"), TR("Data successfully exported to:\n") + filePath);
} else {
QMessageBox::warning(this, u8"导出失败", u8"导出CSV文件失败,请检查路径或数据库状态。");
QMessageBox::warning(this, TR("Export Failed"), TR("Failed to export CSV. Please check the path or database status."));
}
}
@@ -130,9 +130,9 @@ private:
QComboBox* tableSelectComboBox = new QComboBox();
QVBoxLayout* layout = new QVBoxLayout(this);
QTableView* tableWidget = new QTableView();
fancyButtonText* refreshBtn = new fancyButtonText(u8"刷新", 80, 25, "");
fancyButtonText* searchSnBtn = new fancyButtonText(u8"查询", 80, 25, "");
fancyButtonText* dumpToCsvBtn = new fancyButtonText(u8"导出", 80, 25, "");
fancyButtonText* refreshBtn = new fancyButtonText(TR("Refresh"), 80, 25, "");
fancyButtonText* searchSnBtn = new fancyButtonText(TR("Search"), 80, 25, "");
fancyButtonText* dumpToCsvBtn = new fancyButtonText(TR("Export"), 80, 25, "");
protected:
void showEvent(QShowEvent* event) override {
QWidget::showEvent(event);
@@ -148,7 +148,7 @@ public:
QStackedWidget* widgets = new QStackedWidget();
sqliteReader _sqliteReader;
QTableWidget* sqlWidget = new QTableWidget();
QLabel* disconnnectedLabel = new QLabel("服务已离线");
QLabel* disconnnectedLabel = new QLabel(TR("Service is offline"));
sqlControlWidget(appConfig* _configIN):_sqliteReader(_configIN->dataBase){
this->setObjectName("sqlControlWidget");
@@ -160,8 +160,8 @@ public:
)");
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("微软雅黑", 24, QFont::Bold);
QFont font2("微软雅黑", 108, QFont::Bold);
QFont font("Microsoft YaHei", 24, QFont::Bold);
QFont font2("Microsoft YaHei", 108, QFont::Bold);
widgets->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
widgets->setMaximumSize(9999, 9999);
@@ -173,7 +173,7 @@ public:
Layout->setContentsMargins(0, 0, 0, 0);
Layout->setAlignment(Qt::AlignLeft | Qt::AlignTop);
Title = new QLabel(u8"数据库操作界面");
Title = new QLabel(TR("Database Operations"));
Title->setFont(font);
Title->setPalette(palette);
Title->setAlignment(Qt::AlignLeft);
+4 -4
View File
@@ -20,16 +20,16 @@ public:
:m_config(config),m_json(json){
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("微软雅黑", 24, QFont::Bold);
QFont font2("微软雅黑", 108, QFont::Bold);
QFont font("Microsoft YaHei", 24, QFont::Bold);
QFont font2("Microsoft YaHei", 108, QFont::Bold);
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
this->setObjectName(u8"生产数据采集");
this->setObjectName(TR("Production Data Collection"));
m_layout->setContentsMargins(0, 0, 0, 0);
m_layout->setAlignment(Qt::AlignLeft | Qt::AlignTop);
m_title = new QLabel(u8"生产数据采集");
m_title = new QLabel(TR("Production Data Collection"));
m_title->setFont(font);
m_title->setPalette(palette);
m_title->setAlignment(Qt::AlignLeft);
+6 -6
View File
@@ -19,12 +19,12 @@ public:
m_title(new QLabel(this)),
m_plot(new QCustomPlot(this))
{
QString title = QString::fromStdString(json.value("key", "默认标题"));
QString title = QString::fromStdString(json.value("key", "Default Title"));
m_limitHigh = json.value("limitHigh", 100.0);
m_limitLow = json.value("limitLow", 0.0);
m_maxPoints = json.value("maxPoints", 50);
QFont font("微软雅黑", 24, QFont::Bold);
QFont font("Microsoft YaHei", 24, QFont::Bold);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
@@ -81,7 +81,7 @@ public:
// 文本提示
m_tracerText = new QCPItemText(m_plot);
m_tracerText->setColor(Qt::white); // 文字颜色
m_tracerText->setFont(QFont("微软雅黑", 10, QFont::Bold));
m_tracerText->setFont(QFont("Microsoft YaHei", 10, QFont::Bold));
m_tracerText->position->setType(QCPItemPosition::ptPlotCoords);
m_tracerText->setBrush(QBrush(QColor(0, 0, 0, 150))); // 半透明背景
m_tracerText->setPadding(QMargins(5, 2, 5, 2)); // 留点内边距
@@ -89,7 +89,7 @@ public:
// 绑定鼠标移动事件
connect(m_plot, &QCustomPlot::mouseMove, this, &WaveFormWidget::onMouseMoveInPlot);
if (title.contains("对齐度")) {
if (title.contains("对齐度")) {
auto fixedTicker = QSharedPointer<QCPAxisTickerFixed>(new QCPAxisTickerFixed);
fixedTicker->setTickStep(0.1);
fixedTicker->setScaleStrategy(QCPAxisTickerFixed::ssNone); // 不自动放大
@@ -160,7 +160,7 @@ public:
protected:
void contextMenuEvent(QContextMenuEvent* event) override {
QMenu menu(this);
menu.addAction("编辑参数", this, &WaveFormWidget::editJsonParameters);
menu.addAction(TR("Edit Parameters"), this, &WaveFormWidget::editJsonParameters);
menu.exec(event->globalPos());
}
@@ -204,7 +204,7 @@ private slots:
m_tracer->updatePosition();
m_tracer->setVisible(true);
m_tracerText->setText(QString("%1\n值:%2")
m_tracerText->setText(QString("%1\nValue: %2")
.arg(static_cast<int>(std::round(x)))
.arg(y, 0, 'f', 2));
m_tracerText->setVisible(true);
@@ -57,14 +57,14 @@ public:
QComboBox* cameraSelectBox = new QComboBox();
vLayout2->addWidget(cameraSelectBox, 0, Qt::AlignTop);
QPushButton* refreshCameraBtn = new QPushButton("刷新相机");
QPushButton* refreshCameraBtn = new QPushButton(TR("Refresh Cameras"));
vLayout2->addWidget(refreshCameraBtn, 0, Qt::AlignTop);
QPushButton* startGrabbing = new QPushButton("开始取流");
QPushButton* startGrabbing = new QPushButton(TR("Start Grabbing"));
startGrabbing->setDisabled(true);
vLayout2->addWidget(startGrabbing, 0, Qt::AlignTop);
QPushButton* saveImageBtn = new QPushButton("保存图像");
QPushButton* saveImageBtn = new QPushButton(TR("Save Image"));
saveImageBtn->setDisabled(true);
vLayout2->addWidget(saveImageBtn, 0, Qt::AlignTop);
@@ -82,20 +82,20 @@ public:
QLabel* showNowTimeImageLabel = new QLabel;
vLayout2->addWidget(showNowTimeImageLabel, 1, Qt::AlignTop);
showNowTimeImageLabel->setText("实时取流");
showNowTimeImageLabel->setText(TR("Real-time Grabbing"));
showNowTimeImageLabel->setStyleSheet(" border - radius: 10px; border: 1px solid rgb(70, 75, 80);");
showNowTimeImageLabel->setFixedSize(800, 800);
_GrabbingThread = new GrabbingThread(showNowTimeImageLabel,&mutex);
connect(startGrabbing, &QPushButton::clicked, [=]() {
if (_GrabbingThread->isRunning() == false) {
if (_GrabbingThread->isRunning() == false) {
showNowTimeImageLabel->clear();
_GrabbingThread->setCameraName(cameraSelectBox->currentText().toStdString());
_GrabbingThread->start();
startGrabbing->setText("停止取流");
startGrabbing->setText(TR("Stop Grabbing"));
}
else {
_GrabbingThread->stop();
startGrabbing->setText("开始取流");
startGrabbing->setText(TR("Start Grabbing"));
}
});
connect(this, &cameraRealTimeCapture::close, [=]() {
@@ -107,17 +107,17 @@ public:
connect(saveImageBtn, &QPushButton::clicked, [=]() {
QMutexLocker locker(&mutex);
const QPixmap* pix = showNowTimeImageLabel->pixmap();
if (!pix || pix->isNull()) {
QMessageBox::warning(this, "提示", "没有可保存的图像");
if (!pix || pix->isNull()) {
QMessageBox::warning(this, TR("Notice"), TR("No image available to save"));
return;
}
QString ts = QDateTime::currentDateTime().toString("yyyyMMdd_HHmmsszzz");
QString suggested = QString("snapshot_%1.png").arg(ts);
QString filePath = QFileDialog::getSaveFileName(this, "保存图像", QDir::homePath() + "/" + suggested,
QString filePath = QFileDialog::getSaveFileName(this, TR("Save Image"), QDir::homePath() + "/" + suggested,
"PNG (*.png);;JPEG (*.jpg *.jpeg);;BMP (*.bmp)");
if (filePath.isEmpty()) return;
if (!pix->save(filePath)) {
QMessageBox::warning(this, "保存失败", "无法保存图像到所选位置");
QMessageBox::warning(this, TR("Save Failed"), TR("Unable to save image to selected location"));
}
});
@@ -132,7 +132,7 @@ protected:
}
// 复位按钮文本(如果按钮仍存在)
if (auto btn = this->findChild<QPushButton*>("btn_startGrabbing")) {
btn->setText("开始取流");
btn->setText(TR("Start Grabbing"));
}
QWidget::closeEvent(event);
}
@@ -20,7 +20,7 @@ public:
layout->setAlignment(Qt::AlignTop);
title = new QLabel(Name);
QFont font("微软雅黑", 14, QFont::Bold);
QFont font("Microsoft YaHei", 14, QFont::Bold);
title->setFont(font);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
@@ -33,8 +33,8 @@ public:
calwidget = new QWidget();
QHBoxLayout* hLayout1 = new QHBoxLayout(calwidget);
QFont font2("微软雅黑", 26, QFont::Bold);
QFont font3("微软雅黑", 7, QFont::Bold);
QFont font2("Microsoft YaHei", 26, QFont::Bold);
QFont font3("Microsoft YaHei", 7, QFont::Bold);
//MIN
QLabel* minLabel = new QLabel("MIN(");
@@ -47,11 +47,11 @@ public:
QVBoxLayout* vLayout1 = new QVBoxLayout();
QHBoxLayout* topLayout1 = new QHBoxLayout();
QLabel* uslLabel = new QLabel(QString::number(USL) + "(规格上限)");
QLabel* uslLabel = new QLabel(QString::number(USL) + TR(" (Spec Upper Limit)"));
uslLabel->setFont(font3);
uslLabel->setPalette(palette);
QLabel* avgLabel = new QLabel("-" + QString::number(USL) + u8"(均值)");
QLabel* avgLabel = new QLabel("-" + QString::number(USL) + TR(" (Mean)"));
avgLabel->setFont(font3);
avgLabel->setPalette(palette);
@@ -62,7 +62,7 @@ public:
line->setPalette(palette);
line->setFixedHeight(5);
QLabel* deviationLabel = new QLabel(u8"(标准差)");
QLabel* deviationLabel = new QLabel(TR("(Std Dev)"));
deviationLabel->setFont(font3);
deviationLabel->setPalette(palette);
deviationLabel->setAlignment(Qt::AlignCenter);
@@ -87,11 +87,11 @@ public:
QVBoxLayout* vLayout1 = new QVBoxLayout();
QHBoxLayout* topLayout1 = new QHBoxLayout();
QLabel* uslLabel = new QLabel(QString::number(USL) + "(均值)");
QLabel* uslLabel = new QLabel(QString::number(USL) + TR(" (Mean)"));
uslLabel->setFont(font3);
uslLabel->setPalette(palette);
QLabel* avgLabel = new QLabel("-" + QString::number(USL) + u8"(规格下限)");
QLabel* avgLabel = new QLabel("-" + QString::number(USL) + TR(" (Spec Lower Limit)"));
avgLabel->setFont(font3);
avgLabel->setPalette(palette);
@@ -142,8 +142,8 @@ public:
"}");
layout = new QVBoxLayout(this);
title = new QLabel("CPK计算");
QFont font("微软雅黑", 16, QFont::Bold);
title = new QLabel(TR("CPK Calculation"));
QFont font("Microsoft YaHei", 16, QFont::Bold);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
@@ -158,10 +158,10 @@ public:
title->setFixedHeight(40);
layout->addWidget(title);
window1 = new perCpkWidget("cpk长度");
window1 = new perCpkWidget(TR("CPK Length"));
layout->addWidget(window1);
window2 = new perCpkWidget("cpk宽度");
window2 = new perCpkWidget(TR("CPK Width"));
layout->addWidget(window2);
}
~cpkCalculatePanel()
@@ -43,11 +43,11 @@ private:
void setupUi() {
QVBoxLayout* layout = new QVBoxLayout(this);
QLabel* startLabel = new QLabel("开始时间:", this);
QLabel* startLabel = new QLabel(TR("Start Time:"), this);
startTimeEdit = new QDateTimeEdit(this);
startTimeEdit->setDisplayFormat("HH:mm");
QLabel* endLabel = new QLabel("结束时间:", this);
QLabel* endLabel = new QLabel(TR("End Time:"), this);
endTimeEdit = new QDateTimeEdit(this);
endTimeEdit->setDisplayFormat("HH:mm");
@@ -77,7 +77,7 @@ public:
TimeRangeSelectorWidget* timeSelector;
dumpToExcel()
{
showMainWidgetBtn = new QPushButton(u8"导出数据为表格");
showMainWidgetBtn = new QPushButton(TR("Export Data to Table"));
showMainWidgetBtn->setStyleSheet("color: white;");
mainWidget = new QWidget;
QHBoxLayout* layout = new QHBoxLayout;
@@ -90,7 +90,7 @@ public:
dateWIdget = new QWidget();
QVBoxLayout* layoutTemp = new QVBoxLayout();
dateWIdget->setLayout(layoutTemp);
QLabel* labelTemp = new QLabel(u8"请选择日期");
QLabel* labelTemp = new QLabel(TR("Please select a date"));
labelTemp->setAlignment(Qt::AlignCenter);
layoutTemp->addWidget(labelTemp);
layoutTemp->addWidget(calendarW);
@@ -103,11 +103,11 @@ public:
QVBoxLayout* layoutTemp = new QVBoxLayout();
controlPanel->setLayout(layoutTemp);
QLabel* title = new QLabel(u8"导出选项");
QLabel* title = new QLabel(TR("Export Options"));
title->setAlignment(Qt::AlignCenter);
QLabel* space = new QLabel();
QLabel* selectFolderLabel = new QLabel(u8"选择导出路径");
QLabel* selectFolderLabel = new QLabel(TR("Select Export Path"));
QHBoxLayout* layoutTemp2 = new QHBoxLayout();
openPathSelectBtn = new QPushButton("...");
@@ -119,8 +119,8 @@ public:
filePathLineEdit = new QLineEdit("D://");
layoutTemp2->addWidget(filePathLineEdit);
dumpToCsvWithDateLimitBtn = new QPushButton(u8"导出指定时间段数据为csv表格");
dumpToCsvBtn = new QPushButton(u8"导出数据为CSV表格");
dumpToCsvWithDateLimitBtn = new QPushButton(TR("Export specified time-range data to CSV"));
dumpToCsvBtn = new QPushButton(TR("Export data to CSV"));
layoutTemp->addWidget(title);
//layoutTemp->addWidget(data);
@@ -173,8 +173,8 @@ public:
if (res.rowDatas.size() == 0)
{
tV->clearAllData();
tV->Init({u8"搜索结果"});
std::vector<QString> strVec({ "找不到数据" });
tV->Init({TR("Search Results")});
std::vector<QString> strVec({ TR("No data found") });
tV->addRowDataValue(strVec);
return;
}
@@ -246,7 +246,7 @@ public:
#pragma region
if (res.rowDatas.size() == 0)
{
QMessageBox::critical(nullptr, "Error", u8"检索不到数据!");
QMessageBox::critical(nullptr, "Error", TR("No data found!"));
return;
}
#pragma endregion 没有数据的对策
@@ -285,11 +285,11 @@ public:
}
stream << "\n";
}
qDebug() << "CSV文件保存成功";
qDebug() << TR("CSV file saved successfully");
}
else {
qDebug() << "无法创建CSV文件";
QMessageBox::critical(nullptr, "Error", u8"没有权限或空间不足!");
qDebug() << TR("Unable to create CSV file");
QMessageBox::critical(nullptr, "Error", TR("No permission or insufficient space!"));
}
}
else {
@@ -315,12 +315,12 @@ public:
}
system(command.c_str());
#pragma endregion 打开文件夹
QMessageBox::information(nullptr, "Success", u8"成功!");
qDebug() << "CSV文件保存成功";
QMessageBox::information(nullptr, "Success", TR("Export succeeded!"));
qDebug() << TR("CSV file saved successfully");
return;
}
else {
qDebug() << "无法打开CSV文件";
qDebug() << TR("Unable to open CSV file");
#pragma region
std::string command = "explorer /select, \"" + fileName.toStdString() + "\"";
size_t pos = 0;
@@ -329,7 +329,7 @@ public:
}
system(command.c_str());
#pragma endregion 打开文件夹
QMessageBox::critical(nullptr, "Error", u8"文件已存在且无法被写入!");
QMessageBox::critical(nullptr, "Error", TR("File already exists and cannot be written!"));
}
}
}
@@ -352,7 +352,7 @@ public:
stream << QString::fromStdString(data.value) << ",";
stream << "\n";
}
qDebug() << "CSV文件保存成功";
qDebug() << TR("CSV file saved successfully");
}
else {
qDebug() << "无法创建CSV文件";
@@ -381,7 +381,7 @@ public:
return;
}
else {
qDebug() << "无法打开CSV文件";
qDebug() << TR("Unable to open CSV file");
#pragma region
std::string command = "explorer /select, \"" + fileName.toStdString() + "\"";
size_t pos = 0;
@@ -390,7 +390,7 @@ public:
}
system(command.c_str());
#pragma endregion 打开文件夹
QMessageBox::critical(nullptr, "Error", u8"文件已存在且无法被写入!");
QMessageBox::critical(nullptr, "Error", TR("File already exists and cannot be written!"));
}
}
#pragma endregion 不需要判断时间的循环
@@ -20,12 +20,12 @@ public:
QLabel* fileNameLabel = new QLabel(this);
QLabel* imgShow = new QLabel();
historyItemWidget(QString title, QSize parentSize, historyPack historyPackIn)
historyItemWidget(QString title, QSize parentSize, historyPack historyPackIn)
{
if (historyPackIn.img.isNull())
return;
_historyPack = historyPackIn;
QFont font(u8"微软雅黑", 12, QFont::Bold);
if (historyPackIn.img.isNull())
return;
_historyPack = historyPackIn;
QFont font("Microsoft YaHei", 12, QFont::Bold);
this->setObjectName("historyItemWidget");
QVBoxLayout* vlayout = new QVBoxLayout();
resultLabel->setText(title);
@@ -129,11 +129,11 @@ public:
QListWidget* showDataListWidget = new QListWidget();
QVBoxLayout* layout = new QVBoxLayout(this);
historyShowListSubThread _historyShowListSubThread;
historyShowListWidget()
historyShowListWidget()
{
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font(u8"微软雅黑", 16, QFont::Bold);
QFont font("Microsoft YaHei", 16, QFont::Bold);
QHBoxLayout* hLayout = new QHBoxLayout();
title->setPalette(palette);
@@ -16,7 +16,7 @@ public:
QLabel* dirLabel = new QLabel();
toolItemWidget(QString title)
{
QFont font("微软雅黑", 24, QFont::Bold);
QFont font("Microsoft YaHei", 24, QFont::Bold);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
@@ -86,7 +86,7 @@ public:
QString path;
for (auto p : pathList)
path.append(p + "/");
QFont font("微软雅黑", 18, QFont::Bold);
QFont font("Microsoft YaHei", 18, QFont::Bold);
std::vector<std::string> result = fileManager::getAllDirs(path);
for (auto dirName : result)
{
@@ -12,7 +12,7 @@ class softwareDataDisplay : public QWidget {
Q_OBJECT
public:
softwareDataDisplay(QWidget* parent = nullptr) : QWidget(parent) {
QFont font("微软雅黑", 12);
QFont font("Microsoft YaHei", 12);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QHBoxLayout* layout = new QHBoxLayout(this);
@@ -123,10 +123,10 @@ public:
FrequencyBar* _3DCtBar;
summaryDataManager()
{
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("微软雅黑", 14, QFont::Bold);
QFont font2("微软雅黑", 20, QFont::Bold);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::white);
QFont font("Microsoft YaHei", 14, QFont::Bold);
QFont font2("Microsoft YaHei", 20, QFont::Bold);
widget = new fancyWidget(TR(" Run Data"));
/* fancyButtonText* resetBtn = new fancyButtonText(80,40,u8"重置", u8"重置跑料数据");
+6 -6
View File
@@ -316,9 +316,9 @@ namespace Auth {
std::cerr << errorMessage << std::endl;
// 显示权限不足的弹窗
QMessageBox::warning(nullptr,
"权限不足",
QString("您没有足够的权限执行此操作。\n\n需要权限级别: %1\n当前权限级别: %2")
QMessageBox::warning(nullptr,
TR("Insufficient permissions"),
QString(TR("您没有足够的权限执行此操作。\n\n需要权限级别: %1\n当前权限级别: %2"))
.arg(QString::fromStdString(userLevelToString(requiredLevel)))
.arg(QString::fromStdString(userLevelToString(currentUserLevel))));
}
@@ -333,9 +333,9 @@ namespace Auth {
std::cerr << errorMessage << std::endl;
// 显示权限不足的弹窗(指定父窗口)
QMessageBox::warning(parent,
QString::fromLocal8Bit("权限不足"),
QString::fromLocal8Bit("您没有足够的权限执行此操作。\n\n需要权限级别: %1\n当前权限级别: %2")
QMessageBox::warning(parent,
TR("Insufficient permissions"),
QString(TR("You do not have sufficient permissions to perform this action.\n\nRequired level: %1\nCurrent level: %2"))
.arg(QString::fromStdString(userLevelToString(requiredLevel)))
.arg(QString::fromStdString(userLevelToString(currentUserLevel))));
}
+485 -310
View File
@@ -1,26 +1,106 @@
{
"current_language": "zh-CN",
"current_language": "us-EN",
"section": [
"us-EN",
"zh-CN",
"ms-MY"
],
"translate": {
"(Mean)": {
"ms-MY": "(Purata)",
"us-EN": "(Mean)",
"zh-CN": "(均值)"
},
"(Spec Lower Limit)": {
"ms-MY": "(Had Bawah Spesifikasi)",
"us-EN": "(Spec Lower Limit)",
"zh-CN": "(规格下限)"
},
"(Spec Upper Limit)": {
"ms-MY": "(Had Atas Spesifikasi)",
"us-EN": "(Spec Upper Limit)",
"zh-CN": "(规格上限)"
},
"(Std Dev)": {
"ms-MY": "(Sisihan Piawai)",
"us-EN": "(Std Dev)",
"zh-CN": "(标准差)"
},
"AI Detection System": {
"ms-MY": "Sistem Pengesanan AI",
"us-EN": "AI Detection System",
"zh-CN": "AI检测系统"
},
"After-sales": {
"ms-MY": "Perkhidmatan Selepas Jualan",
"us-EN": "After-sales",
"zh-CN": "售后"
},
"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": "所有密码字段都不能为空"
},
"Are you sure you want to execute this action?": {
"ms-MY": "Adakah anda pasti mahu melaksanakan tindakan ini?",
"us-EN": "Are you sure you want to execute this action?",
"zh-CN": "确定要执行此操作吗?"
},
"Auto Logout": {
"ms-MY": "Auto Log Keluar",
"us-EN": "Auto Logout",
"zh-CN": "自动注销"
},
"Auto Scroll": {
"ms-MY": "Tatal Automatik",
"us-EN": "Auto Scroll",
"zh-CN": "自动滚动"
},
"Back to Menu": {
"ms-MY": "Kembali ke Menu",
"us-EN": "Back to Menu",
"zh-CN": "返回目录"
},
"Boolean control type mismatch": {
"ms-MY": "Jenis kawalan boolean tidak sepadan",
"us-EN": "Boolean control type mismatch",
"zh-CN": "布尔值控件类型错误"
},
"Boolean must be true or false": {
"ms-MY": "Boolean mesti true atau false",
"us-EN": "Boolean must be true or false",
"zh-CN": "布尔值只能是 true 或 false"
},
"CPK Calculation": {
"ms-MY": "Pengiraan CPK",
"us-EN": "CPK Calculation",
"zh-CN": "CPK计算"
},
"CPK Length": {
"ms-MY": "CPK Panjang",
"us-EN": "CPK Length",
"zh-CN": "cpk长度"
},
"CPK Width": {
"ms-MY": "CPK Lebar",
"us-EN": "CPK Width",
"zh-CN": "cpk宽度"
},
"CSV File (*.csv)": {
"ms-MY": "Fail CSV (*.csv)",
"us-EN": "CSV File (*.csv)",
"zh-CN": "CSV文件 (*.csv)"
},
"Camera Label": {
"ms-MY": "Label Kamera",
"us-EN": "Camera Label",
"zh-CN": "相机标签"
},
"Cancel": {
"ms-MY": "Batal",
"us-EN": "Cancel",
"zh-CN": "取消"
},
"Change Password": {
"ms-MY": "Tukar Kata Laluan",
"us-EN": "Change Password",
@@ -31,16 +111,36 @@
"us-EN": "Close",
"zh-CN": "关闭"
},
"Confirm": {
"ms-MY": "Sahkan",
"us-EN": "Confirm",
"zh-CN": "提示"
},
"Confirm Password:": {
"ms-MY": "Sahkan Kata Laluan:",
"us-EN": "Confirm Password:",
"zh-CN": "确认密码:"
},
"Console": {
"ms-MY": "Konsol",
"us-EN": "Console",
"zh-CN": "控制台"
},
"Console Log...": {
"ms-MY": "Log Konsol...",
"us-EN": "Console Log...",
"zh-CN": "控制台日志..."
},
"Console Settings": {
"ms-MY": "Tetapan Konsol",
"us-EN": "Console Settings",
"zh-CN": "控制台设置"
},
"Conversion error: %1": {
"ms-MY": "Ralat penukaran: %1",
"us-EN": "Conversion error: %1",
"zh-CN": "转换错误: %1"
},
"Create User": {
"ms-MY": "Cipta Pengguna",
"us-EN": "Create User",
@@ -51,6 +151,11 @@
"us-EN": "Current Password:",
"zh-CN": "当前密码:"
},
"Current Run Data": {
"ms-MY": "Data Larian Semasa",
"us-EN": "Current Run Data",
"zh-CN": "本次运行数据"
},
"Current User Information": {
"ms-MY": "Maklumat Pengguna Semasa",
"us-EN": "Current User Information",
@@ -71,26 +176,136 @@
"us-EN": "Current user logged out",
"zh-CN": "已注销当前用户"
},
"Current version: v%1": {
"ms-MY": "Versi semasa: v%1",
"us-EN": "Current version: v%1",
"zh-CN": "当前版本: v%1"
},
"Data successfully exported to:\n": {
"ms-MY": "Data berjaya dieksport ke:\\n",
"us-EN": "Data successfully exported to:\n",
"zh-CN": "数据已成功导出到:\n"
},
"Database Operations": {
"ms-MY": "Operasi Pangkalan Data",
"us-EN": "Database Operations",
"zh-CN": "数据库操作界面"
},
"Debug": {
"ms-MY": "Penyelesaian Masalah",
"us-EN": "Debug",
"zh-CN": "故障排查"
},
"Default Title": {
"ms-MY": "Tajuk Lalai",
"us-EN": "Default Title",
"zh-CN": "默认标题"
},
"Detecting...": {
"ms-MY": "Mengesan...",
"us-EN": "Detecting...",
"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": "是否退出程序?"
},
"Edit Parameters": {
"ms-MY": "Sunting Parameter",
"us-EN": "Edit Parameters",
"zh-CN": "编辑参数"
},
"Engineer": {
"ms-MY": "Jurutera",
"us-EN": "Engineer",
"zh-CN": "工程师"
},
"Enter a boolean value (true or false)": {
"ms-MY": "Masukkan nilai boolean (true atau false)",
"us-EN": "Enter a boolean value (true or false)",
"zh-CN": "输入布尔值(true 或 false)"
},
"Enter a decimal value": {
"ms-MY": "Masukkan nilai perpuluhan",
"us-EN": "Enter a decimal value",
"zh-CN": "输入数字值(小数)"
},
"Enter a numeric value (integer or decimal)": {
"ms-MY": "Masukkan nilai nombor (integer atau perpuluhan)",
"us-EN": "Enter a numeric value (integer or decimal)",
"zh-CN": "输入数字值(整数或小数)"
},
"Enter a string value (no quotes required)": {
"ms-MY": "Masukkan nilai rentetan (tidak perlu tanda petik)",
"us-EN": "Enter a string value (no quotes required)",
"zh-CN": "输入字符串值(不需要引号)"
},
"Enter an integer value": {
"ms-MY": "Masukkan nilai integer",
"us-EN": "Enter an integer value",
"zh-CN": "输入数字值(整数)"
},
"Error": {
"ms-MY": "Ralat",
"us-EN": "Error",
"zh-CN": "错误"
},
"Execute Command": {
"ms-MY": "Jalankan Perintah",
"us-EN": "Execute Command",
"zh-CN": "执行命令"
},
"Exit": {
"ms-MY": "Keluar",
"us-EN": "Exit",
"zh-CN": "退出"
},
"Exit Confirmation": {
"ms-MY": "Pengesahan Keluar",
"us-EN": "Exit Confirmation",
"zh-CN": "退出确认"
},
"Export": {
"ms-MY": "Eksport",
"us-EN": "Export",
"zh-CN": "导出"
},
"Export Failed": {
"ms-MY": "Eksport Gagal",
"us-EN": "Export Failed",
"zh-CN": "导出失败"
},
"Export Successful": {
"ms-MY": "Eksport Berjaya",
"us-EN": "Export Successful",
"zh-CN": "导出成功"
},
"Export as CSV": {
"ms-MY": "Eksport sebagai CSV",
"us-EN": "Export as CSV",
"zh-CN": "导出为CSV"
},
"Failed to export CSV. Please check the path or database status.": {
"ms-MY": "Gagal mengeksport CSV. Sila semak laluan atau status pangkalan data.",
"us-EN": "Failed to export CSV. Please check the path or database status.",
"zh-CN": "导出CSV文件失败,请检查路径或数据库状态。"
},
"General JSON Editor": {
"ms-MY": "Penyunting JSON Am",
"us-EN": "General JSON Editor",
"zh-CN": "通用 JSON 编辑"
},
"Get value error: %1": {
"ms-MY": "Ralat mendapat nilai: %1",
"us-EN": "Get value error: %1",
"zh-CN": "获取值错误: %1"
},
"Go Back": {
"ms-MY": "Kembali",
"us-EN": "Go Back",
"zh-CN": "返回上一级"
},
"Guest": {
"ms-MY": "Tetamu",
"us-EN": "Guest",
@@ -101,16 +316,71 @@
"us-EN": "Hardware Information",
"zh-CN": "硬件信息"
},
"History": {
"ms-MY": "Sejarah",
"us-EN": "History",
"zh-CN": "历史记录"
},
"Initializing...": {
"ms-MY": "Memulakan...",
"us-EN": "Initializing...",
"zh-CN": "正在初始化..."
},
"Input value too large (exceeds 10240 characters)": {
"ms-MY": "Nilai input terlalu besar (melebihi 10240 aksara)",
"us-EN": "Input value too large (exceeds 10240 characters)",
"zh-CN": "输入值过大(超过10240字符)"
},
"Insufficient permissions": {
"ms-MY": "Kebenaran tidak mencukupi",
"us-EN": "Insufficient permissions",
"zh-CN": "权限不足"
},
"Integer number control type mismatch": {
"ms-MY": "Jenis kawalan nombor integer tidak sepadan",
"us-EN": "Integer number control type mismatch",
"zh-CN": "数字控件INT类型错误"
},
"Invalid numeric format": {
"ms-MY": "Format nombor tidak sah",
"us-EN": "Invalid numeric format",
"zh-CN": "无效的数字格式"
},
"JSON Table Editor": {
"ms-MY": "Editor Jadual JSON",
"us-EN": "JSON Table Editor",
"zh-CN": "JSON 表格编辑器"
},
"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 内容过大,可能导致崩溃"
},
"JSON parse error: %1": {
"ms-MY": "Ralat parse JSON: %1",
"us-EN": "JSON parse error: %1",
"zh-CN": "JSON解析错误: %1"
},
"JSON parse failed:\n%1": {
"ms-MY": "Parse JSON gagal:\\n%1",
"us-EN": "JSON parse failed:\\n%1",
"zh-CN": "JSON 解析失败:\\n%1"
},
"Language Settings": {
"ms-MY": "Tetapan Bahasa",
"us-EN": "Language Settings",
"zh-CN": "语言设置"
},
"Length": {
"ms-MY": "Panjang",
"us-EN": "Length",
"zh-CN": "长度"
},
"Log": {
"ms-MY": "Analisis Log",
"us-EN": "Log",
@@ -141,6 +411,21 @@
"us-EN": "Logout",
"zh-CN": "注销"
},
"Monitor error: %1": {
"ms-MY": "Ralat pemantauan: %1",
"us-EN": "Monitor error: %1",
"zh-CN": "监控错误: %1"
},
"Monitoring Error": {
"ms-MY": "Ralat Pemantauan",
"us-EN": "Monitoring Error",
"zh-CN": "监控异常"
},
"NG Count": {
"ms-MY": "Kiraan NG",
"us-EN": "NG Count",
"zh-CN": "NG数量"
},
"New Password:": {
"ms-MY": "Kata Laluan Baru:",
"us-EN": "New Password:",
@@ -156,11 +441,61 @@
"us-EN": "New password must be at least 4 characters",
"zh-CN": "新密码长度至少为4位"
},
"Null (enter null)": {
"ms-MY": "Null (masukkan null)",
"us-EN": "Null (enter null)",
"zh-CN": "空值(输入 null)"
},
"Null value must be null": {
"ms-MY": "Nilai null mesti null",
"us-EN": "Null value must be null",
"zh-CN": "空值只能是 null"
},
"Number control type mismatch": {
"ms-MY": "Jenis kawalan nombor tidak sepadan",
"us-EN": "Number control type mismatch",
"zh-CN": "数字控件类型错误"
},
"OK": {
"ms-MY": "OK",
"us-EN": "OK",
"zh-CN": "确定"
},
"OK Count": {
"ms-MY": "Kiraan OK",
"us-EN": "OK Count",
"zh-CN": "OK数量"
},
"Offline Mode": {
"ms-MY": "Mod Luar Talian",
"us-EN": "Offline Mode",
"zh-CN": "离线模式"
},
"Open Log Folder": {
"ms-MY": "Buka Folder Log",
"us-EN": "Open Log Folder",
"zh-CN": "打开日志文件夹"
},
"Option": {
"ms-MY": "Pilihan",
"us-EN": "Option",
"zh-CN": "选项"
},
"Original type information not found for row %1": {
"ms-MY": "Maklumat jenis asal tidak ditemui untuk baris %1",
"us-EN": "Original type information not found for row %1",
"zh-CN": "第 %1 行找不到原始类型信息"
},
"Param": {
"ms-MY": "Tetapan Parameter",
"us-EN": "Param",
"zh-CN": "参数设置"
},
"Parse Error": {
"ms-MY": "Ralat Parse",
"us-EN": "Parse Error",
"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",
@@ -181,6 +516,11 @@
"us-EN": "Password:",
"zh-CN": "密码:"
},
"Pending": {
"ms-MY": "Tertunda",
"us-EN": "Pending",
"zh-CN": "待读取"
},
"Permission Level:": {
"ms-MY": "Tahap Kebenaran:",
"us-EN": "Permission Level:",
@@ -201,21 +541,111 @@
"us-EN": "Please create user first",
"zh-CN": "请先创建用户"
},
"Please enter JSON:": {
"ms-MY": "Sila masukkan JSON:",
"us-EN": "Please enter JSON:",
"zh-CN": "请输入 JSON:"
},
"Please enter a valid JSON value": {
"ms-MY": "Sila masukkan nilai JSON yang sah",
"us-EN": "Please enter a valid JSON value",
"zh-CN": "请输入有效的JSON值"
},
"Production Data Collection": {
"ms-MY": "Pengumpulan Data Pengeluaran",
"us-EN": "Production Data Collection",
"zh-CN": "生产数据采集"
},
"Refresh": {
"ms-MY": "Segarkan",
"us-EN": "Refresh",
"zh-CN": "刷新"
},
"Reinitialize": {
"ms-MY": "Inisialisasi Semula",
"us-EN": "Reinitialize",
"zh-CN": "重新进行初始化"
},
"Remaining: ": {
"ms-MY": "Baki: ",
"us-EN": "Remaining: ",
"zh-CN": "剩余: "
},
"Retry": {
"ms-MY": "Cuba Semula",
"us-EN": "Retry",
"zh-CN": "重试"
},
"Row %1 data is incomplete": {
"ms-MY": "Data baris %1 tidak lengkap",
"us-EN": "Row %1 data is incomplete",
"zh-CN": "第 %1 行数据不完整"
},
"Row %1 key is empty": {
"ms-MY": "Kekunci baris %1 kosong",
"us-EN": "Row %1 key is empty",
"zh-CN": "第 %1 行 key 为空"
},
"Row %1 value validation failed:\n%2": {
"ms-MY": "Pengesahan nilai baris %1 gagal:\\n%2",
"us-EN": "Row %1 value validation failed:\\n%2",
"zh-CN": "第 %1 行值验证失败:\\n%2"
},
"Run Data": {
"ms-MY": "Data Larian",
"us-EN": "Run Data",
"zh-CN": "运行数据"
},
"SN Search": {
"ms-MY": "Carian SN",
"us-EN": "SN Search",
"zh-CN": "SN查询"
},
"Save": {
"ms-MY": "Simpan",
"us-EN": "Save",
"zh-CN": "保存"
},
"Search": {
"ms-MY": "Carian",
"us-EN": "Search",
"zh-CN": "查询"
},
"Service is offline": {
"ms-MY": "Perkhidmatan luar talian",
"us-EN": "Service is offline",
"zh-CN": "服务已离线"
},
"Setting": {
"ms-MY": "Tetapan",
"us-EN": "Setting",
"zh-CN": "设置"
},
"Shift": {
"ms-MY": "Syif",
"us-EN": "Shift",
"zh-CN": "班次"
},
"String control type mismatch": {
"ms-MY": "Jenis kawalan rentetan tidak sepadan",
"us-EN": "String control type mismatch",
"zh-CN": "字符串控件类型错误"
},
"Success": {
"ms-MY": "Berjaya",
"us-EN": "Success",
"zh-CN": "成功"
},
"System Log": {
"ms-MY": "Log Sistem",
"us-EN": "System Log",
"zh-CN": "系统日志"
},
"System status: %1\\n": {
"ms-MY": "Status sistem: %1\\\\n",
"us-EN": "System status: %1\\\\n",
"zh-CN": "系统状态: %1\\\\n"
},
"TOOLS": {
"ms-MY": "Alat",
"us-EN": "TOOLS",
@@ -226,6 +656,21 @@
"us-EN": "Timed out",
"zh-CN": "已超时"
},
"Total Count": {
"ms-MY": "Jumlah Kiraan",
"us-EN": "Total Count",
"zh-CN": "总数量"
},
"Type Validation Failed": {
"ms-MY": "Pengesahan Jenis Gagal",
"us-EN": "Type Validation Failed",
"zh-CN": "类型验证失败"
},
"Unknown data type": {
"ms-MY": "Jenis data tidak diketahui",
"us-EN": "Unknown data type",
"zh-CN": "未知的数据类型"
},
"User Management": {
"ms-MY": "Pengurusan Pengguna",
"us-EN": "User Management",
@@ -251,11 +696,36 @@
"us-EN": "Username:",
"zh-CN": "用户名:"
},
"Value": {
"ms-MY": "Nilai",
"us-EN": "Value",
"zh-CN": "值"
},
"Value:": {
"ms-MY": "Nilai:",
"us-EN": "Value:",
"zh-CN": "值:"
},
"ViewImage": {
"ms-MY": "Lihat Imej",
"us-EN": "View Image",
"zh-CN": "查看图片"
},
"Warning": {
"ms-MY": "Amaran",
"us-EN": "Warning",
"zh-CN": "警告"
},
"Welcome!": {
"ms-MY": "Selamat Datang!",
"us-EN": "Welcome!",
"zh-CN": "欢迎!"
},
"Width:": {
"ms-MY": "Lebar:",
"us-EN": "Width:",
"zh-CN": "宽度:"
},
"Window Settings": {
"ms-MY": "Tetapan Tetingkap",
"us-EN": "Window Settings",
@@ -266,6 +736,16 @@
"us-EN": "You need administrator permissions to create users",
"zh-CN": "您需要管理员权限才能创建用户"
},
"Zoom In": {
"ms-MY": "Zum Masuk",
"us-EN": "Zoom In",
"zh-CN": "放大窗口"
},
"Zoom Out": {
"ms-MY": "Zum Keluar",
"us-EN": "Zoom Out",
"zh-CN": "缩小窗口"
},
"hideConsole": {
"ms-MY": "Sembunyikan Konsol",
"us-EN": "Hide Console",
@@ -285,315 +765,10 @@
"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": "输入数字值(小数)"
"您没有足够的权限执行此操作。\n\n需要权限级别: %1\n当前权限级别: %2": {
"ms-MY": "Anda tidak mempunyai kebenaran yang mencukupi untuk melaksanakan tindakan ini.\n\nTahap diperlukan: %1\nTahap semasa: %2",
"us-EN": "You do not have sufficient permissions to perform this action.\n\nRequired level: %1\nCurrent level: %2",
"zh-CN": "您没有足够的权限执行此操作。\n\n所需等级: %1\n当前等级: %2"
}
}
}