2025-03-20 17:30:43 +08:00

1926 lines
72 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>ColorEdit</name>
<message>
<location filename="kbdpropertyfactory.cpp" line="711"/>
<source>颜色选择</source>
<translation>Color Selection</translation>
</message>
</context>
<context>
<name>KbdBatchDlg</name>
<message>
<location filename="kbdbatchdlg.cpp" line="20"/>
<source>批量修改</source>
<translation>Batch Modify</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="76"/>
<source>相同值</source>
<translation>Same Value</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="81"/>
<source>按行递增</source>
<translation>Increment by Row</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="84"/>
<source>自定义</source>
<translation>Custom</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="94"/>
<source>确定</source>
<translation>OK</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="96"/>
<source>取消</source>
<translation>Cancel</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="103"/>
<source>设置值</source>
<translation>Set Value</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="114"/>
<source>格式</source>
<translation>Format</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="121"/>
<source>例:dev%1</source>
<translation>Example: dev%1</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="126"/>
<source>起始值</source>
<translation>Start Value</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="140"/>
<source>输入选项值(每行一个)</source>
<translation>Enter Option Values (one per line)</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="173"/>
<location filename="kbdbatchdlg.cpp" line="206"/>
<location filename="kbdbatchdlg.cpp" line="232"/>
<source>该属性最多只能为%1个字符</source>
<translation>The property can have a maximum of %1 characters</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="221"/>
<source>询问</source>
<translation>Query</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="221"/>
<source>自定义内容和设置的内容行数不一致,请确认是否继续?</source>
<translation>The number of rows in the custom content does not match the set content, please confirm if you want to continue?</translation>
</message>
<message>
<location filename="kbdbatchdlg.cpp" line="306"/>
<source>消息</source>
<translation>Message</translation>
</message>
</context>
<context>
<name>KbdCSVReader</name>
<message>
<location filename="kbdcsvreader.cpp" line="33"/>
<location filename="kbdcsvreader.cpp" line="242"/>
<source>json文件打开不成功</source>
<translation>Failed to open JSON file</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="39"/>
<location filename="kbdcsvreader.cpp" line="112"/>
<location filename="kbdcsvreader.cpp" line="248"/>
<source>csv文件打开不成功</source>
<translation>Failed to open CSV file</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="44"/>
<location filename="kbdcsvreader.cpp" line="254"/>
<source>xlsx文件打开不成功!</source>
<translation>Failed to open XLSX file!</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="60"/>
<location filename="kbdcsvreader.cpp" line="132"/>
<location filename="kbdcsvreader.cpp" line="271"/>
<source>csv文件数据错误,有行数据大小小于2</source>
<translation>CSV file data error, some rows have less than 2 data elements</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="101"/>
<location filename="kbdcsvreader.cpp" line="346"/>
<source>临时文件保存失败%1</source>
<translation>Temporary file save failed %1</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="141"/>
<location filename="kbdcsvreader.cpp" line="160"/>
<source>子设备ID</source>
<translation>Sub-device ID</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="145"/>
<source>设备ID</source>
<translation>Device ID</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="164"/>
<source>属于的设备ID</source>
<translation>Belongs to Device ID</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="374"/>
<location filename="kbdcsvreader.cpp" line="639"/>
<source>数据项列数不够</source>
<translation>Not enough data item columns</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="405"/>
<location filename="kbdcsvreader.cpp" line="477"/>
<location filename="kbdcsvreader.cpp" line="667"/>
<source>无此表单%1</source>
<translation>No such form %1</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="449"/>
<location filename="kbdcsvreader.cpp" line="459"/>
<location filename="kbdcsvreader.cpp" line="502"/>
<location filename="kbdcsvreader.cpp" line="696"/>
<source>写错误%1:%2</source>
<translation>Write error %1: %2</translation>
</message>
<message>
<location filename="kbdcsvreader.cpp" line="708"/>
<source>保存CSV文件不成功%1</source>
<translation>Failed to save CSV file %1</translation>
</message>
</context>
<context>
<name>KbdCheckRole</name>
<message>
<location filename="kbdcheckrole.cpp" line="22"/>
<location filename="kbdcheckrole.cpp" line="111"/>
<source>模型为空!</source>
<translation>Model is empty!</translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="23"/>
<source>模型为空!
值:%1</source>
<oldsource>模型为空!%1,
值:%2</oldsource>
<translation>Model is empty!
Value: %1</translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="30"/>
<source>检查的数据尺寸有问题</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="31"/>
<source>检查的数据尺寸有问题%1,
值:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="44"/>
<source>不能为空%1,
值:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="46"/>
<location filename="kbdcheckrole.cpp" line="132"/>
<location filename="kbdcheckrole.cpp" line="208"/>
<source>不能为空</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="75"/>
<location filename="kbdcheckrole.cpp" line="164"/>
<location filename="kbdcheckrole.cpp" line="238"/>
<source>超出取值范围:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="76"/>
<source>超出取值范围%1,
值:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="87"/>
<location filename="kbdcheckrole.cpp" line="177"/>
<location filename="kbdcheckrole.cpp" line="249"/>
<source>有重复</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="88"/>
<source>有重复%1,
值:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="112"/>
<source>模型为空!
旧值:%1,
新值:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="119"/>
<source>检查的数据尺寸有问题!表名:%1,
旧值:%2,
新值:%3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="121"/>
<source>检查的数据尺寸有问题!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="133"/>
<source>不能为空%1,
旧值:%2,
新值:%3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="162"/>
<source>超出取值范围%1,
旧值:%2,
新值:%3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="175"/>
<source>有重复%1,
旧值:%2,
新值:%3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="209"/>
<source>不能为空%1</source>
<translation>Cannot be empty %1</translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="237"/>
<source>超出取值范围%1</source>
<translation>Out of value range %1</translation>
</message>
<message>
<location filename="kbdcheckrole.cpp" line="250"/>
<source>有重复%1</source>
<translation>Duplicate %1</translation>
</message>
</context>
<context>
<name>KbdExportImportLogic</name>
<message>
<location filename="kbdexportimportlogic.cpp" line="134"/>
<source>xml文件错误请检查xml文件格式是否正确</source>
<translation>XML file error, please check if the XML file format is correct!</translation>
</message>
</context>
<context>
<name>KbdFindPointWidget</name>
<message>
<location filename="CustomWidget/kbdfindpointwidget.cpp" line="79"/>
<source>路径</source>
<translation>Path</translation>
</message>
<message>
<location filename="CustomWidget/kbdfindpointwidget.cpp" line="89"/>
<source>输入过滤条件</source>
<translation>Enter filter conditions</translation>
</message>
<message>
<location filename="CustomWidget/kbdfindpointwidget.cpp" line="111"/>
<source>root</source>
<translation>root</translation>
</message>
</context>
<context>
<name>KbdInputDlg</name>
<message>
<location filename="kbdinputdlg.cpp" line="11"/>
<location filename="kbdinputdlg.cpp" line="36"/>
<source>自定义自增</source>
<translation>Custom Increment</translation>
</message>
<message>
<location filename="kbdinputdlg.cpp" line="13"/>
<location filename="kbdinputdlg.cpp" line="38"/>
<source>字符串格式(占位符%1)</source>
<translation>String format (placeholder %1)</translation>
</message>
<message>
<location filename="kbdinputdlg.cpp" line="14"/>
<location filename="kbdinputdlg.cpp" line="39"/>
<source>自增起始数字</source>
<translation>Increment start number</translation>
</message>
<message>
<location filename="kbdinputdlg.cpp" line="27"/>
<location filename="kbdinputdlg.cpp" line="54"/>
<source>示例:dev%1</source>
<translation>Example: dev%1</translation>
</message>
<message>
<location filename="kbdinputdlg.cpp" line="83"/>
<source>消息</source>
<translation>Message</translation>
</message>
<message>
<location filename="kbdinputdlg.cpp" line="83"/>
<source>字符串格式需要包含占位符%1</source>
<translation>String format must include placeholder %1</translation>
</message>
</context>
<context>
<name>KbdMsgContrl</name>
<message>
<location filename="kbdmsgcontrl.cpp" line="39"/>
<source>消息</source>
<translation>Message</translation>
</message>
</context>
<context>
<name>KbdPage</name>
<message>
<location filename="kbdpage.cpp" line="139"/>
<location filename="kbdpage.cpp" line="140"/>
<source>上一页</source>
<translation>Previous Page</translation>
</message>
<message>
<location filename="kbdpage.cpp" line="141"/>
<location filename="kbdpage.cpp" line="142"/>
<source>下一页</source>
<translation>Next Page</translation>
</message>
<message>
<location filename="kbdpage.cpp" line="188"/>
<source>当前总页数是范围是1-%1,%2是非法值</source>
<translation>The current total page range is 1-%1, %2 is an illegal value</translation>
</message>
<message>
<location filename="kbdpage.cpp" line="199"/>
<source>已到达首页</source>
<translation>Reached the first page</translation>
</message>
<message>
<location filename="kbdpage.cpp" line="210"/>
<source>已到达尾页</source>
<translation>Reached the last page</translation>
</message>
<message>
<location filename="kbdpage.cpp" line="218"/>
<source>消息</source>
<translation>Message</translation>
</message>
</context>
<context>
<name>KbdPasswordDlg</name>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="17"/>
<source>旧密码:</source>
<translation>Old Password:</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="18"/>
<source>请输入新密码:</source>
<translation>Please enter a new password:</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="19"/>
<source>请重新确认密码:</source>
<oldsource>请输入确认密码:</oldsource>
<translation type="unfinished">Please enter the confirm password:</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="102"/>
<source>两次输入的密码不一致</source>
<oldsource>新密码不允许为空</oldsource>
<translation type="unfinished">The new password cannot be empty</translation>
</message>
<message>
<source>确认密码不允许为空</source>
<translation type="vanished">The confirm password cannot be empty</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="102"/>
<source>两次输入的密码不一致</source>
<translation>The passwords do not match</translation>
</message>
<message>
<source>密码不允许包含空格</source>
<translation type="vanished">The password must not contain spaces</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="105"/>
<source>密码不允许为空</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="115"/>
<source>密码长度小于安全策略规定的长度:%1</source>
<translation>The password length is less than the security policy requires: %1</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="127"/>
<source>密码中的字符个数小于安全策略规定的%1个</source>
<translation>The number of characters in the password is less than the %1 required by the security policy</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="130"/>
<source>密码中的数字个数小于安全策略规定的%1个</source>
<translation>The number of digits in the password is less than the %1 required by the security policy</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="148"/>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="175"/>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="181"/>
<source>消息</source>
<translation>Message</translation>
</message>
<message>
<location filename="CustomWidget/kbdpassworddlg.cpp" line="181"/>
<source>旧密码错误</source>
<translation>The old password is incorrect</translation>
</message>
</context>
<context>
<name>KbdPropertyDlg</name>
<message>
<location filename="kbdpropertydlg.cpp" line="67"/>
<source>当前属性表未关联相应模型!</source>
<translation>The current property table is not associated with the corresponding model!</translation>
</message>
<message>
<location filename="kbdpropertydlg.cpp" line="94"/>
<source>写入数据库不成功</source>
<translation>Failed to write to the database</translation>
</message>
<message>
<location filename="kbdpropertydlg.cpp" line="101"/>
<source>错误</source>
<translation>Error</translation>
</message>
</context>
<context>
<name>KbdPropertyPanel</name>
<message>
<location filename="kbdpropertypanel.cpp" line="602"/>
<source>浏览属性</source>
<translation>Browse Properties</translation>
</message>
</context>
<context>
<name>KbdReplaceDlg</name>
<message>
<location filename="kbdreplacedlg.cpp" line="11"/>
<source>单元格内容替换</source>
<translation>Cell Content Replacement</translation>
</message>
<message>
<location filename="kbdreplacedlg.cpp" line="13"/>
<source>查找字符</source>
<translation>Find Characters</translation>
</message>
<message>
<location filename="kbdreplacedlg.cpp" line="14"/>
<source>替换字符</source>
<translation>Replace Characters</translation>
</message>
<message>
<location filename="kbdreplacedlg.cpp" line="59"/>
<source>消息</source>
<translation>Message</translation>
</message>
<message>
<location filename="kbdreplacedlg.cpp" line="59"/>
<source>查找内容不能为空</source>
<translation>The search content cannot be empty</translation>
</message>
</context>
<context>
<name>KbdSelectDevPointDlg</name>
<message>
<location filename="CustomWidget/kbdselectdevpointdlg.cpp" line="132"/>
<source>信息</source>
<translation>Information</translation>
</message>
<message>
<location filename="CustomWidget/kbdselectdevpointdlg.cpp" line="132"/>
<source>获取%1 信息失败!</source>
<translation>Failed to retrieve %1 information!</translation>
</message>
</context>
<context>
<name>KbdSelectPointDlg</name>
<message>
<location filename="CustomWidget/kbdselectpointdlg.cpp" line="57"/>
<source>已选中点</source>
<translation>Selected Points</translation>
</message>
</context>
<context>
<name>KbdSplitter</name>
<message>
<location filename="kbdsplitter.cpp" line="51"/>
<source>专业:</source>
<translation>Specialty:</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="64"/>
<location filename="kbdsplitter.cpp" line="93"/>
<source>添加记录</source>
<translation>Add Record</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="65"/>
<location filename="kbdsplitter.cpp" line="97"/>
<source>删除记录</source>
<translation>Delete Record</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="72"/>
<source>多选</source>
<translation>Multi-select</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="73"/>
<source>查询</source>
<translation>Query</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="94"/>
<source>修改记录</source>
<translation>Modify Record</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="95"/>
<source>复制记录</source>
<translation>Copy Record</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="100"/>
<source>Excel导出</source>
<translation>Export to Excel</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="101"/>
<source>Excel导入</source>
<translation>Import from Excel</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="104"/>
<source>请输入通道描述的关键字</source>
<translation>Please enter the keyword for the channel description</translation>
</message>
<message>
<source>所有</source>
<translation type="vanished">All</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="132"/>
<source>全选</source>
<translation>Select All</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="133"/>
<source>反选</source>
<translation>Invert Selection</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="173"/>
<location filename="kbdsplitter.cpp" line="178"/>
<location filename="kbdsplitter.cpp" line="184"/>
<source>消息</source>
<translation>Message</translation>
</message>
<message>
<location filename="kbdsplitter.cpp" line="178"/>
<source>此次修改失败,已启动回滚!</source>
<translation>The modification failed, a rollback has been initiated!</translation>
</message>
</context>
<context>
<name>KbdTable</name>
<message>
<location filename="kbdtable.cpp" line="143"/>
<source>查找替换</source>
<oldsource>%1 选中行 查找与替换</oldsource>
<translation>Find and Replace</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="258"/>
<location filename="kbdtable.cpp" line="261"/>
<location filename="kbdtable.cpp" line="268"/>
<location filename="kbdtable.cpp" line="325"/>
<location filename="kbdtable.cpp" line="328"/>
<location filename="kbdtable.cpp" line="332"/>
<location filename="kbdtable.cpp" line="349"/>
<location filename="kbdtable.cpp" line="356"/>
<location filename="kbdtable.cpp" line="367"/>
<location filename="kbdtable.cpp" line="536"/>
<location filename="kbdtable.cpp" line="550"/>
<location filename="kbdtable.cpp" line="558"/>
<location filename="kbdtable.cpp" line="564"/>
<location filename="kbdtable.cpp" line="598"/>
<location filename="kbdtable.cpp" line="615"/>
<location filename="kbdtable.cpp" line="623"/>
<location filename="kbdtable.cpp" line="629"/>
<location filename="kbdtable.cpp" line="654"/>
<location filename="kbdtable.cpp" line="688"/>
<location filename="kbdtable.cpp" line="691"/>
<location filename="kbdtable.cpp" line="695"/>
<location filename="kbdtable.cpp" line="718"/>
<location filename="kbdtable.cpp" line="723"/>
<location filename="kbdtable.cpp" line="726"/>
<location filename="kbdtable.cpp" line="739"/>
<location filename="kbdtable.cpp" line="750"/>
<location filename="kbdtable.cpp" line="758"/>
<location filename="kbdtable.cpp" line="762"/>
<location filename="kbdtable.cpp" line="765"/>
<location filename="kbdtable.cpp" line="786"/>
<location filename="kbdtable.cpp" line="808"/>
<source>消息</source>
<translation>Message</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="349"/>
<source>行越界</source>
<translation>Row out of bounds</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="356"/>
<source>列越界</source>
<translation>Column out of bounds</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="367"/>
<source>:数据错误</source>
<translation>Data error:</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="536"/>
<location filename="kbdtable.cpp" line="598"/>
<source>请先保存修改</source>
<translation>Please save changes first</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="550"/>
<location filename="kbdtable.cpp" line="615"/>
<source>该列不可编辑</source>
<translation>This column is not editable</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="558"/>
<location filename="kbdtable.cpp" line="623"/>
<source>该列是主键,是否仍然修改?</source>
<translation>This column is a primary key, do you still want to modify it?</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="564"/>
<location filename="kbdtable.cpp" line="629"/>
<source>该列是主键,不可编辑</source>
<translation>This column is a primary key and cannot be edited</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="296"/>
<location filename="kbdtable.cpp" line="297"/>
<source>开始执行自增菜单</source>
<translation>Start Executing Auto-increment Menu</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="141"/>
<source>批量修改</source>
<translation>Batch Modify</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="145"/>
<source>删除行</source>
<translation>Delete Row</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="227"/>
<location filename="kbdtable.cpp" line="228"/>
<source>开始执行批量修改</source>
<translation>Start Executing Batch Modify</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="258"/>
<location filename="kbdtable.cpp" line="325"/>
<location filename="kbdtable.cpp" line="688"/>
<location filename="kbdtable.cpp" line="805"/>
<source>提交事务失败!</source>
<translation>Transaction Submission Failed!</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="268"/>
<location filename="kbdtable.cpp" line="332"/>
<source>修改失败</source>
<translation>Modification Failed</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="654"/>
<source>确定删除数据?</source>
<translation>Are you sure you want to delete the data?</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="676"/>
<location filename="kbdtable.cpp" line="677"/>
<source>开始执行删除菜单</source>
<translation>Starting to execute the delete menu</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="691"/>
<source>开启事务失败!</source>
<translation>Failed to start transaction!</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="695"/>
<source>删除失败</source>
<translation>Deletion failed</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="711"/>
<source>保存文件</source>
<translation>Save File</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="723"/>
<source>导出失败</source>
<translation>Export Failed</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="726"/>
<source>导出成功</source>
<translation>Export Successful</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="739"/>
<source>导入操作会直接修改数据库,需确保数据正确有效,否则会导致配置错误!</source>
<translation>Importing will directly modify the database; ensure the data is correct and valid, otherwise it may cause configuration errors!</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="740"/>
<source>已知悉风险</source>
<translation>I acknowledge the risks</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="740"/>
<source>取消</source>
<translation>Cancel</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="743"/>
<source>打开文件</source>
<translation>Open File</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="750"/>
<source>文件打开失败!</source>
<translation>Failed to Open File!</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="762"/>
<source>导入成功</source>
<translation>Import Successful</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="765"/>
<source>控件未加载数据</source>
<translation>Control has not loaded data</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="788"/>
<source>表格内容未提交,是否提交到数据库?</source>
<translation>The table content has not been submitted, would you like to submit it to the database?</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="795"/>
<source>警告</source>
<translation>Warning</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="805"/>
<source>错误</source>
<translation>Error</translation>
</message>
<message>
<location filename="kbdtable.cpp" line="813"/>
<source>保存成功!</source>
<translation>Saved Successfully!</translation>
</message>
</context>
<context>
<name>KbdTableDataMgr</name>
<message>
<location filename="kbdtabledatamgr.cpp" line="289"/>
<source>本用户无编辑权限</source>
<translation>This user has no editing permissions</translation>
</message>
<message>
<location filename="kbdtabledatamgr.cpp" line="298"/>
<source>开启事务失败</source>
<translation>Failed to start transaction</translation>
</message>
<message>
<location filename="kbdtabledatamgr.cpp" line="786"/>
<source>系统退出,开始清理KbdTableDataMgr</source>
<translation>Exiting system, starting to clean up KbdTableDataMgr</translation>
</message>
</context>
<context>
<name>KbdTableModel</name>
<message>
<location filename="kbdtablemodel.cpp" line="751"/>
<source>非重写提交模式</source>
<translation>Non-overwriting commit mode</translation>
</message>
<message>
<location filename="kbdtablemodel.cpp" line="786"/>
<source>删除数据失败!</source>
<translation>Failed to delete data!</translation>
</message>
<message>
<location filename="kbdtablemodel.cpp" line="794"/>
<source>修改数据失败!</source>
<translation>Failed to modify data!</translation>
</message>
<message>
<location filename="kbdtablemodel.cpp" line="800"/>
<source>插入数据失败!</source>
<translation>Failed to insert data!</translation>
</message>
</context>
<context>
<name>KbdWaitPrgDlg</name>
<message>
<location filename="kbdwaitprgdlg.cpp" line="17"/>
<source>正在处理,请稍候....</source>
<translation>Please wait while processing...</translation>
</message>
</context>
<context>
<name>KbdWidget</name>
<message>
<location filename="kbdwidget.cpp" line="28"/>
<location filename="kbdwidget.cpp" line="33"/>
<location filename="kbdwidget.cpp" line="38"/>
<location filename="kbdwidget.cpp" line="44"/>
<source>消息</source>
<translation>Message</translation>
</message>
<message>
<location filename="kbdwidget.cpp" line="33"/>
<source>此次修改失败,已启动回滚!</source>
<translation>The modification failed, a rollback has been initiated!</translation>
</message>
<message>
<location filename="kbdwidget.cpp" line="38"/>
<source>回滚事务失败!</source>
<translation>Transaction rollback failed!</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="databasedirect.cpp" line="37"/>
<location filename="databasemodelsub.cpp" line="31"/>
<source>数据库链接打开失败:</source>
<translation>Failed to open database connection:</translation>
</message>
<message>
<location filename="databasedirect.cpp" line="254"/>
<location filename="databasemodelsub.cpp" line="233"/>
<source>当前数据库地址:</source>
<translation>Current database address:</translation>
</message>
<message>
<location filename="databasedirect.cpp" line="256"/>
<location filename="databasemodelsub.cpp" line="235"/>
<source> 数据库:</source>
<translation> Database:</translation>
</message>
<message>
<location filename="databasedirect.cpp" line="255"/>
<location filename="databasemodelsub.cpp" line="234"/>
<source> 用户:</source>
<translation> User:</translation>
</message>
<message>
<location filename="databasedirect.cpp" line="292"/>
<location filename="databasemodelsub.cpp" line="267"/>
<source>数据库链接已关闭!请重新打开软件</source>
<translation>The database connection has been closed! Please restart the software.</translation>
</message>
<message>
<location filename="databasedirect.cpp" line="310"/>
<location filename="databasedirect.cpp" line="311"/>
<source>重新打开链接</source>
<translation>Reopen connection</translation>
</message>
</context>
<context>
<name>QtBoolEdit</name>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="233"/>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="243"/>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="268"/>
<source>True</source>
<translation>True</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="243"/>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="268"/>
<source>False</source>
<translation>False</translation>
</message>
</context>
<context>
<name>QtBoolPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="1696"/>
<source>True</source>
<translation>True</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="1697"/>
<source>False</source>
<translation>False</translation>
</message>
</context>
<context>
<name>QtCharEdit</name>
<message>
<location filename="qtpropertybrowser/qteditorfactory.cpp" line="1700"/>
<source>Clear Char</source>
<translation>Clear Character</translation>
</message>
</context>
<context>
<name>QtColorEditWidget</name>
<message>
<location filename="qtpropertybrowser/qteditorfactory.cpp" line="2314"/>
<source>...</source>
<translation>Choose Color...</translation>
</message>
</context>
<context>
<name>QtColorPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6421"/>
<source>Red</source>
<translation>Red</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6429"/>
<source>Green</source>
<translation>Green</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6437"/>
<source>Blue</source>
<translation>Blue</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6445"/>
<source>Alpha</source>
<translation>Alpha</translation>
</message>
</context>
<context>
<name>QtCursorDatabase</name>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="58"/>
<source>Arrow</source>
<translation>Arrow</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="60"/>
<source>Up Arrow</source>
<translation>Up Arrow</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="62"/>
<source>Cross</source>
<translation>Cross</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="64"/>
<source>Wait</source>
<translation>Wait</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="66"/>
<source>IBeam</source>
<translation>IBeam</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="68"/>
<source>Size Vertical</source>
<translation>Size Vertical</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="70"/>
<source>Size Horizontal</source>
<translation>Size Horizontal</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="72"/>
<source>Size Backslash</source>
<translation>Size Backslash</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="74"/>
<source>Size Slash</source>
<translation>Size Slash</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="76"/>
<source>Size All</source>
<translation>Size All</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="78"/>
<source>Blank</source>
<translation>Blank</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="80"/>
<source>Split Vertical</source>
<translation>Split Vertical</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="82"/>
<source>Split Horizontal</source>
<translation>Split Horizontal</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="84"/>
<source>Pointing Hand</source>
<translation>Pointing Hand</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="86"/>
<source>Forbidden</source>
<translation>Forbidden</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="88"/>
<source>Open Hand</source>
<translation>Open Hand</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="90"/>
<source>Closed Hand</source>
<translation>Closed Hand</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="92"/>
<source>What&apos;s This</source>
<translation>What&apos;s This</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="94"/>
<source>Busy</source>
<translation>Busy</translation>
</message>
</context>
<context>
<name>QtFontEditWidget</name>
<message>
<location filename="qtpropertybrowser/qteditorfactory.cpp" line="2523"/>
<source>...</source>
<translation>...</translation>
</message>
<message>
<location filename="qtpropertybrowser/qteditorfactory.cpp" line="2543"/>
<source>Select Font</source>
<translation>Select Font</translation>
</message>
</context>
<context>
<name>QtFontPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6095"/>
<source>Family</source>
<translation>Family</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6108"/>
<source>Point Size</source>
<translation>Point Size</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6116"/>
<source>Bold</source>
<translation>Bold</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6123"/>
<source>Italic</source>
<translation>Italic</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6130"/>
<source>Underline</source>
<translation>Underline</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6137"/>
<source>Strikeout</source>
<translation>Strikeout</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="6144"/>
<source>Kerning</source>
<translation>Kerning</translation>
</message>
</context>
<context>
<name>QtKeySequenceEdit</name>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="328"/>
<source>Clear Shortcut</source>
<translation>Clear Shortcut</translation>
</message>
</context>
<context>
<name>QtLocalePropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="2611"/>
<source>%1, %2</source>
<translation>%1, %2</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="2664"/>
<source>Language</source>
<translation>Language</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="2672"/>
<source>Country</source>
<translation>Country</translation>
</message>
</context>
<context>
<name>QtPointFPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3081"/>
<source>(%1, %2)</source>
<translation>(%1, %2)</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3152"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3160"/>
<source>Y</source>
<translation>Y</translation>
</message>
</context>
<context>
<name>QtPointPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="2841"/>
<source>(%1, %2)</source>
<translation>(%1, %2)</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="2878"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="2885"/>
<source>Y</source>
<translation>Y</translation>
</message>
</context>
<context>
<name>QtPropertyBrowserUtils</name>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="187"/>
<source>[%1, %2, %3] (%4)</source>
<translation>[%1, %2, %3] (%4)</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertybrowserutils.cpp" line="214"/>
<source>[%1, %2]</source>
<translation>[%1, %2]</translation>
</message>
</context>
<context>
<name>QtRectFPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4586"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4742"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4750"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4758"/>
<source>Width</source>
<translation>Width</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4767"/>
<source>Height</source>
<translation>Height</translation>
</message>
</context>
<context>
<name>QtRectPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4156"/>
<source>[(%1, %2), %3 x %4]</source>
<translation>[(%1, %2), %3 x %4]</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4276"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4283"/>
<source>Y</source>
<translation>Y</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4290"/>
<source>Width</source>
<translation>Width</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="4298"/>
<source>Height</source>
<translation>Height</translation>
</message>
</context>
<context>
<name>QtSizeFPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3764"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3894"/>
<source>Width</source>
<translation>Width</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3903"/>
<source>Height</source>
<translation>Height</translation>
</message>
</context>
<context>
<name>QtSizePolicyPropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="5607"/>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="5608"/>
<source>&lt;Invalid&gt;</source>
<translation>&lt;Invalid&gt;</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="5609"/>
<source>[%1, %2, %3, %4]</source>
<translation>[%1, %2, %3, %4]</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="5654"/>
<source>Horizontal Policy</source>
<translation>Horizontal Policy</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="5663"/>
<source>Vertical Policy</source>
<translation>Vertical Policy</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="5672"/>
<source>Horizontal Stretch</source>
<translation>Horizontal Stretch</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="5680"/>
<source>Vertical Stretch</source>
<translation>Vertical Stretch</translation>
</message>
</context>
<context>
<name>QtSizePropertyManager</name>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3400"/>
<source>%1 x %2</source>
<translation>%1 x %2</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3496"/>
<source>Width</source>
<translation>Width</translation>
</message>
<message>
<location filename="qtpropertybrowser/qtpropertymanager.cpp" line="3504"/>
<source>Height</source>
<translation>Height</translation>
</message>
</context>
<context>
<name>QtTreePropertyBrowser</name>
<message>
<location filename="qtpropertybrowser/qttreepropertybrowser.cpp" line="482"/>
<source>属性</source>
<translation>Property</translation>
</message>
<message>
<location filename="qtpropertybrowser/qttreepropertybrowser.cpp" line="483"/>
<source></source>
<translation>Value</translation>
</message>
</context>
<context>
<name>TableXmlRes</name>
<message>
<location filename="tablexmlres.cpp" line="7"/>
<source>车站编号</source>
<translation>Station Number</translation>
</message>
<message>
<location filename="tablexmlres.cpp" line="8"/>
<source>描述</source>
<translation>Description</translation>
</message>
</context>
<context>
<name>Worker</name>
<message>
<location filename="worker.cpp" line="54"/>
<source>调用%1存储过程失败!参数:%2</source>
<translation>Failed to call the %1 stored procedure! Parameters: %2</translation>
</message>
<message>
<location filename="worker.cpp" line="62"/>
<location filename="worker.cpp" line="103"/>
<location filename="worker.cpp" line="144"/>
<location filename="worker.cpp" line="433"/>
<location filename="worker.cpp" line="1177"/>
<source>提交事务失败!启动回滚</source>
<translation>Transaction submission failed! Initiating rollback</translation>
</message>
<message>
<location filename="worker.cpp" line="97"/>
<location filename="worker.cpp" line="138"/>
<source>存储过程实例化设备组失败!%1</source>
<translation>Failed to instantiate the device group in the stored procedure! %1</translation>
</message>
<message>
<location filename="worker.cpp" line="202"/>
<source>套件数据格式不对!</source>
<translation>The suite data format is incorrect!</translation>
</message>
<message>
<location filename="worker.cpp" line="207"/>
<location filename="worker.cpp" line="907"/>
<source>文件格式不对!</source>
<translation>The file format is incorrect!</translation>
</message>
<message>
<location filename="worker.cpp" line="213"/>
<source>%1文件打开不成功!</source>
<translation>Failed to open %1 file!</translation>
</message>
<message>
<location filename="worker.cpp" line="218"/>
<source>未选择导入的RTU!</source>
<translation>No RTU selected for import!</translation>
</message>
<message>
<location filename="worker.cpp" line="231"/>
<source>开始导入数据CSV:%1 RTU:%2</source>
<translation>Starting data import from CSV: %1 RTU: %2</translation>
</message>
<message>
<location filename="worker.cpp" line="236"/>
<location filename="worker.cpp" line="241"/>
<location filename="worker.cpp" line="246"/>
<location filename="worker.cpp" line="251"/>
<location filename="worker.cpp" line="256"/>
<location filename="worker.cpp" line="261"/>
<location filename="worker.cpp" line="266"/>
<source>清空参数表%错误!</source>
<translation>Error clearing parameter table %!</translation>
</message>
<message>
<location filename="worker.cpp" line="282"/>
<source>设备</source>
<translation>Device</translation>
</message>
<message>
<location filename="worker.cpp" line="289"/>
<location filename="worker.cpp" line="1575"/>
<source>累积量</source>
<translation>Accumulative Quantity</translation>
</message>
<message>
<location filename="worker.cpp" line="296"/>
<location filename="worker.cpp" line="1578"/>
<source>模拟量</source>
<translation>Analog Quantity</translation>
</message>
<message>
<location filename="worker.cpp" line="303"/>
<location filename="worker.cpp" line="1581"/>
<source>数字量</source>
<translation>Digital Quantity</translation>
</message>
<message>
<location filename="worker.cpp" line="310"/>
<location filename="worker.cpp" line="1587"/>
<source>数字量控制</source>
<translation>Digital Quantity Control</translation>
</message>
<message>
<location filename="worker.cpp" line="317"/>
<location filename="worker.cpp" line="1895"/>
<source>保护定值</source>
<translation>Protection Setting</translation>
</message>
<message>
<location filename="worker.cpp" line="339"/>
<location filename="worker.cpp" line="1423"/>
<source>导入失败:数据库导入失败!</source>
<translation>Import Failed: Database Import Failed!</translation>
</message>
<message>
<location filename="worker.cpp" line="357"/>
<source>未检测到任何设备模板</source>
<translation>No device templates detected</translation>
</message>
<message>
<location filename="worker.cpp" line="381"/>
<source>调用存储过程失败!</source>
<translation>Stored Procedure Call Failed!</translation>
</message>
<message>
<location filename="worker.cpp" line="394"/>
<location filename="worker.cpp" line="983"/>
<location filename="worker.cpp" line="1661"/>
<source>导入失败!事务已回滚!原因:</source>
<translation>Import Failed! Transaction has been rolled back! Reason:</translation>
</message>
<message>
<location filename="worker.cpp" line="400"/>
<location filename="worker.cpp" line="986"/>
<location filename="worker.cpp" line="1664"/>
<source>导入失败!原因:事务开启失败</source>
<translation>Import Failed! Reason: Failed to start transaction</translation>
</message>
<message>
<location filename="worker.cpp" line="402"/>
<source>导入结束CSV:%1 </source>
<translation>Import Completed CSV: %1 </translation>
</message>
<message>
<location filename="worker.cpp" line="425"/>
<source>执行SQL语句失败</source>
<translation>SQL Statement Execution Failed</translation>
</message>
<message>
<location filename="worker.cpp" line="747"/>
<source>创建设备出错</source>
<translation>Error creating device</translation>
</message>
<message>
<location filename="worker.cpp" line="755"/>
<source>实例化失败!</source>
<translation>Instantiation failed!</translation>
</message>
<message>
<location filename="worker.cpp" line="760"/>
<source>批量处理错误!</source>
<translation>Batch processing error!</translation>
</message>
<message>
<location filename="worker.cpp" line="764"/>
<source>提交事务失败,已回滚</source>
<translation>Transaction submission failed, has been rolled back</translation>
</message>
<message>
<location filename="worker.cpp" line="770"/>
<source>实例化成功</source>
<translation>Instantiation successful</translation>
</message>
<message>
<location filename="worker.cpp" line="805"/>
<source>关联前置设备成功!</source>
<translation>Successfully associated front-end device!</translation>
</message>
<message>
<location filename="worker.cpp" line="820"/>
<location filename="worker.cpp" line="836"/>
<location filename="worker.cpp" line="851"/>
<location filename="worker.cpp" line="866"/>
<location filename="worker.cpp" line="881"/>
<source>缺少配置文件%1</source>
<translation>Missing configuration file %1</translation>
</message>
<message>
<location filename="worker.cpp" line="895"/>
<source>文件写入不成功,导出失败!</source>
<translation>File write failed, export failed!</translation>
</message>
<message>
<location filename="worker.cpp" line="899"/>
<source>导出成功!文件保存在:%1</source>
<translation>Export successful! File saved in: %1</translation>
</message>
<message>
<location filename="worker.cpp" line="913"/>
<location filename="worker.cpp" line="1616"/>
<source>文件打开不成功!</source>
<translation>Failed to open file!</translation>
</message>
<message>
<location filename="worker.cpp" line="924"/>
<source>缺少必要的配置文件!</source>
<translation>Missing required configuration file!</translation>
</message>
<message>
<location filename="worker.cpp" line="941"/>
<location filename="worker.cpp" line="946"/>
<location filename="worker.cpp" line="951"/>
<location filename="worker.cpp" line="956"/>
<location filename="worker.cpp" line="961"/>
<source>数据库操作:清空表格失败!</source>
<translation>Database operation: Failed to clear table!</translation>
</message>
<message>
<location filename="worker.cpp" line="991"/>
<source>导入成功!</source>
<translation>Import successful!</translation>
</message>
<message>
<location filename="worker.cpp" line="999"/>
<location filename="worker.cpp" line="1472"/>
<source>关联失败!
后台设备与前置设备数量不一致</source>
<oldsource>关联失败!
后台设备与前置设备数量不一致</oldsource>
<translation type="unfinished">Association failed!
The number of backend devices does not match the front-end devices</translation>
</message>
<message>
<location filename="worker.cpp" line="1015"/>
<location filename="worker.cpp" line="1487"/>
<source>关联失败!,失败设备%1</source>
<translation>Association failed! Failed device %1</translation>
</message>
<message>
<location filename="worker.cpp" line="1020"/>
<location filename="worker.cpp" line="1492"/>
<source>关联失败!启动回滚,失败设备%1</source>
<translation>Association failed! Initiating rollback, failed device %1</translation>
</message>
<message>
<location filename="worker.cpp" line="1040"/>
<source>关联成功!</source>
<translation>Association successful!</translation>
</message>
<message>
<location filename="worker.cpp" line="1064"/>
<source>关联失败!失败设备组:%1</source>
<translation>Association failed! Failed device group: %1</translation>
</message>
<message>
<location filename="worker.cpp" line="1067"/>
<source>关联失败!原因:提交事务失败!启动回滚</source>
<translation>Association failed! Reason: Transaction submission failed! Initiating rollback</translation>
</message>
<message>
<location filename="worker.cpp" line="1079"/>
<source>关联完毕!</source>
<translation>Association complete!</translation>
</message>
<message>
<location filename="worker.cpp" line="1096"/>
<source>批量实例化设备组数据错误</source>
<translation>Batch instantiation of device group data error</translation>
</message>
<message>
<location filename="worker.cpp" line="1128"/>
<source>数据库链接出错</source>
<translation>Database connection error</translation>
</message>
<message>
<location filename="worker.cpp" line="1134"/>
<source>不存在前置设备%1</source>
<translation>Front-end device %1 does not exist</translation>
</message>
<message>
<location filename="worker.cpp" line="1374"/>
<source>%1 中的表的列数和描述数量不一致!</source>
<translation>The number of columns in the %1 table does not match the number of descriptions!</translation>
</message>
<message>
<location filename="worker.cpp" line="1379"/>
<source>获取%1 信息失败!</source>
<translation>Failed to retrieve %1 information!</translation>
</message>
<message>
<location filename="worker.cpp" line="1413"/>
<source>导入失败:没有%1表!</source>
<translation>Import failed: No %1 table!</translation>
</message>
<message>
<location filename="worker.cpp" line="1452"/>
<source>关联失败!数据库链接错误!</source>
<translation>Association failed! Database connection error!</translation>
</message>
<message>
<location filename="worker.cpp" line="1456"/>
<source>关联失败!不存在相同名称的前置设备%1,请手动关联!</source>
<translation>Association failed! There is no front-end device with the same name %1, please associate manually!</translation>
</message>
<message>
<location filename="worker.cpp" line="1460"/>
<source>关联失败!存在多个相同名称的前置设备%1,请手动关联</source>
<translation>Association failed! There are multiple front-end devices with the same name %1, please associate manually</translation>
</message>
<message>
<location filename="worker.cpp" line="1527"/>
<source>错误:没有%1表!</source>
<translation>Error: No %1 table!</translation>
</message>
<message>
<location filename="worker.cpp" line="1531"/>
<source>错误:没有此列%1</source>
<translation>Error: No such column %1</translation>
</message>
<message>
<location filename="worker.cpp" line="1548"/>
<source>生成前置模板模型失败!</source>
<translation>Failed to generate front-end template model!</translation>
</message>
<message>
<location filename="worker.cpp" line="1562"/>
<source>删除前置模板%1失败</source>
<translation>Failed to delete front-end template %1</translation>
</message>
<message>
<location filename="worker.cpp" line="1584"/>
<source>模拟量控制</source>
<translation>Analog Control</translation>
</message>
<message>
<location filename="worker.cpp" line="1728"/>
<source>excel文件中没有%1表</source>
<translation>The excel file does not contain a %1 sheet</translation>
</message>
<message>
<location filename="worker.cpp" line="1732"/>
<location filename="worker.cpp" line="1740"/>
<source>表格%1中没有%2列</source>
<translation>The %1 sheet does not contain a %2 column</translation>
</message>
<message>
<location filename="worker.cpp" line="1736"/>
<source>设备模板名为空!</source>
<translation>The device template name is empty!</translation>
</message>
<message>
<location filename="worker.cpp" line="1775"/>
<source>存在同名模板%1,无法导入</source>
<translation>A template with the same name %1 exists, cannot import</translation>
</message>
<message>
<location filename="worker.cpp" line="1779"/>
<source>写入TAG_NAME失败</source>
<translation>Failed to write TAG_NAME</translation>
</message>
<message>
<location filename="worker.cpp" line="1782"/>
<source>写入设备描述失败</source>
<translation>Failed to write device description</translation>
</message>
<message>
<location filename="worker.cpp" line="1868"/>
<source>前置设备模板</source>
<translation>Front-end device template</translation>
</message>
<message>
<location filename="worker.cpp" line="1871"/>
<source>累积量模板点</source>
<translation>Accumulative quantity template point</translation>
</message>
<message>
<location filename="worker.cpp" line="1874"/>
<source>模拟量模板点</source>
<translation>Analog quantity template point</translation>
</message>
<message>
<location filename="worker.cpp" line="1877"/>
<source>数字量模板点</source>
<translation>Digital quantity template point</translation>
</message>
<message>
<location filename="worker.cpp" line="1880"/>
<source>混合量模板点</source>
<translation>Mixed quantity template point</translation>
</message>
<message>
<location filename="worker.cpp" line="1883"/>
<source>模拟量控制点</source>
<translation>Analog control point</translation>
</message>
<message>
<location filename="worker.cpp" line="1886"/>
<source>数字量控制点</source>
<translation>Digital Control Point</translation>
</message>
<message>
<location filename="worker.cpp" line="1889"/>
<source>混合量控制点</source>
<translation>Mixed Quantity Control Point</translation>
</message>
<message>
<location filename="worker.cpp" line="1892"/>
<source>数据块</source>
<translation>Data Block</translation>
</message>
<message>
<location filename="worker.cpp" line="2195"/>
<location filename="worker.cpp" line="2254"/>
<location filename="worker.cpp" line="2312"/>
<location filename="worker.cpp" line="2371"/>
<source>间隔信号</source>
<translation>Interval Signal</translation>
</message>
</context>
<context>
<name>kbdDevInstWidget</name>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="29"/>
<source>专业</source>
<translation>Professional</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="45"/>
<source>多选</source>
<translation>Multi-select</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="46"/>
<source>查询</source>
<translation>Query</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="79"/>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="212"/>
<source>全选</source>
<translation>Select All</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="79"/>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="213"/>
<source>反选</source>
<translation>Invert Selection</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="195"/>
<source>显示位置</source>
<translation>Show Location</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="201"/>
<source>显示设备组</source>
<translation>Show Device Group</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="207"/>
<source>显示设备</source>
<translation>Show Device</translation>
</message>
</context>
<context>
<name>kbdDevPointWidget</name>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="371"/>
<source>确定</source>
<translation>OK</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="372"/>
<source>点类型</source>
<translation>Point Type</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="374"/>
<source>点值</source>
<translation>Point Value</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="375"/>
<source>点状态</source>
<translation>Point Status</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="387"/>
<source>标签</source>
<translation>Label</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="409"/>
<source>模拟量</source>
<translation>Analog Quantity</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="410"/>
<source>数字量</source>
<translation>Digital Quantity</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="411"/>
<source>累积量</source>
<translation>Accumulative Quantity</translation>
</message>
<message>
<location filename="CustomWidget/kbddevinstwidget.cpp" line="412"/>
<source>混合量</source>
<translation>Mixed Quantity</translation>
</message>
</context>
<context>
<name>kbdSearchWidget</name>
<message>
<location filename="CustomWidget/kbdsearchwidget.cpp" line="8"/>
<source>搜索</source>
<translation>Search</translation>
</message>
<message>
<location filename="CustomWidget/kbdsearchwidget.cpp" line="9"/>
<source>清除</source>
<translation>Clear</translation>
</message>
<message>
<location filename="CustomWidget/kbdsearchwidget.cpp" line="17"/>
<source>位置、设备组或设备描述关键字</source>
<translation>Keywords for location, device group, or device description</translation>
</message>
</context>
<context>
<name>kbdXlsxRead</name>
<message>
<location filename="kbdxlsxread.cpp" line="15"/>
<source>打开失败:</source>
<translation>Failed to open:</translation>
</message>
</context>
<context>
<name>kbdtableproperty</name>
<message>
<location filename="kbdtableproperty.cpp" line="85"/>
<location filename="kbdtableproperty.cpp" line="92"/>
<source>修改失败</source>
<translation>Modification Failed</translation>
</message>
<message>
<location filename="kbdtableproperty.cpp" line="94"/>
<source>修改成功</source>
<translation>Modification Successful</translation>
</message>
</context>
</TS>