1926 lines
72 KiB
TypeScript
Raw Normal View History

2025-03-20 17:30:43 +08:00
<?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>