From 25eb964990d3422fe7d818f8e681dc98e8febaf3 Mon Sep 17 00:00:00 2001 From: Miguel Angel Mulero Martinez Date: Tue, 30 Jan 2018 15:35:12 +0100 Subject: [PATCH] Add translation into chinese simplified --- assets/windows/installer.nsi | 1 + locales/en/messages.json | 3 + locales/zh_CN/messages.json | 3180 ++++++++++++++++++++++++++++++++++ src/js/localization.js | 2 +- 4 files changed, 3185 insertions(+), 1 deletion(-) create mode 100644 locales/zh_CN/messages.json diff --git a/assets/windows/installer.nsi b/assets/windows/installer.nsi index 4f736e5e..e8a4d3d7 100644 --- a/assets/windows/installer.nsi +++ b/assets/windows/installer.nsi @@ -50,6 +50,7 @@ OutFile "..\..\${DEST_FOLDER}\${FILE_NAME_INSTALLER}" !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Korean" +!insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "Spanish" # detect default install folder diff --git a/locales/en/messages.json b/locales/en/messages.json index a15c67ce..6727416d 100644 --- a/locales/en/messages.json +++ b/locales/en/messages.json @@ -72,6 +72,9 @@ "language_ko": { "message": "\ud55c\uad6d\uc5b4 (ko)" }, + "language_zh_CN": { + "message": "\u7b80\u4f53\u4e2d\u6587 (zh_CN)" + }, "sensorStatusGyro": { "message": "Gyroscope" diff --git a/locales/zh_CN/messages.json b/locales/zh_CN/messages.json new file mode 100644 index 00000000..a45ae519 --- /dev/null +++ b/locales/zh_CN/messages.json @@ -0,0 +1,3180 @@ +{ + "language_ca": { + "message": "Catal\u00e0 (ca)" + }, + "language_de": { + "message": "Deutsch (de)" + }, + "language_en": { + "message": "English (en)" + }, + "language_es": { + "message": "Espa\u00f1ol (es)" + }, + "language_fr": { + "message": "Fran\u00e7ais (fr)" + }, + "language_ko": { + "message": "\ud55c\uad6d\uc5b4 (ko)" + }, + "translation_version": { + "message": "0" + }, + "windowTitle": { + "message": "Betaflight Configurator", + "description": "Title of the application window, usually not translated" + }, + "warningTitle": { + "message": "\u8b66\u544a" + }, + "noticeTitle": { + "message": "\u6ce8\u610f" + }, + "options_title": { + "message": "\u7a0b\u5e8f\u9009\u9879" + }, + "connect": { + "message": "\u8fde\u63a5" + }, + "connecting": { + "message": "\u8fde\u63a5\u4e2d" + }, + "disconnect": { + "message": "\u65ad\u5f00\u8fde\u63a5" + }, + "portsSelectManual": { + "message": "\u624b\u52a8\u8fde\u63a5\u4e32\u53e3" + }, + "portOverrideText": { + "message": "\u4e32\u53e3" + }, + "autoConnect": { + "message": "\u81ea\u52a8\u8fde\u63a5" + }, + "close": { + "message": "\u5173\u95ed" + }, + "autoConnectEnabled": { + "message": "\u81ea\u52a8\u8fde\u63a5\uff1a\u5f00\u542f-\u5f53\u53d1\u73b0\u65b0\u7684\u4e32\u53e3\uff0c\u5730\u9762\u7ad9\u5c06\u4f1a\u81ea\u52a8\u8fde\u63a5\u65b0\u7684\u4e32\u53e3" + }, + "autoConnectDisabled": { + "message": "\u81ea\u52a8\u8fde\u63a5\uff1a \u5173\u95ed - \u7528\u6237\u4ece\u5217\u8868\u4e2d\u9009\u7740\u6b63\u786e\u7684\u4e32\u53e3\uff0c\u7136\u540e\u70b9\u201c\u8fde\u63a5\u201d" + }, + "expertMode": { + "message": "\u5f00\u542f\u9ad8\u7ea7\u6a21\u5f0f" + }, + "permanentExpertMode": { + "message": "\u9ed8\u8ba4\u5f00\u542f\u9ad8\u7ea7\u6a21\u5f0f" + }, + "userLanguageSelect": { + "message": "\u8bed\u8a00 \uff08\u9700\u8981\u91cd\u542f\u5e94\u7528\u624d\u80fd\u751f\u6548\uff09" + }, + "language_default": { + "message": "\u9ed8\u8ba4" + }, + "sensorStatusGyro": { + "message": "\u9640\u87ba\u4eea" + }, + "sensorStatusAccel": { + "message": "\u52a0\u901f\u5ea6\u8ba1" + }, + "sensorStatusMag": { + "message": "\u78c1\u573a\u8ba1" + }, + "sensorStatusBaro": { + "message": "\u9ad8\u5ea6\u8ba1" + }, + "sensorStatusGPS": { + "message": "GPS" + }, + "sensorStatusSonar": { + "message": "\u58f0\u5450 \/ \u6d4b\u8ddd\u8ba1" + }, + "checkForConfiguratorUnstableVersions": { + "message": "\u663e\u793a\u5730\u9762\u7ad9\u6d4b\u8bd5\u7248\u672c\u66f4\u65b0\u63d0\u793a" + }, + "configuratorUpdateNotice": { + "message": "\u4f60\u6b63\u5728\u4f7f\u7528\u65e7\u7248\u672c\u7684 Betaflight\u5730\u9762\u7ad9 <\/b>\u3002
\u7248\u672c$1<\/b>\u5df2\u7ecf\u5728\u7f51\u4e0a\u53d1\u5e03\u3002\u8bf7\u5230 \u53d1\u5e03\u9875\u9762<\/a>\u4e0b\u8f7d\u5b89\u88c5\u6700\u65b0\u7684\u5730\u9762\u7ad9\uff0c
\u66f4\u65b0\u4e4b\u524d\u8bf7\u5173\u95ed\u5730\u9762\u7ad9." + }, + "configuratorUpdateWebsite": { + "message": "\u6253\u5f00\u7248\u672c\u53d1\u5e03\u7f51\u7ad9" + }, + "deviceRebooting": { + "message": "\u98de\u63a7 - \u91cd\u542f<\/span>" + }, + "deviceReady": { + "message": "\u98de\u63a7 - \u5c31\u7eea<\/span>" + }, + "backupFileIncompatible": { + "message": "\u4e0a\u4e00\u7248\u672c\u5730\u9762\u7ad9\u751f\u6210\u7684\u5907\u4efd\u6587\u4ef6\u548c\u76ee\u524d\u7248\u672c\u7684\u5730\u9762\u7ad9\u4e0d\u517c\u5bb9" + }, + "backupFileUnmigratable": { + "message": "\u4e0a\u4e00\u7248\u672c\u5730\u9762\u7ad9\u751f\u6210\u7684\u5907\u4efd\u6587\u4ef6\u4e0d\u80fd\u79fb\u690d\u5230\u76ee\u524d\u7248\u672c\u7684\u5730\u9762\u7ad9" + }, + "configMigrationFrom": { + "message": "\u6b63\u5728\u79fb\u690d\u5730\u9762\u7ad9\u8bbe\u7f6e\u6587\u4ef6: $1" + }, + "configMigratedTo": { + "message": "\u5730\u9762\u7ad9\u8bbe\u7f6e\u6587\u4ef6\u79fb\u690d\u6210\u529f" + }, + "configMigrationSuccessful": { + "message": "\u8bbe\u7f6e\u6587\u4ef6\u79fb\u690d\u5b8c\u6210\uff0c\u5730\u9762\u7ad9\u4f7f\u7528\u8bbe\u7f6e\u6587\u4ef6\u3002" + }, + "tabFirmwareFlasher": { + "message": "\u70e7\u5f55\u56fa\u4ef6" + }, + "tabLanding": { + "message": "\u6b22\u8fce" + }, + "tabHelp": { + "message": "\u8bbe\u7f6e\u6587\u6863 & \u652f\u6301" + }, + "tabSetup": { + "message": "\u8bbe\u7f6e" + }, + "tabSetupOSD": { + "message": "OSD \u8bbe\u7f6e" + }, + "tabConfiguration": { + "message": "\u914d\u7f6e" + }, + "tabPorts": { + "message": "\u4e32\u53e3" + }, + "tabPidTuning": { + "message": "PID \u8c03\u8282" + }, + "tabReceiver": { + "message": "\u63a5\u6536\u673a" + }, + "tabModeSelection": { + "message": "\u98de\u884c\u6a21\u5f0f\u9009\u9879" + }, + "tabServos": { + "message": "\u8235\u673a" + }, + "tabFailsafe": { + "message": "\u5931\u63a7\u4fdd\u62a4" + }, + "tabTransponder": { + "message": "\u6bd4\u8d5b\u5708\u6570\u53d1\u5c04\u5668" + }, + "tabOsd": { + "message": "OSD" + }, + "tabPower": { + "message": "\u52a8\u529b & \u7535\u6c60" + }, + "tabGPS": { + "message": "GPS" + }, + "tabMotorTesting": { + "message": "\u7535\u673a" + }, + "tabLedStrip": { + "message": "LED \u706f\u5e26" + }, + "tabRawSensorData": { + "message": "\u4f20\u611f\u5668" + }, + "tabCLI": { + "message": "CLI(\u547d\u4ee4\u884c)" + }, + "tabLogging": { + "message": "\u65e5\u5fd7" + }, + "tabOnboardLogging": { + "message": "\u9ed1\u5323\u5b50" + }, + "tabAdjustments": { + "message": "\u8c03\u6574" + }, + "tabAuxiliary": { + "message": "\u6a21\u5f0f" + }, + "logActionHide": { + "message": "\u9690\u85cf\u8bb0\u5f55" + }, + "logActionShow": { + "message": "\u663e\u793a\u8bb0\u5f55" + }, + "serialPortOpened": { + "message": "\u4e32\u53e3\u6210\u529f<\/span> \u6253\u5f00 ID: $1" + }, + "serialPortOpenFail": { + "message": "\u6253\u5f00\u5931\u8d25<\/span>" + }, + "serialPortClosedOk": { + "message": "\u4e32\u53e3 \u6210\u529f<\/span> \u5173\u95ed" + }, + "serialPortClosedFail": { + "message": "\u5173\u95ed<\/span> \u5931\u8d25" + }, + "serialUnrecoverable": { + "message": "\u4e0d\u53ef\u4ee5\u6062\u590d\uff0c\u4e32\u53e3\u8fde\u63a5 \u9519\u8bef<\/span> \u65ad\u5f00\u8fde\u63a5" + }, + "usbDeviceOpened": { + "message": "USB \u8bbe\u5907\u6210\u529f<\/span> \u4f7f\u7528ID :$1" + }, + "usbDeviceOpenFail": { + "message": "\u5931\u8d25<\/span>\u6253\u5f00USB\u8bbe\u5907!" + }, + "usbDeviceClosed": { + "message": "USB \u8bbe\u5907\u6210\u529f<\/span> \u5173\u95ed" + }, + "usbDeviceCloseFail": { + "message": "\u5931\u8d25<\/span>\u5173\u95edUSB\u8bbe\u5907" + }, + "usbDeviceUdevNotice": { + "message": "udev rules<\/strong>\u6709\u6ca1\u6709\u6b63\u786e\u5b89\u88c5? \u8be6\u7ec6\u4fe1\u606f\u67e5\u9605docs." + }, + "stm32UsbDfuNotFound": { + "message": "\u672a\u627e\u5230USB DFU" + }, + "stm32TimedOut": { + "message": "STM32 - \u8d85\u65f6\uff0c\u70e7\u5f55\u5931\u8d25" + }, + "stm32WrongResponse": { + "message": "STM32 \u901a\u4fe1\u5931\u8d25\uff0c\u9519\u8bef\u7684\u54cd\u5e94\u3002\u5e94\u4e3a\uff1a$1 (0x$2) \u5b9e\u9645\u6536\u5230: $3 (0x$4)" + }, + "stm32ContactingBootloader": { + "message": "\u5c1d\u8bd5\u8fde\u63a5\u5f15\u5bfc\u7a0b\u5e8f" + }, + "stm32ContactingBootloaderFailed": { + "message": "\u5f15\u5bfc\u7a0b\u5e8f\u901a\u4fe1\u5931\u8d25" + }, + "stm32ResponseBootloaderFailed": { + "message": "\u5f15\u5bfc\u7a0b\u5e8f\u65e0\u54cd\u5e94\uff0c\u70e7\u5f55\u5931\u8d25" + }, + "stm32GlobalEraseExtended": { + "message": "\u6b63\u5728\u6267\u884c\u5168\u5c40\u82af\u7247\u64e6\u9664\uff08\u901a\u8fc7\u6269\u5c55\u64e6\u9664\uff09\u2026\u2026" + }, + "stm32LocalEraseExtended": { + "message": "\u6b63\u5728\u6267\u884c\u672c\u5730\u64e6\u9664\uff08\u901a\u8fc7\u6269\u5c55\u64e6\u9664\uff09\u2026\u2026" + }, + "stm32GlobalErase": { + "message": "\u6b63\u5728\u6267\u884c\u5168\u5c40\u64e6\u9664\u2026\u2026" + }, + "stm32LocalErase": { + "message": "\u6b63\u5728\u6267\u884c\u672c\u5730\u64e6\u9664\u2026\u2026" + }, + "stm32Erase": { + "message": "\u6b63\u5728\u64e6\u9664\u2026\u2026" + }, + "stm32Flashing": { + "message": "\u6b63\u5728\u70e7\u5f55\u2026\u2026" + }, + "stm32Verifying": { + "message": "\u6b63\u5728\u9a8c\u8bc1\u2026\u2026" + }, + "stm32ProgrammingSuccessful": { + "message": "\u70e7\u5f55\u6210\u529f" + }, + "stm32ProgrammingFailed": { + "message": "\u70e7\u5f55\u5931\u8d25" + }, + "stm32AddressLoadFailed": { + "message": "\u5b9a\u4f4d\u9009\u9879\u5b57\u8282\u6247\u533a\u5931\u8d25\u3002\u5f88\u53ef\u80fd\u56e0\u4e3a\u8bfb\u4fdd\u62a4\u3002" + }, + "stm32AddressLoadSuccess": { + "message": "\u5b9a\u4f4d\u9009\u9879\u5b57\u8282\u6247\u533a\u6210\u529f\u3002" + }, + "stm32AddressLoadUnknown": { + "message": "\u56e0\u672a\u77e5\u9519\u8bef\uff0c\u5b9a\u4f4d\u9009\u9879\u5b57\u8282\u6247\u533a\u5931\u8d25\u3002\u6b63\u5728\u4e2d\u6b62\u3002" + }, + "stm32NotReadProtected": { + "message": "\u8bfb\u4fdd\u62a4\u672a\u542f\u7528" + }, + "stm32ReadProtected": { + "message": "\u98de\u63a7\u677f\u4f3c\u4e4e\u6709\u8bfb\u4fdd\u62a4\u3002\u6b63\u5728\u89e3\u9664\u4fdd\u62a4\u3002\u4e0d\u8981\u65ad\u5f00\u8fde\u63a5\/\u62d4\u51fa\u63d2\u5934\uff01" + }, + "stm32UnprotectSuccessful": { + "message": "\u89e3\u9664\u4fdd\u62a4\u6210\u529f" + }, + "stm32UnprotectUnplug": { + "message": "\u8bf7\u62d4\u51fa\u98de\u63a7\u5e76\u4e14\u4ee5DFU\u6a21\u5f0f\u91cd\u65b0\u8fde\u63a5\u98de\u63a7\u4ee5\u91cd\u65b0\u5c1d\u8bd5\u70e7\u5f55\uff01" + }, + "stm32UnprotectFailed": { + "message": "\u89e3\u9664\u4fdd\u62a4\u5931\u8d25" + }, + "stm32UnprotectInitFailed": { + "message": "\u521d\u59cb\u5316\u89e3\u9664\u4fdd\u62a4\u7a0b\u5e8f\u5931\u8d25" + }, + "noConfigurationReceived": { + "message": "10\u79d2<\/span>\u5185\u6ca1\u6709\u63a5\u6536\u5230\u914d\u7f6e\u4fe1\u606f\uff0c\u98de\u63a7\u901a\u4fe1 \u5931\u8d25<\/span>" + }, + "firmwareVersionNotSupported": { + "message": "Betaflight configutator\u4e0d\u652f\u6301<\/span>\u8be5\u56fa\u4ef6\u7248\u672c . \u8bf7\u66f4\u65b0\u5230Betaflight \u652f\u6301\u7684\u56fa\u4ef6\u7248\u672c$1<\/strong> \u6216\u8005\u66f4\u9ad8. \u66f4\u65b0\u56fa\u4ef6\u4e4b\u524d\uff0c\u4f7f\u7528CLI \u6765\u5907\u4efd\u8bbe\u7f6e.\u5177\u4f53\u64cd\u4f5c\u4fe1\u606f\u8bf7\u53c2\u8003Betaflight\u6587\u6863.
\u5982\u679c\u4e0d\u60f3\u66f4\u65b0\u5230\u6700\u65b0\u7684\u56fa\u4ef6\uff0c\u53ef\u4ee5\u4f7f\u7528\u652f\u6301\u8be5\u56fa\u4ef6\u7684configurator \u6765\u8bbe\u7f6e\u4f7f\u7528\u3002" + }, + "firmwareTypeNotSupported": { + "message": "\u8be5\u56fa\u4ef6\u7248\u672c\u7684Betaflight configurator \u4e0d\u652f\u6301<\/span>,\u53ea\u80fd\u4f7f\u7528CLI\u6a21\u5f0f." + }, + "firmwareUpgradeRequired": { + "message": "\u98de\u63a7\u56fa\u4ef6\u9700\u8981\u66f4\u65b0\u5230\u65b0\u7684\u7248\u672c\uff0c\u4f7f\u7528CLI \u6765\u5907\u4efd\u8bbe\u7f6e.\u5177\u4f53\u64cd\u4f5c\u4fe1\u606f\u8bf7\u53c2\u8003Betaflight\u6587\u6863.
\u5982\u679c\u4e0d\u60f3\u66f4\u65b0\u5230\u6700\u65b0\u7684\u56fa\u4ef6\uff0c\u53ef\u4ee5\u4f7f\u7528\u652f\u6301\u8be5\u56fa\u4ef6\u7684configurator \u6765\u8bbe\u7f6e\u4f7f\u7528\u3002" + }, + "infoVersions": { + "message": "\u8fd0\u884c- OS: $1<\/strong>, Chrome: $2<\/strong>, Configurator: $3<\/strong" + }, + "releaseCheckLoaded": { + "message": "\u4eceGithub \u8f7d\u5165$1\u53d1\u5e03\u4fe1\u606f" + }, + "releaseCheckFailed": { + "message": "\u4eceGithub\u83b7\u53d6$1\u53d1\u5e03\u7248\u672c\u5931\u8d25\uff0c\u8f7d\u5165\u539f\u7248\u672c\u4fe1\u606f\u3002 \u5931\u8d25\u539f\u56e0\uff1a$2<\/code><\/b>" + }, + "releaseCheckCached": { + "message": "\u4f7f\u7528\u7f13\u5b58\u7684$1\u7248\u672c\u4fe1\u606f" + }, + "releaseCheckNoInfo": { + "message": "\u627e\u4e0d\u5230$1\u53d1\u5e03\u4fe1\u606f" + }, + "tabSwitchConnectionRequired": { + "message": "\u5148 \u8fde\u63a5<\/strong>\uff0c\u624d\u80fd\u663e\u793a\u4efb\u4f55\u9875\u9762\u4fe1\u606f" + }, + "tabSwitchWaitForOperation": { + "message": "\u4e0d\u80fd<\/span> \u6267\u884c\u76ee\u524d\u64cd\u4f5c, \u8bf7\u7b49\u5f85\u4e0a\u4e00\u4e2a\u64cd\u4f5c\u5b8c\u6210" + }, + "tabSwitchUpgradeRequired": { + "message": "\u9700\u8981\u66f4\u65b0<\/strong>\u5230\u6700\u65b0\u7248\u672cBetaflight\u56fa\u4ef6\u624d\u80fd\u4f7f\u7528$1\u9875\u9762" + }, + "firmwareVersion": { + "message": "\u56fa\u4ef6\u7248\u672c\uff1a$1<\/strong>" + }, + "apiVersionReceived": { + "message": "MultiWii API \u7248\u672c $1<\/strong>" + }, + "uniqueDeviceIdReceived": { + "message": "Unique device ID: 0x$1<\/strong>" + }, + "craftNameReceived": { + "message": "\u98de\u884c\u5668\u540d\u79f0: $1<\/strong>" + }, + "armingDisabled": { + "message": "\u4e0d\u80fd\u89e3\u9501<\/strong>" + }, + "armingEnabled": { + "message": "\u53ef\u4ee5\u89e3\u9501<\/strong>" + }, + "boardInfoReceived": { + "message": "\u98de\u63a7: $1<\/strong>, \u7248\u672c: $2<\/strong>" + }, + "buildInfoReceived": { + "message": "\u8fd0\u884c\u7248\u672c\u53d1\u5e03\u65f6\u95f4\uff1a $1<\/strong>" + }, + "fcInfoReceived": { + "message": "\u98de\u63a7\u4fe1\u606f\u8bc6\u522b\u540d: $1<\/strong>, \u7248\u672c: $2<\/strong>" + }, + "versionLabelTarget": { + "message": "\u98de\u63a7\u677f\u56fa\u4ef6" + }, + "versionLabelFirmware": { + "message": "\u56fa\u4ef6" + }, + "versionLabelConfigurator": { + "message": "Configurator" + }, + "notifications_app_just_updated_to_version": { + "message": "\u7a0b\u5e8f\u5df2\u7ecf\u66f4\u65b0\u5230\u7248\u672c: $1" + }, + "notifications_click_here_to_start_app": { + "message": "\u5355\u51fb\u8fd9\u91cc\u8fd0\u884c\u7a0b\u5e8f" + }, + "statusbar_port_utilization": { + "message": "\u4f7f\u7528\u7684\u4e32\u53e3\uff1a" + }, + "statusbar_usage_download": { + "message": "\u4e0b\u884c: $1%" + }, + "statusbar_usage_upload": { + "message": "\u4e0a\u884c: $1%" + }, + "statusbar_packet_error": { + "message": "\u6570\u636e\u5305\u9519\u8bef" + }, + "statusbar_i2c_error": { + "message": "I2C \u9519\u8bef:" + }, + "statusbar_cycle_time": { + "message": "\u5faa\u73af\u65f6\u95f4:" + }, + "statusbar_cpu_load": { + "message": "CPU \u4f7f\u7528\u7387: $1%" + }, + "dfu_connect_message": { + "message": "\u8bf7\u4f7f\u7528\u56fa\u4ef6\u70e7\u5199\u9875\u9762\u6765\u6253\u5f00DFU\u8bbe\u5907" + }, + "dfu_erased_kilobytes": { + "message": "\u64e6\u9664$1 kB \u95ea\u5b58 \u6210\u529f<\/span>" + }, + "dfu_device_flash_info": { + "message": "\u68c0\u6d4b\u5230$1 kiB \u7684\u82af\u7247" + }, + "dfu_error_image_size": { + "message": "Error<\/span>: \u56fa\u4ef6\u6587\u4ef6\u5927\u4e8e\u98de\u63a7\u82af\u7247\u7684\u95ea\u5b58\u3002\u56fa\u4ef6\u5927\u5c0f: $1 kiB, \u9650\u5236= $2 kiB" + }, + "eeprom_saved_ok": { + "message": "EEPROM \u4fdd\u5b58\u6210\u529f<\/span>" + }, + "defaultWelcomeIntro": { + "message": "\u6b22\u8fce\u4f7f\u7528Betaflight - Configurator<\/strong>,\u4e13\u4e3a\u7b80\u5316\u56fa\u952e\u5347\u7ea7\uff0c\u8bbe\u7f6e\u548c\u8c03\u6574\u98de\u63a7." + }, + "defaultWelcomeHead": { + "message": "\u786c\u4ef6" + }, + "defaultWelcomeText": { + "message": "\u672c\u5e94\u7528\u652f\u6301\u6240\u6709\u80fd\u8fd0\u884cbetaflight\u7684\u98de\u63a7\u3002\u5728\u201d\u56fa\u4ef6\u70e7\u5199\u201c\u9875\u9762\u67e5\u770b\u6240\u6709\u652f\u6301\u7684\u98de\u63a7\u5217\u8868.

