const CateoryObj = {
	'Common': '常用命令',
	'System': '系統資源',
	'Event': '事件',
	'Show': '顯示',
	'Wifi': 'Wi-Fi',
	'IoT': '物聯網',
	'IoT_OneNet_WeChat': '微信小程序',
	'IoT_OneNet': 'OneNet',
	'IoT_Blynk': 'Blynk',
	'IoT_TinyWebIO': 'TinyWebIO',
	'IoT_MQTT': 'MQTT',
	'Music': '音樂',
	'Pin': '腳位',
	'Extend': '擴展',
	'Neopixel': 'Neopixel',
	'Bluebit': 'Bluebit',
	'Sensor': '通用傳感器',
	'Weather': '天氣',
	'Logic': '邏輯',
	'Loop': '循環',
	'Math': '數學',
	'Text': '文本',
	'Tuple': '元組',
	'Dictionary': '字典',
	'List': '列表',
	'Variables': '變量',
	'Functions': '函數',
	'Advanced': '高級',
	'Set': '集合',
	'File': '文件',
	'IoTMessage': '開',
	'Network': '網絡',
	'UART': '串口',
	'Audio': '音頻',
	'Radio': '無綫廣播',
	'Bluetooth': '藍牙',
	'Box': 'AI交互實驗箱',
	'Accelerometer': '加速度計',
	'Button': '按鍵',
	'Compass': '指南針',
	'Image': '圖形',
	'Light': '彩燈',
	'LCD': 'OLCD屏',
	'AI_camera': '攝像頭',
	'AI_LCD': 'LCD屏',
	'AI': 'AI應用',
	'AI_face': '人臉檢測',
	'AI_20classid': '20類識別',
	'AI_number': '數字識別',
	'AI_color': '顏色追蹤'
};

const LanguageObj = {
	'new': '新建',
	'save': '保存',
	'open': '打開'
};

const TOOLBOX = {
	'new': {
		'title': '新建',
		'description': '新建空白項目'
	},
	'savePyCode': {
		'title': '保存代碼',
		'description': '保存Python代碼到本地計算機'
	},
	'save': {
		'title': '保存圖形',
		'description': '保存圖形化代碼到本地計算機'
	},
	'load': {
		'title': '打開項目',
		'description': '從本地計算機讀取項目'
	},
	'example': {
		'title': '示例程序',
		'description': '打開軟件自帶示例'
	},
	'blockly': {
		'title': '代碼模式',
		'description': '在圖形模式和代碼模式之間切換'
	},
	'restore': {
		'title': '燒錄固件',
		'description': '清除所有數據，燒錄新的固件'
	},
	'updateMicrobit': {
		'title': '更新固件',
		'description': '更新 micro:bit 固件'
	},
	'read': {
		'title': '讀出代碼',
		'description': '從教科板讀出上壹次刷入的代碼'
	},
	'run': {
		'title': '調試代碼',
		'description': '實時調試代碼，不向教科板寫入任何內容'
	},
	'flash': {
		'title': '刷入運行',
		'description': '將Python代碼與圖形化代碼同時下載到教科板，並觸發教科板重啟'
	},
	'flashOnlyCode': {
		'title': '只刷代碼',
		'description': '只下載Python代碼，不下載圖形化代碼'
	},
	'flashCustom': {
		'title': '刷入並重命名',
		'description': '下載Python代碼，並以自定義文件名來命名'
	},
	'chart': {
		'title': '圖表',
		'description': '打開圖表窗體'
	},
	'filemanager': {
		'title': '文件管理',
		'description': '打開板載文件管理窗體'
	},
	'extend': {
		'title': '插件管理',
		'description': '添加自定義插件'
	},
	'login': {
		'login': '登錄',
		'logout': '註銷'
	},
	'help': {
		'title': '幫助'
	},
	'update': {
		'title': '檢查更新',
		'description': '檢查是否存在新的軟件版本'
	},
	'helpDoc': {
		'title': '幫助文檔',
		'description': '在新窗口打開軟件幫助文檔',
		'lib': '查看庫文件',
		'libdesc': '查看CocoRobo.py源碼說明'
	},
	'downloadHex': {
		'title': '下載Hex',
		'description': '下載Hex文件，再拷貝到micro:bit板'
	},
	'sim': {
		'title': '仿真',
		'description': '在micro:bit仿真界面上運行程序'
	},
	'microbitDriver': {
		'title': 'micro:bit USB 驅動'
	},
	'connect': '連接串口',
	'connect-span': '自動連接',
	'term-break': '中斷',
	'term-reboot': '重啟',
	'term-reset': '重置',
	'CocoRobo': '教科板',
	'CocoRobobox': 'AI交互實驗箱',
	'microbit': 'micro:bit'
};

const CONFIG = {
	'translate': {
		'code_snippets': {
			'title': '代碼片段',
			'description': "代碼片段是在自己的程序中重用的壹小段代碼。是微小的python程序中最為常用的小段代碼。",
			'instructions': "選擇下面的代碼片段，或者輸入代碼片段的觸發器，然後點擊TAB鍵。",
			'trigger_heading': '名稱',
			'description_heading': '描述',
			'docs': '創建註釋來描述代碼',
			'wh': '需要創建循環代碼',
			'with': '使用想要使用的對象來執行壹些操作。',
			'cl': '創建一個新類，可以定義新對象以及其屬性。',
			'def': '定義一個函數，可設置需要的參數，並可選地添加一個描述。',
			'if': '判定某些條件是真的，那就執行代碼。',
			'ei': '判定其他條件是真的，那就執行代碼。',
			'el': '如果是其他的情況，那就執行這裏的代碼。',
			'for': '遍歷所有的內容，當然可以對相應的內容做些操作。',
			'try': '嘗試執行代碼，並捕獲代碼發生的異常或錯誤。'
		},
		'share': {
			'title': '分享代碼',
			'instructions': '使用密碼和可選提示(幫助您記住密碼)，以安全地創建一個鏈接，以便與他人共享代碼。',
			'passphrase': '密碼: ',
			'hint': '密碼提示: ',
			'button': '創建鏈接',
			'description': '這個URL指向您的代碼:',
			'shortener': '這是您的短鏈接:'
		},
		'decrypt': {
			'title': '解密源代碼',
			'instructions': '輸入密碼來解密源代碼。',
			'passphrase': '密碼: ',
			'button': '解密'
		},
		'alerts': {
			'download': '建議使用使用Firefox或Chrome，Safari中將被下載為一個未命名的文件。請將其重命名為以.hex結尾的文件',
			'save': '建議使用使用Firefox或Chrome，Safari中將被下載為一個未命名的文件。請將其重命名為以.py結尾的文件',
			'length': '代碼長度過長，已超過內存限制',
			'snippets': '當啟用了"可視化編輯"時，"代碼片段"就會被禁用'
		},
		'confirms': {
			'quit': "有未保存的代碼，確定要退出？",
			'blocks': "有未保存的代碼，使用“可視化編輯”會改變代碼，可能會造成代碼丟失。妳想繼續嗎？"
		},
		'code': {
			'start': ""
		},
		'drop': {
			'python': '從Python文件中提取',
			'cloud': '從雲端項目文件中提取',
			'xml': '從xml文件中提取'
		},
		'messagebar': {
			'title': '這個編輯器已經過時',
			'link': '點擊這裏',
			'instructions': '打開最新版本',
			'close': '關閉'
		},
		'load': {
			'title': '加載腳本',
			'titleXml': '加載腳本或xml文件',
			'titleblockXml': '加載項目：模組(*.xml) / 代碼(*.py)',
			'instructions': '拖拽並打開py文件',
			'blockXml': '打開xml文件',
			'submit': '加載',
			'toggle-drop': '或拖拽一個文件',
			'toggle-file': '或選擇一個文件'
		},
		'restore': {
			'title': '燒錄固件：選擇一個固件文件(*.bin)',
			'firmware_1': '教科板官方固件(' + OFFICE_HARDWARD_DATE + ', ' + OFFICE_HARDWARD_VERSION + ')',
			'firmware_box': '人工智能交互實驗箱固件(' + CocoRoboBOX_HARDWARD_DATE + ', ' + CocoRoboBOX_HARDWARD_VERSION + ')',
			'firmware_m4s': '模擬 micro:bit 連 Scratch 3 協議固件（測試版）',
			'firmware_2': '模擬 PicoBoard 連 Scratch 協議固件',
			'firmware_3': '自定義固件',
			'button': '開始燒錄',
			'erase': '擦除固件',
			'erase_title': '如果多次燒錄不成功，可以嘗試先擦除固件再燒錄',
			'suggest_restore': '檢測到板載固件版本過低，建議更新到官方最新固件，是否立即更新？',
			'suggest_esp32': '未檢測到MicroPython運行環境，建議更新到官方最新固件，是否立即更新？'
		},
		'update_microbit': {
			'title': '更新 Micro:bit 固件',
			'step_1': '將 hex文件 下載到您的計算機。',
			'step_2': '然後，在卸下電池組、並將USB導線連接到計算機的情況下，按住micro:bit背面的重置按鈕，然後將USB導線插入設備。您應該看到一個名為 MAINTENANCE 的驅動器出現在文件管理器中。',
			'step_3': '將您從本頁下載的 hex文件 拖放到 micro:bit 上，然後等待設備背面的黃色LED停止閃爍。升級完成後，micro:bit將自動重置，從計算機中彈出並以正常 MICROBIT 驅動器模式重新出現。',
			'download': '點擊下載最新 micro:bit 固件'
		},
		'chart': {
			'title': '圖表',
			'viewFullscreen': '全屏',
			'printChart': '退出 全屏',
			'downloadPNG': '下載 PNG 圖片',
			'downloadJPEG': '下載 JPEG 圖片',
			'downloadPDF': '下載 PDF 文檔',
			'downloadSVG': '下載 SVG 矢量圖',
			'downloadCSV': '下載 CSV 文件',
			'downloadXLS': '下載 XLS 文件',
			'viewData': '',
			'openInCloud': ''
		},
		'filemanager': {
			'title': '文件管理',
			'download-file': '下載到電腦',
			'rename-file': '重命名文件',
			'delete-file': '刪除文件',
			'upload-file': '上傳到板',
			'load-file': '打開文件',
			'run-file': '運行文件',
			'run_file_limit': '只能運行 *.py 文件',
			'new-folder': '新建文件夾',
			'delete-folder': '刪除文件夾'
		},
		'example': {
			'title': '示例程序'
		},
		'extend': {
			'title': '插件管理'
		},
		'login': {
			'title': '用戶登錄',
			'pass-login': '密碼登錄',
			'code-login': '短信登錄',
			'ok': '確定',
			'cancel': '取消',
			'mobile': '手機號：',
			'pass': '　密碼：',
			'code': '驗證碼：',
			'getcode': '獲取驗證碼',
			'alert_mobile': '請輸入正確的手機號碼。目前僅支持中國大陸以+86開頭的11位手機號，或者香港地區以+852開頭的8位手機號。',
			'alert_pass': '密碼不能為空',
			'alert_code': '驗證碼不能為空',
			'send_code_ok': '驗證碼發送成功'
		},
		'update': {
			'message': '發現新版本 {}',
			'download': '下載最新版本'
		},
		'interface': {
			'clear_all': '本操作將清除編程區內所有模組，是否繼續？',
			'code_mode': '代碼模式',
			'block_mode': '圖形模式',
			'on_code_mode': '在代碼模式下，不能保存模組代碼。',
			'on_block_mode': '在圖形化編程狀態下，代碼編輯器是只讀的。',
			'custom_bin': '請選擇自定義固件',
			'no_board': '未檢測到教科板串口連接',
			'empty_code': '刷入空代碼，替代原有的代碼嗎？',
			'xml_too_big': '圖形化代碼大小已超過100KB，無法寫入；只能寫入Python代碼部分，是否繼續？',
			'no_connect': '未連接到互聯網！',
			'no_update': '當前軟件已是最新版本！',
			'enter_filename': '請輸入文件名：',
			'filename_err': '文件名非法，請重新輸入'
		},
		'serial': {
			'start_debug': '調試中',
			'start_flash': '開始刷入',
			'programmer_success': '燒寫固件成功',
			'programmer_failure': '燒寫固件失敗',
			'programmer_prepare': '準備燒寫{}',//，請按下A鍵壹秒，然後松開',
			'erase_success': '擦除固件成功',
			'erase_failure': '擦除固件失敗',
			'erase_prepare': '準備擦除固件，請先按住A鍵不放，然後按下rst鍵（在板背面），之後依次松開rst鍵與A鍵',
			'antivirus_blocking': '燒錄程序可能被殺毒軟件阻止，請關閉殺毒軟件再試',
			'alert_select_file': '請選擇一個文件。',
			'prompt_rename': '將 [{}] 改名為：',
			'alert_extname': '新文件名必須有擴展名。',
			'confirm_delete': '刪除後不能恢復，確定要刪除文件 [{}] 嗎？',
			'alert_upload_limit': '最大只允許上傳 100KB 的文件。',
			'confirm_upload': '準備將文件 [{1}] 上傳到教科板的 [{2}] 目錄下',
			'prompt_new_folder': '在當前路徑下創建文件夾，請輸入新文件夾名稱：',
			'alert_invalid_folder': '文件夾命名非法。',
			'alert_root': '根文件夾不可刪除。',
			'confirm_delete_folder': '確定要刪除文件夾 [{}] 嗎？註意：非空文件夾無法刪除。',
			'alert_load_file': '只能打開 *.py 或 *.xml 文件',
			'file_onboard': '板載程序',
			'file_onboard_block': '從教科板內讀取的圖形化代碼',
			'file_onboard_code': '從教科板內讀取的Python代碼',
			'alert_try_again': '板載程序未提取成功，再試壹次？',
			'oserror_261': '定時器沖突，請按下硬件背面的rst鍵，然後再試。',
			'disconnect': '斷開連接',
			'connect': '連接串口',
			'no_port': '未檢測到教科板串口連接',
			'flash_success': '刷入成功',
			'flash_failure': '刷入過程存在錯誤，請檢查程序，或者再試壹次。',
			'debug_failure': '調試代碼存在錯誤，請檢查程序，或者再試壹次。',
			'read_file_error': '讀取文件失敗，可能的原因是運行時內存不足，請按下硬件背面的rst鍵，然後再試。如果仍然不成功，建議暫時將 \'main.py\' 改名，之後重啟，以獲得最大可用內存，再嘗試下載。',
			'MemoryError': '內存分配失敗，請按下硬件背面的rst鍵，然後再試。',
			'serial_error': '無法接收回傳數據，請嘗試按下硬件背面的rst鍵。',
			'serial_occupied': '串口可能被其他程序占用，請先解除占用。',
			'NoMuVisionSensor': '未能正確引用小MU庫文件，請嘗試“下載Hex”功能。'
		},
		'oserror': {
			'1': '不允許操作',
			'2': '文件或目錄不存在',
			'3': '沒有此類進程',
			'4': '中斷的系統調用',
			'5': 'I/O錯誤',
			'6': '沒有此類設備或地址',
			'7': '參數列表太長',
			'8': '執行格式錯誤',
			'9': '錯誤的文件編號',
			'10': '沒有子進程',
			'11': '再試壹次',
			'12': '內存不足',
			'13': '權限被拒絕',
			'14': '錯誤的地址',
			'15': '需要阻止設備',
			'16': '設備或資源繁忙',
			'17': '文件已存在',
			'18': '跨設備鏈接',
			'19': '沒有此類設備',
			'20': '不是目錄',
			'21': '是一個目錄',
			'22': '參數無效',
			'23': '文件表溢出',
			'24': '打開太多文件',
			'25': '不是打字機',
			'26': '文本文件繁忙',
			'27': '文件太大',
			'28': '設備上沒有剩余空間',
			'29': '非法搜尋',
			'30': '只讀文件系統',
			'31': '鏈接太多',
			'32': 'Broken pipe',
			'33': '數學參數超出函數域',
			'34': '數學結果無法表示',
			'97': '協議不支持的地址族',
			'104': '連接超時',
			'110': '連接超時',
			'115': '正在進行中的操作',
			'261': '定時器沖突，請按下硬件背面的rst鍵，然後再試。'
		}
	},
	'flags': {
		'blocks': true,
		'snippets': true,
		'share': true
	}
};