Download Betaflight Blackbox<\/a>

\u56fa\u4ef6\u6e90\u4ee3\u7801\u53ef\u4ee5\u70b9\u51fb\u8fd9\u91cc\u4e0b\u8f7d
here<\/a>
\u6700\u65b0\u53d1\u5e03\u5df2\u7f16\u8bd1\u7684\u56fa\u4ef6\u53ef\u4ee5\u70b9\u51fb\u8fd9\u91cc\u4e0b\u8f7d
here<\/a>

\u6700\u65b0\u7684
CP210x \u9a71\u52a8<\/a> here<\/a>
\u6700\u65b0\u7684
STM USB VCP Drivers<\/a> \u53ef\u4ee5\u70b9\u51fb\u8fd9\u91cc \u4e0b\u8f7dhere<\/a>
\u6700\u65b0\u7684
Zadig<\/a>\u53ef\u4ee5\u70b9\u51fb\u8fd9\u91cc\u4e0b\u8f7dhere<\/a>
" + }, + "defaultContributingHead": { + "message": "\u53c2\u4e0e\u5f00\u53d1" + }, + "defaultContributingText": { + "message": "\u5982\u679c\u4f60\u60f3\u5e2e\u52a9betaflight\u5f00\u53d1\u51fa\u66f4\u597d\u7684\u98de\u63a7\u56fa\u4ef6\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7: