chao hai 5 meses
achega
3ba0967c90
Modificáronse 100 ficheiros con 39758 adicións e 0 borrados
  1. 29 0
      .gitignore
  2. 3 0
      .vscode/extensions.json
  3. 29 0
      README.md
  4. BIN=BIN
      dist/assets/AppCenter_ai_emotion-y1kPDTeZ.jpg
  5. BIN=BIN
      dist/assets/AppCenter_ai_gesture_recognition-cqVjYw81.jpg
  6. BIN=BIN
      dist/assets/AppCenter_ai_speech-yiUdB6rq.jpg
  7. BIN=BIN
      dist/assets/AppCenter_ai_teachableMachine-kEyGJlcC.jpg
  8. BIN=BIN
      dist/assets/AppCenter_comingSoon-vNzRs8Zi.jpg
  9. BIN=BIN
      dist/assets/AppCenter_iot_ifttt-WpVmSIVM.jpg
  10. BIN=BIN
      dist/assets/AppCenter_iot_thingspeak-u1OGZcEl.jpg
  11. BIN=BIN
      dist/assets/cocoblockly-navbar_labs-icon-6EIlABjy.png
  12. 0 0
      dist/assets/index-5q6gUK2E.css
  13. 4 0
      dist/assets/index-pYqCUiSD.js
  14. BIN=BIN
      dist/assets/learn_nav_icon-uetDIr7g.png
  15. BIN=BIN
      dist/assets/local_storage-RdZXse2B.png
  16. BIN=BIN
      dist/assets/logo1-xImG6MHd.png
  17. BIN=BIN
      dist/assets/material-icons-69IKE8Hh.woff
  18. BIN=BIN
      dist/assets/material-icons-JAMAXUYH.woff2
  19. BIN=BIN
      dist/assets/material-icons-outlined-2YYhrxAP.woff2
  20. BIN=BIN
      dist/assets/material-icons-outlined-aVm8Jdp-.woff
  21. BIN=BIN
      dist/assets/material-icons-round-64qylwcb.woff2
  22. BIN=BIN
      dist/assets/material-icons-round-Q5cMfrL_.woff
  23. BIN=BIN
      dist/assets/material-icons-sharp-IInc7Yq0.woff2
  24. BIN=BIN
      dist/assets/material-icons-sharp-h9SpFbu_.woff
  25. BIN=BIN
      dist/assets/material-icons-two-tone-7jSKWhI8.woff2
  26. BIN=BIN
      dist/assets/material-icons-two-tone-e8M-5hA2.woff
  27. BIN=BIN
      dist/assets/nav_help-bsnNaGyc.png
  28. BIN=BIN
      dist/assets/object_recognition_header-hNuf-pLj.jpg
  29. BIN=BIN
      dist/assets/posenet_recogition-enZUqhPU.png
  30. BIN=BIN
      dist/assets/tm_with_pose-IOGS0MIo.jpg
  31. BIN=BIN
      dist/assets/user-_Ytma4Ez.png
  32. BIN=BIN
      dist/favicon.ico
  33. 14 0
      dist/index.html
  34. 13 0
      index.html
  35. 24 0
      installWebADB.sh
  36. 8 0
      jsconfig.json
  37. 2852 0
      package-lock.json
  38. 35 0
      package.json
  39. BIN=BIN
      public/favicon.ico
  40. 47 0
      src/App.vue
  41. 86 0
      src/assets/css/base.css
  42. 2062 0
      src/assets/css/blockly.css
  43. 44 0
      src/assets/css/header.css
  44. 146 0
      src/assets/css/main.css
  45. BIN=BIN
      src/assets/img/APPCenter_test.jpg
  46. BIN=BIN
      src/assets/img/AppCenter_ai_emotion.jpg
  47. BIN=BIN
      src/assets/img/AppCenter_ai_gesture_recognition.jpg
  48. BIN=BIN
      src/assets/img/AppCenter_ai_speech.jpg
  49. BIN=BIN
      src/assets/img/AppCenter_ai_teachableMachine.jpg
  50. BIN=BIN
      src/assets/img/AppCenter_comingSoon.jpg
  51. BIN=BIN
      src/assets/img/AppCenter_game_floppy-bird.jpg
  52. BIN=BIN
      src/assets/img/AppCenter_game_space_lamb.jpg
  53. BIN=BIN
      src/assets/img/AppCenter_iot_ifttt.jpg
  54. BIN=BIN
      src/assets/img/AppCenter_iot_thingspeak.jpg
  55. BIN=BIN
      src/assets/img/WeTech.jpg
  56. BIN=BIN
      src/assets/img/adb1.png
  57. BIN=BIN
      src/assets/img/adb2.png
  58. BIN=BIN
      src/assets/img/adb3.png
  59. BIN=BIN
      src/assets/img/adb4.jpg
  60. BIN=BIN
      src/assets/img/cocoblockly-navbar_labs-icon.png
  61. BIN=BIN
      src/assets/img/delete.png
  62. BIN=BIN
      src/assets/img/edit.png
  63. BIN=BIN
      src/assets/img/error.png
  64. BIN=BIN
      src/assets/img/file.png
  65. BIN=BIN
      src/assets/img/firmware.png
  66. BIN=BIN
      src/assets/img/home_icon.png
  67. BIN=BIN
      src/assets/img/labs_aihub1.jpg
  68. BIN=BIN
      src/assets/img/labs_aihub2.jpg
  69. BIN=BIN
      src/assets/img/labs_aihub3.jpg
  70. BIN=BIN
      src/assets/img/language2.png
  71. BIN=BIN
      src/assets/img/learn_nav_icon.png
  72. BIN=BIN
      src/assets/img/local_storage.png
  73. BIN=BIN
      src/assets/img/logo1.png
  74. BIN=BIN
      src/assets/img/nav_help.png
  75. BIN=BIN
      src/assets/img/object_recognition_header.jpg
  76. BIN=BIN
      src/assets/img/posenet_recogition.png
  77. BIN=BIN
      src/assets/img/save.png
  78. BIN=BIN
      src/assets/img/tm_with_pose.jpg
  79. BIN=BIN
      src/assets/img/uploader_connect.png
  80. BIN=BIN
      src/assets/img/uploader_disconnect.png
  81. BIN=BIN
      src/assets/img/user.png
  82. BIN=BIN
      src/assets/img/分享.png
  83. BIN=BIN
      src/assets/img/加载.png
  84. 343 0
      src/blockly/blocklyXml.js
  85. 0 0
      src/blockly/blocks/Mutator.js
  86. 0 0
      src/blockly/blocks/ai.js
  87. 711 0
      src/blockly/blocks/basic.js
  88. 53 0
      src/blockly/blocks/define_color.js
  89. 9 0
      src/blockly/blocks/index.js
  90. 126 0
      src/blockly/blocks/logic.js
  91. 1200 0
      src/blockly/blocks/math.js
  92. 336 0
      src/blockly/blocks/text.js
  93. 85 0
      src/blockly/blocks/variables.js
  94. 9647 0
      src/blockly/msg/en.js
  95. 10729 0
      src/blockly/msg/zh-hans.js
  96. 10883 0
      src/blockly/msg/zh-hant.js
  97. 13 0
      src/blockly/pythonCode/ai.js
  98. 188 0
      src/blockly/pythonCode/basicCode.js
  99. 8 0
      src/blockly/pythonCode/index.js
  100. 31 0
      src/blockly/pythonCode/logic.js

+ 29 - 0
.gitignore

@@ -0,0 +1,29 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+*.tsbuildinfo

+ 3 - 0
.vscode/extensions.json

@@ -0,0 +1,3 @@
+{
+  "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
+}

+ 29 - 0
README.md

@@ -0,0 +1,29 @@
+# my-vue3-project
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vitejs.dev/config/).
+
+## Project Setup
+
+```sh
+npm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+npm run dev
+```
+
+### Compile and Minify for Production
+
+```sh
+npm run build
+```

BIN=BIN
dist/assets/AppCenter_ai_emotion-y1kPDTeZ.jpg


BIN=BIN
dist/assets/AppCenter_ai_gesture_recognition-cqVjYw81.jpg


BIN=BIN
dist/assets/AppCenter_ai_speech-yiUdB6rq.jpg


BIN=BIN
dist/assets/AppCenter_ai_teachableMachine-kEyGJlcC.jpg


BIN=BIN
dist/assets/AppCenter_comingSoon-vNzRs8Zi.jpg


BIN=BIN
dist/assets/AppCenter_iot_ifttt-WpVmSIVM.jpg


BIN=BIN
dist/assets/AppCenter_iot_thingspeak-u1OGZcEl.jpg


BIN=BIN
dist/assets/cocoblockly-navbar_labs-icon-6EIlABjy.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/assets/index-5q6gUK2E.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 4 - 0
dist/assets/index-pYqCUiSD.js


BIN=BIN
dist/assets/learn_nav_icon-uetDIr7g.png


BIN=BIN
dist/assets/local_storage-RdZXse2B.png


BIN=BIN
dist/assets/logo1-xImG6MHd.png


BIN=BIN
dist/assets/material-icons-69IKE8Hh.woff


BIN=BIN
dist/assets/material-icons-JAMAXUYH.woff2


BIN=BIN
dist/assets/material-icons-outlined-2YYhrxAP.woff2


BIN=BIN
dist/assets/material-icons-outlined-aVm8Jdp-.woff


BIN=BIN
dist/assets/material-icons-round-64qylwcb.woff2


BIN=BIN
dist/assets/material-icons-round-Q5cMfrL_.woff


BIN=BIN
dist/assets/material-icons-sharp-IInc7Yq0.woff2


BIN=BIN
dist/assets/material-icons-sharp-h9SpFbu_.woff


BIN=BIN
dist/assets/material-icons-two-tone-7jSKWhI8.woff2


BIN=BIN
dist/assets/material-icons-two-tone-e8M-5hA2.woff


BIN=BIN
dist/assets/nav_help-bsnNaGyc.png


BIN=BIN
dist/assets/object_recognition_header-hNuf-pLj.jpg


BIN=BIN
dist/assets/posenet_recogition-enZUqhPU.png


BIN=BIN
dist/assets/tm_with_pose-IOGS0MIo.jpg


BIN=BIN
dist/assets/user-_Ytma4Ez.png


BIN=BIN
dist/favicon.ico


+ 14 - 0
dist/index.html

@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <link rel="icon" href="/favicon.ico">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Mini Pi</title>
+    <script type="module" crossorigin src="/assets/index-pYqCUiSD.js"></script>
+    <link rel="stylesheet" crossorigin href="/assets/index-5q6gUK2E.css">
+  </head>
+  <body>
+    <div id="app"></div>
+  </body>
+</html>

+ 13 - 0
index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <link rel="icon" href="/favicon.ico">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Mini Pi</title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script type="module" src="/src/main.js"></script>
+  </body>
+</html>

+ 24 - 0
installWebADB.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+directory_path=$1
+
+if [ -d "$directory_path" ]; then
+  echo "Directory exists, proceeding..."
+else
+  echo "Directory does not exist"
+  exit 0
+fi
+
+directories=$(find "$directory_path/libraries" -mindepth 1 -maxdepth 1 -type d)
+
+if test -f "./webadb.packages.txt"; then
+    rm webadb.packages.txt
+    touch webadb.packages.txt
+else
+    touch webadb.packages.txt
+fi
+
+for dir in $directories; do
+  npm install "$dir" --save
+  package=$(echo $dir | awk -F '/' '{print $NF}')
+  echo "@yume-chan/$package" >> webadb.packages.txt
+done

+ 8 - 0
jsconfig.json

@@ -0,0 +1,8 @@
+{
+  "compilerOptions": {
+    "paths": {
+      "@/*": ["./src/*"]
+    }
+  },
+  "exclude": ["node_modules", "dist"]
+}

+ 2852 - 0
package-lock.json

@@ -0,0 +1,2852 @@
+{
+  "name": "my-vue3-project",
+  "version": "0.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "my-vue3-project",
+      "version": "0.0.0",
+      "dependencies": {
+        "@codemirror/lang-python": "^6.1.6",
+        "@codemirror/theme-one-dark": "^6.1.2",
+        "@codemirror/view": "^6.36.1",
+        "@element-plus/icons-vue": "^2.3.1",
+        "@vitejs/plugin-vue": "^5.2.1",
+        "@xterm/xterm": "^5.5.0",
+        "axios": "^1.6.5",
+        "blockly": "^10.3.0",
+        "codemirror": "6.0.1",
+        "element-plus": "^2.5.1",
+        "install": "^0.13.0",
+        "ll": "^1.2.0",
+        "lodash": "^4.17.21",
+        "material-icons": "^1.13.12",
+        "pinia": "^2.1.7",
+        "rimraf": "^5.0.5",
+        "sass": "^1.70.0",
+        "vite": "^6.0.5",
+        "vue": "^3.3.11",
+        "vue-codemirror": "^6.1.1",
+        "vue-router": "^4.2.5",
+        "xterm-addon-fit": "^0.8.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.25.9",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+      "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.25.9",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+      "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.26.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/parser/-/parser-7.26.3.tgz",
+      "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+      "dependencies": {
+        "@babel/types": "^7.26.3"
+      },
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.26.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/types/-/types-7.26.3.tgz",
+      "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.25.9",
+        "@babel/helper-validator-identifier": "^7.25.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@codemirror/autocomplete": {
+      "version": "6.18.4",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/autocomplete/-/autocomplete-6.18.4.tgz",
+      "integrity": "sha512-sFAphGQIqyQZfP2ZBsSHV7xQvo9Py0rV0dW7W3IMRdS+zDuNb2l3no78CvUaWKGfzFjI4FTrLdUSj86IGb2hRA==",
+      "dependencies": {
+        "@codemirror/language": "^6.0.0",
+        "@codemirror/state": "^6.0.0",
+        "@codemirror/view": "^6.17.0",
+        "@lezer/common": "^1.0.0"
+      }
+    },
+    "node_modules/@codemirror/commands": {
+      "version": "6.7.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/commands/-/commands-6.7.1.tgz",
+      "integrity": "sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==",
+      "dependencies": {
+        "@codemirror/language": "^6.0.0",
+        "@codemirror/state": "^6.4.0",
+        "@codemirror/view": "^6.27.0",
+        "@lezer/common": "^1.1.0"
+      }
+    },
+    "node_modules/@codemirror/lang-python": {
+      "version": "6.1.6",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/lang-python/-/lang-python-6.1.6.tgz",
+      "integrity": "sha512-ai+01WfZhWqM92UqjnvorkxosZ2aq2u28kHvr+N3gu012XqY2CThD67JPMHnGceRfXPDBmn1HnyqowdpF57bNg==",
+      "dependencies": {
+        "@codemirror/autocomplete": "^6.3.2",
+        "@codemirror/language": "^6.8.0",
+        "@codemirror/state": "^6.0.0",
+        "@lezer/common": "^1.2.1",
+        "@lezer/python": "^1.1.4"
+      }
+    },
+    "node_modules/@codemirror/language": {
+      "version": "6.10.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/language/-/language-6.10.8.tgz",
+      "integrity": "sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw==",
+      "dependencies": {
+        "@codemirror/state": "^6.0.0",
+        "@codemirror/view": "^6.23.0",
+        "@lezer/common": "^1.1.0",
+        "@lezer/highlight": "^1.0.0",
+        "@lezer/lr": "^1.0.0",
+        "style-mod": "^4.0.0"
+      }
+    },
+    "node_modules/@codemirror/lint": {
+      "version": "6.8.4",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/lint/-/lint-6.8.4.tgz",
+      "integrity": "sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==",
+      "dependencies": {
+        "@codemirror/state": "^6.0.0",
+        "@codemirror/view": "^6.35.0",
+        "crelt": "^1.0.5"
+      }
+    },
+    "node_modules/@codemirror/search": {
+      "version": "6.5.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/search/-/search-6.5.8.tgz",
+      "integrity": "sha512-PoWtZvo7c1XFeZWmmyaOp2G0XVbOnm+fJzvghqGAktBW3cufwJUWvSCcNG0ppXiBEM05mZu6RhMtXPv2hpllig==",
+      "dependencies": {
+        "@codemirror/state": "^6.0.0",
+        "@codemirror/view": "^6.0.0",
+        "crelt": "^1.0.5"
+      }
+    },
+    "node_modules/@codemirror/state": {
+      "version": "6.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/state/-/state-6.5.0.tgz",
+      "integrity": "sha512-MwBHVK60IiIHDcoMet78lxt6iw5gJOGSbNbOIVBHWVXIH4/Nq1+GQgLLGgI1KlnN86WDXsPudVaqYHKBIx7Eyw==",
+      "dependencies": {
+        "@marijn/find-cluster-break": "^1.0.0"
+      }
+    },
+    "node_modules/@codemirror/theme-one-dark": {
+      "version": "6.1.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz",
+      "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==",
+      "dependencies": {
+        "@codemirror/language": "^6.0.0",
+        "@codemirror/state": "^6.0.0",
+        "@codemirror/view": "^6.0.0",
+        "@lezer/highlight": "^1.0.0"
+      }
+    },
+    "node_modules/@codemirror/view": {
+      "version": "6.36.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@codemirror/view/-/view-6.36.1.tgz",
+      "integrity": "sha512-miD1nyT4m4uopZaDdO2uXU/LLHliKNYL9kB1C1wJHrunHLm/rpkb5QVSokqgw9hFqEZakrdlb/VGWX8aYZTslQ==",
+      "dependencies": {
+        "@codemirror/state": "^6.5.0",
+        "style-mod": "^4.1.0",
+        "w3c-keyname": "^2.2.4"
+      }
+    },
+    "node_modules/@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@element-plus/icons-vue": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+      "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/@esbuild/aix-ppc64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz",
+      "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==",
+      "cpu": [
+        "ppc64"
+      ],
+      "optional": true,
+      "os": [
+        "aix"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/android-arm/-/android-arm-0.24.0.tgz",
+      "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz",
+      "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/android-x64/-/android-x64-0.24.0.tgz",
+      "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz",
+      "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz",
+      "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz",
+      "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz",
+      "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz",
+      "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz",
+      "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz",
+      "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz",
+      "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==",
+      "cpu": [
+        "loong64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz",
+      "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==",
+      "cpu": [
+        "mips64el"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz",
+      "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==",
+      "cpu": [
+        "ppc64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz",
+      "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==",
+      "cpu": [
+        "riscv64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz",
+      "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==",
+      "cpu": [
+        "s390x"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz",
+      "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz",
+      "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-arm64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz",
+      "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz",
+      "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz",
+      "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz",
+      "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz",
+      "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz",
+      "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@floating-ui/core": {
+      "version": "1.6.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@floating-ui/core/-/core-1.6.8.tgz",
+      "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==",
+      "dependencies": {
+        "@floating-ui/utils": "^0.2.8"
+      }
+    },
+    "node_modules/@floating-ui/dom": {
+      "version": "1.6.12",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@floating-ui/dom/-/dom-1.6.12.tgz",
+      "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==",
+      "dependencies": {
+        "@floating-ui/core": "^1.6.0",
+        "@floating-ui/utils": "^0.2.8"
+      }
+    },
+    "node_modules/@floating-ui/utils": {
+      "version": "0.2.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@floating-ui/utils/-/utils-0.2.8.tgz",
+      "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig=="
+    },
+    "node_modules/@isaacs/cliui": {
+      "version": "8.0.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@isaacs/cliui/-/cliui-8.0.2.tgz",
+      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+      "dependencies": {
+        "string-width": "^5.1.2",
+        "string-width-cjs": "npm:string-width@^4.2.0",
+        "strip-ansi": "^7.0.1",
+        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+        "wrap-ansi": "^8.1.0",
+        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
+    },
+    "node_modules/@lezer/common": {
+      "version": "1.2.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@lezer/common/-/common-1.2.3.tgz",
+      "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA=="
+    },
+    "node_modules/@lezer/highlight": {
+      "version": "1.2.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@lezer/highlight/-/highlight-1.2.1.tgz",
+      "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==",
+      "dependencies": {
+        "@lezer/common": "^1.0.0"
+      }
+    },
+    "node_modules/@lezer/lr": {
+      "version": "1.4.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@lezer/lr/-/lr-1.4.2.tgz",
+      "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==",
+      "dependencies": {
+        "@lezer/common": "^1.0.0"
+      }
+    },
+    "node_modules/@lezer/python": {
+      "version": "1.1.15",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@lezer/python/-/python-1.1.15.tgz",
+      "integrity": "sha512-aVQ43m2zk4FZYedCqL0KHPEUsqZOrmAvRhkhHlVPnDD1HODDyyQv5BRIuod4DadkgBEZd53vQOtXTonNbEgjrQ==",
+      "dependencies": {
+        "@lezer/common": "^1.2.0",
+        "@lezer/highlight": "^1.0.0",
+        "@lezer/lr": "^1.0.0"
+      }
+    },
+    "node_modules/@marijn/find-cluster-break": {
+      "version": "1.0.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz",
+      "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="
+    },
+    "node_modules/@parcel/watcher": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher/-/watcher-2.5.0.tgz",
+      "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==",
+      "hasInstallScript": true,
+      "optional": true,
+      "dependencies": {
+        "detect-libc": "^1.0.3",
+        "is-glob": "^4.0.3",
+        "micromatch": "^4.0.5",
+        "node-addon-api": "^7.0.0"
+      },
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      },
+      "optionalDependencies": {
+        "@parcel/watcher-android-arm64": "2.5.0",
+        "@parcel/watcher-darwin-arm64": "2.5.0",
+        "@parcel/watcher-darwin-x64": "2.5.0",
+        "@parcel/watcher-freebsd-x64": "2.5.0",
+        "@parcel/watcher-linux-arm-glibc": "2.5.0",
+        "@parcel/watcher-linux-arm-musl": "2.5.0",
+        "@parcel/watcher-linux-arm64-glibc": "2.5.0",
+        "@parcel/watcher-linux-arm64-musl": "2.5.0",
+        "@parcel/watcher-linux-x64-glibc": "2.5.0",
+        "@parcel/watcher-linux-x64-musl": "2.5.0",
+        "@parcel/watcher-win32-arm64": "2.5.0",
+        "@parcel/watcher-win32-ia32": "2.5.0",
+        "@parcel/watcher-win32-x64": "2.5.0"
+      }
+    },
+    "node_modules/@parcel/watcher-android-arm64": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz",
+      "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-darwin-arm64": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz",
+      "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-darwin-x64": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz",
+      "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-freebsd-x64": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz",
+      "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-linux-arm-glibc": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz",
+      "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-linux-arm-musl": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz",
+      "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-linux-arm64-glibc": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz",
+      "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-linux-arm64-musl": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz",
+      "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-linux-x64-glibc": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz",
+      "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-linux-x64-musl": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz",
+      "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-win32-arm64": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz",
+      "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-win32-ia32": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz",
+      "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@parcel/watcher-win32-x64": {
+      "version": "2.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz",
+      "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">= 10.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/parcel"
+      }
+    },
+    "node_modules/@pkgjs/parseargs": {
+      "version": "0.11.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+      "optional": true,
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/@popperjs/core": {
+      "name": "@sxzz/popperjs-es",
+      "version": "2.11.7",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
+    "node_modules/@rollup/rollup-android-arm-eabi": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz",
+      "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-android-arm64": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz",
+      "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-arm64": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz",
+      "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-x64": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz",
+      "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-arm64": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz",
+      "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-x64": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz",
+      "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz",
+      "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz",
+      "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-gnu": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz",
+      "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-musl": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz",
+      "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz",
+      "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==",
+      "cpu": [
+        "loong64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz",
+      "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==",
+      "cpu": [
+        "ppc64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz",
+      "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==",
+      "cpu": [
+        "riscv64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-s390x-gnu": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz",
+      "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==",
+      "cpu": [
+        "s390x"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-gnu": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz",
+      "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-musl": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz",
+      "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-arm64-msvc": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz",
+      "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-ia32-msvc": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz",
+      "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-x64-msvc": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz",
+      "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@tootallnate/once": {
+      "version": "2.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@tootallnate/once/-/once-2.0.0.tgz",
+      "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.6",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@types/estree/-/estree-1.0.6.tgz",
+      "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="
+    },
+    "node_modules/@types/lodash": {
+      "version": "4.17.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@types/lodash/-/lodash-4.17.13.tgz",
+      "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg=="
+    },
+    "node_modules/@types/lodash-es": {
+      "version": "4.17.12",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+      "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+      "dependencies": {
+        "@types/lodash": "*"
+      }
+    },
+    "node_modules/@types/web-bluetooth": {
+      "version": "0.0.16",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+      "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+    },
+    "node_modules/@vitejs/plugin-vue": {
+      "version": "5.2.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz",
+      "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==",
+      "engines": {
+        "node": "^18.0.0 || >=20.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^5.0.0 || ^6.0.0",
+        "vue": "^3.2.25"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
+      "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
+      "dependencies": {
+        "@babel/parser": "^7.25.3",
+        "@vue/shared": "3.5.13",
+        "entities": "^4.5.0",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.2.0"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
+      "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
+      "dependencies": {
+        "@vue/compiler-core": "3.5.13",
+        "@vue/shared": "3.5.13"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
+      "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
+      "dependencies": {
+        "@babel/parser": "^7.25.3",
+        "@vue/compiler-core": "3.5.13",
+        "@vue/compiler-dom": "3.5.13",
+        "@vue/compiler-ssr": "3.5.13",
+        "@vue/shared": "3.5.13",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.11",
+        "postcss": "^8.4.48",
+        "source-map-js": "^1.2.0"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
+      "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.5.13",
+        "@vue/shared": "3.5.13"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.6.4",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+      "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/reactivity/-/reactivity-3.5.13.tgz",
+      "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
+      "dependencies": {
+        "@vue/shared": "3.5.13"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
+      "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
+      "dependencies": {
+        "@vue/reactivity": "3.5.13",
+        "@vue/shared": "3.5.13"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
+      "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
+      "dependencies": {
+        "@vue/reactivity": "3.5.13",
+        "@vue/runtime-core": "3.5.13",
+        "@vue/shared": "3.5.13",
+        "csstype": "^3.1.3"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
+      "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.5.13",
+        "@vue/shared": "3.5.13"
+      },
+      "peerDependencies": {
+        "vue": "3.5.13"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vue/shared/-/shared-3.5.13.tgz",
+      "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ=="
+    },
+    "node_modules/@vueuse/core": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vueuse/core/-/core-9.13.0.tgz",
+      "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+      "dependencies": {
+        "@types/web-bluetooth": "^0.0.16",
+        "@vueuse/metadata": "9.13.0",
+        "@vueuse/shared": "9.13.0",
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/metadata": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vueuse/metadata/-/metadata-9.13.0.tgz",
+      "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@vueuse/shared/-/shared-9.13.0.tgz",
+      "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+      "dependencies": {
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@xterm/xterm": {
+      "version": "5.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/@xterm/xterm/-/xterm-5.5.0.tgz",
+      "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A=="
+    },
+    "node_modules/abab": {
+      "version": "2.0.6",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/abab/-/abab-2.0.6.tgz",
+      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+      "deprecated": "Use your platform's native atob() and btoa() methods instead"
+    },
+    "node_modules/agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "dependencies": {
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "6.1.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-6.1.0.tgz",
+      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "6.2.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-6.2.1.tgz",
+      "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
+    "node_modules/axios": {
+      "version": "1.7.9",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/axios/-/axios-1.7.9.tgz",
+      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+      "dependencies": {
+        "follow-redirects": "^1.15.6",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "node_modules/blockly": {
+      "version": "10.4.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/blockly/-/blockly-10.4.3.tgz",
+      "integrity": "sha512-+opfBmQnSiv7vTiY/TkDEBOslxUyfj8luS3S+qs1NnQKjInC+Waf2l9cNsMh9J8BMkmiCIT+Ed/3mmjIaL9wug==",
+      "dependencies": {
+        "jsdom": "22.1.0"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "optional": true,
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "4.0.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/chokidar/-/chokidar-4.0.3.tgz",
+      "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+      "dependencies": {
+        "readdirp": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 14.16.0"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/codemirror": {
+      "version": "6.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/codemirror/-/codemirror-6.0.1.tgz",
+      "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
+      "dependencies": {
+        "@codemirror/autocomplete": "^6.0.0",
+        "@codemirror/commands": "^6.0.0",
+        "@codemirror/language": "^6.0.0",
+        "@codemirror/lint": "^6.0.0",
+        "@codemirror/search": "^6.0.0",
+        "@codemirror/state": "^6.0.0",
+        "@codemirror/view": "^6.0.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/crelt": {
+      "version": "1.0.6",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/crelt/-/crelt-1.0.6.tgz",
+      "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.6",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/cross-spawn/-/cross-spawn-7.0.6.tgz",
+      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/cssstyle": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/cssstyle/-/cssstyle-3.0.0.tgz",
+      "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==",
+      "dependencies": {
+        "rrweb-cssom": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.1.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/csstype/-/csstype-3.1.3.tgz",
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+    },
+    "node_modules/data-urls": {
+      "version": "4.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/data-urls/-/data-urls-4.0.0.tgz",
+      "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==",
+      "dependencies": {
+        "abab": "^2.0.6",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^12.0.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/dayjs": {
+      "version": "1.11.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/dayjs/-/dayjs-1.11.13.tgz",
+      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+    },
+    "node_modules/debug": {
+      "version": "4.4.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/debug/-/debug-4.4.0.tgz",
+      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+      "dependencies": {
+        "ms": "^2.1.3"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decimal.js": {
+      "version": "10.4.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/decimal.js/-/decimal.js-10.4.3.tgz",
+      "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/detect-libc": {
+      "version": "1.0.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/detect-libc/-/detect-libc-1.0.3.tgz",
+      "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+      "optional": true,
+      "bin": {
+        "detect-libc": "bin/detect-libc.js"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/domexception": {
+      "version": "4.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/domexception/-/domexception-4.0.0.tgz",
+      "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+      "deprecated": "Use your platform's native DOMException instead",
+      "dependencies": {
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/eastasianwidth": {
+      "version": "0.2.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+    },
+    "node_modules/element-plus": {
+      "version": "2.9.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/element-plus/-/element-plus-2.9.1.tgz",
+      "integrity": "sha512-9Agqf/jt4Ugk7EZ6C5LME71sgkvauPCsnvJN12Xid2XVobjufxMGpRE4L7pS4luJMOmFAH3J0NgYEGZT5r+NDg==",
+      "dependencies": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.3.1",
+        "@floating-ui/dom": "^1.0.1",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.13",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "9.2.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-9.2.2.tgz",
+      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+    },
+    "node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/esbuild": {
+      "version": "0.24.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/esbuild/-/esbuild-0.24.0.tgz",
+      "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==",
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "optionalDependencies": {
+        "@esbuild/aix-ppc64": "0.24.0",
+        "@esbuild/android-arm": "0.24.0",
+        "@esbuild/android-arm64": "0.24.0",
+        "@esbuild/android-x64": "0.24.0",
+        "@esbuild/darwin-arm64": "0.24.0",
+        "@esbuild/darwin-x64": "0.24.0",
+        "@esbuild/freebsd-arm64": "0.24.0",
+        "@esbuild/freebsd-x64": "0.24.0",
+        "@esbuild/linux-arm": "0.24.0",
+        "@esbuild/linux-arm64": "0.24.0",
+        "@esbuild/linux-ia32": "0.24.0",
+        "@esbuild/linux-loong64": "0.24.0",
+        "@esbuild/linux-mips64el": "0.24.0",
+        "@esbuild/linux-ppc64": "0.24.0",
+        "@esbuild/linux-riscv64": "0.24.0",
+        "@esbuild/linux-s390x": "0.24.0",
+        "@esbuild/linux-x64": "0.24.0",
+        "@esbuild/netbsd-x64": "0.24.0",
+        "@esbuild/openbsd-arm64": "0.24.0",
+        "@esbuild/openbsd-x64": "0.24.0",
+        "@esbuild/sunos-x64": "0.24.0",
+        "@esbuild/win32-arm64": "0.24.0",
+        "@esbuild/win32-ia32": "0.24.0",
+        "@esbuild/win32-x64": "0.24.0"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "optional": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.15.9",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/follow-redirects/-/follow-redirects-1.15.9.tgz",
+      "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/foreground-child": {
+      "version": "3.3.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/foreground-child/-/foreground-child-3.3.0.tgz",
+      "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+      "dependencies": {
+        "cross-spawn": "^7.0.0",
+        "signal-exit": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/form-data/-/form-data-4.0.1.tgz",
+      "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/glob": {
+      "version": "10.4.5",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/glob/-/glob-10.4.5.tgz",
+      "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+      "dependencies": {
+        "foreground-child": "^3.1.0",
+        "jackspeak": "^3.1.2",
+        "minimatch": "^9.0.4",
+        "minipass": "^7.1.2",
+        "package-json-from-dist": "^1.0.0",
+        "path-scurry": "^1.11.1"
+      },
+      "bin": {
+        "glob": "dist/esm/bin.mjs"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/html-encoding-sniffer": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+      "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+      "dependencies": {
+        "whatwg-encoding": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/http-proxy-agent": {
+      "version": "5.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+      "dependencies": {
+        "@tootallnate/once": "2",
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "dependencies": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/immutable": {
+      "version": "5.0.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/immutable/-/immutable-5.0.3.tgz",
+      "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw=="
+    },
+    "node_modules/install": {
+      "version": "0.13.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/install/-/install-0.13.0.tgz",
+      "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "optional": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "optional": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-potential-custom-element-name": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+      "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+    },
+    "node_modules/jackspeak": {
+      "version": "3.4.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/jackspeak/-/jackspeak-3.4.3.tgz",
+      "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+      "dependencies": {
+        "@isaacs/cliui": "^8.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      },
+      "optionalDependencies": {
+        "@pkgjs/parseargs": "^0.11.0"
+      }
+    },
+    "node_modules/jsdom": {
+      "version": "22.1.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/jsdom/-/jsdom-22.1.0.tgz",
+      "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==",
+      "dependencies": {
+        "abab": "^2.0.6",
+        "cssstyle": "^3.0.0",
+        "data-urls": "^4.0.0",
+        "decimal.js": "^10.4.3",
+        "domexception": "^4.0.0",
+        "form-data": "^4.0.0",
+        "html-encoding-sniffer": "^3.0.0",
+        "http-proxy-agent": "^5.0.0",
+        "https-proxy-agent": "^5.0.1",
+        "is-potential-custom-element-name": "^1.0.1",
+        "nwsapi": "^2.2.4",
+        "parse5": "^7.1.2",
+        "rrweb-cssom": "^0.6.0",
+        "saxes": "^6.0.0",
+        "symbol-tree": "^3.2.4",
+        "tough-cookie": "^4.1.2",
+        "w3c-xmlserializer": "^4.0.0",
+        "webidl-conversions": "^7.0.0",
+        "whatwg-encoding": "^2.0.0",
+        "whatwg-mimetype": "^3.0.0",
+        "whatwg-url": "^12.0.1",
+        "ws": "^8.13.0",
+        "xml-name-validator": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=16"
+      },
+      "peerDependencies": {
+        "canvas": "^2.5.0"
+      },
+      "peerDependenciesMeta": {
+        "canvas": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/ll": {
+      "version": "1.2.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ll/-/ll-1.2.0.tgz",
+      "integrity": "sha512-9ewyNCAYK3iM/d+gfUym1rxJ0zLLj6+ycd9R5D9LZrjZyfpWLJ1yxteomc2Js7BK+3UyB5ET20GMjUCxbWVUuw=="
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "node_modules/lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "node_modules/lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "peerDependencies": {
+        "@types/lodash-es": "*",
+        "lodash": "*",
+        "lodash-es": "*"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "10.4.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/lru-cache/-/lru-cache-10.4.3.tgz",
+      "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.17",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/magic-string/-/magic-string-0.30.17.tgz",
+      "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.5.0"
+      }
+    },
+    "node_modules/material-icons": {
+      "version": "1.13.12",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/material-icons/-/material-icons-1.13.12.tgz",
+      "integrity": "sha512-/2YoaB79IjUK2B2JB+vIXXYGtBfHb/XG66LvoKVM5ykHW7yfrV5SP6d7KLX6iijY6/G9GqwgtPQ/sbhFnOURVA=="
+    },
+    "node_modules/memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+      "optional": true,
+      "dependencies": {
+        "braces": "^3.0.3",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/minipass": {
+      "version": "7.1.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/nanoid/-/nanoid-3.3.8.tgz",
+      "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/node-addon-api": {
+      "version": "7.1.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/node-addon-api/-/node-addon-api-7.1.1.tgz",
+      "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+      "optional": true
+    },
+    "node_modules/normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "node_modules/nwsapi": {
+      "version": "2.2.16",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/nwsapi/-/nwsapi-2.2.16.tgz",
+      "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ=="
+    },
+    "node_modules/package-json-from-dist": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
+    },
+    "node_modules/parse5": {
+      "version": "7.2.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/parse5/-/parse5-7.2.1.tgz",
+      "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+      "dependencies": {
+        "entities": "^4.5.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-scurry": {
+      "version": "1.11.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/path-scurry/-/path-scurry-1.11.1.tgz",
+      "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+      "dependencies": {
+        "lru-cache": "^10.2.0",
+        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "optional": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pinia": {
+      "version": "2.3.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/pinia/-/pinia-2.3.0.tgz",
+      "integrity": "sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.6.3",
+        "vue-demi": "^0.14.10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.4.4",
+        "vue": "^2.7.0 || ^3.5.11"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.49",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/postcss/-/postcss-8.4.49.tgz",
+      "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "nanoid": "^3.3.7",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
+    "node_modules/psl": {
+      "version": "1.15.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/psl/-/psl-1.15.0.tgz",
+      "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
+      "dependencies": {
+        "punycode": "^2.3.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/lupomontero"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+    },
+    "node_modules/readdirp": {
+      "version": "4.0.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/readdirp/-/readdirp-4.0.2.tgz",
+      "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+      "engines": {
+        "node": ">= 14.16.0"
+      },
+      "funding": {
+        "type": "individual",
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+    },
+    "node_modules/rimraf": {
+      "version": "5.0.10",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/rimraf/-/rimraf-5.0.10.tgz",
+      "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
+      "dependencies": {
+        "glob": "^10.3.7"
+      },
+      "bin": {
+        "rimraf": "dist/esm/bin.mjs"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "4.29.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/rollup/-/rollup-4.29.1.tgz",
+      "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==",
+      "dependencies": {
+        "@types/estree": "1.0.6"
+      },
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=18.0.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "@rollup/rollup-android-arm-eabi": "4.29.1",
+        "@rollup/rollup-android-arm64": "4.29.1",
+        "@rollup/rollup-darwin-arm64": "4.29.1",
+        "@rollup/rollup-darwin-x64": "4.29.1",
+        "@rollup/rollup-freebsd-arm64": "4.29.1",
+        "@rollup/rollup-freebsd-x64": "4.29.1",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.29.1",
+        "@rollup/rollup-linux-arm-musleabihf": "4.29.1",
+        "@rollup/rollup-linux-arm64-gnu": "4.29.1",
+        "@rollup/rollup-linux-arm64-musl": "4.29.1",
+        "@rollup/rollup-linux-loongarch64-gnu": "4.29.1",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1",
+        "@rollup/rollup-linux-riscv64-gnu": "4.29.1",
+        "@rollup/rollup-linux-s390x-gnu": "4.29.1",
+        "@rollup/rollup-linux-x64-gnu": "4.29.1",
+        "@rollup/rollup-linux-x64-musl": "4.29.1",
+        "@rollup/rollup-win32-arm64-msvc": "4.29.1",
+        "@rollup/rollup-win32-ia32-msvc": "4.29.1",
+        "@rollup/rollup-win32-x64-msvc": "4.29.1",
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/rrweb-cssom": {
+      "version": "0.6.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
+      "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw=="
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "node_modules/sass": {
+      "version": "1.83.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/sass/-/sass-1.83.0.tgz",
+      "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==",
+      "dependencies": {
+        "chokidar": "^4.0.0",
+        "immutable": "^5.0.2",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "bin": {
+        "sass": "sass.js"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "optionalDependencies": {
+        "@parcel/watcher": "^2.4.1"
+      }
+    },
+    "node_modules/saxes": {
+      "version": "6.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/saxes/-/saxes-6.0.0.tgz",
+      "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+      "dependencies": {
+        "xmlchars": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=v12.22.7"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "4.1.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/signal-exit/-/signal-exit-4.1.0.tgz",
+      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.2.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "5.1.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-5.1.2.tgz",
+      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+      "dependencies": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^9.2.2",
+        "strip-ansi": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/string-width-cjs": {
+      "name": "string-width",
+      "version": "4.2.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string-width-cjs/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/string-width-cjs/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "node_modules/string-width-cjs/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+      }
+    },
+    "node_modules/strip-ansi-cjs": {
+      "name": "strip-ansi",
+      "version": "6.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/style-mod": {
+      "version": "4.1.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/style-mod/-/style-mod-4.1.2.tgz",
+      "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw=="
+    },
+    "node_modules/symbol-tree": {
+      "version": "3.2.4",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/symbol-tree/-/symbol-tree-3.2.4.tgz",
+      "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "optional": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/tough-cookie": {
+      "version": "4.1.4",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/tough-cookie/-/tough-cookie-4.1.4.tgz",
+      "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+      "dependencies": {
+        "psl": "^1.1.33",
+        "punycode": "^2.1.1",
+        "universalify": "^0.2.0",
+        "url-parse": "^1.5.3"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "4.1.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/tr46/-/tr46-4.1.1.tgz",
+      "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
+      "dependencies": {
+        "punycode": "^2.3.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "0.2.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/universalify/-/universalify-0.2.0.tgz",
+      "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/url-parse": {
+      "version": "1.5.10",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/vite": {
+      "version": "6.0.5",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/vite/-/vite-6.0.5.tgz",
+      "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==",
+      "dependencies": {
+        "esbuild": "0.24.0",
+        "postcss": "^8.4.49",
+        "rollup": "^4.23.0"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.3"
+      },
+      "peerDependencies": {
+        "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+        "jiti": ">=1.21.0",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "sass-embedded": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.16.0",
+        "tsx": "^4.8.1",
+        "yaml": "^2.4.2"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "jiti": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "sass-embedded": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        },
+        "tsx": {
+          "optional": true
+        },
+        "yaml": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.5.13",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/vue/-/vue-3.5.13.tgz",
+      "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.5.13",
+        "@vue/compiler-sfc": "3.5.13",
+        "@vue/runtime-dom": "3.5.13",
+        "@vue/server-renderer": "3.5.13",
+        "@vue/shared": "3.5.13"
+      },
+      "peerDependencies": {
+        "typescript": "*"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-codemirror": {
+      "version": "6.1.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/vue-codemirror/-/vue-codemirror-6.1.1.tgz",
+      "integrity": "sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==",
+      "dependencies": {
+        "@codemirror/commands": "6.x",
+        "@codemirror/language": "6.x",
+        "@codemirror/state": "6.x",
+        "@codemirror/view": "6.x"
+      },
+      "peerDependencies": {
+        "codemirror": "6.x",
+        "vue": "3.x"
+      }
+    },
+    "node_modules/vue-demi": {
+      "version": "0.14.10",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/vue-demi/-/vue-demi-0.14.10.tgz",
+      "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-router": {
+      "version": "4.5.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/vue-router/-/vue-router-4.5.0.tgz",
+      "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.6.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/w3c-keyname": {
+      "version": "2.2.8",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
+      "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+    },
+    "node_modules/w3c-xmlserializer": {
+      "version": "4.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+      "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
+      "dependencies": {
+        "xml-name-validator": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "7.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-encoding": {
+      "version": "2.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
+      "dependencies": {
+        "iconv-lite": "0.6.3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-mimetype": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-url": {
+      "version": "12.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/whatwg-url/-/whatwg-url-12.0.1.tgz",
+      "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
+      "dependencies": {
+        "tr46": "^4.1.1",
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "8.1.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+      "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+      "dependencies": {
+        "ansi-styles": "^6.1.0",
+        "string-width": "^5.0.1",
+        "strip-ansi": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi-cjs": {
+      "name": "wrap-ansi",
+      "version": "7.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.18.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/ws/-/ws-8.18.0.tgz",
+      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xml-name-validator": {
+      "version": "4.0.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/xmlchars": {
+      "version": "2.2.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/xmlchars/-/xmlchars-2.2.0.tgz",
+      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
+    },
+    "node_modules/xterm": {
+      "version": "5.3.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/xterm/-/xterm-5.3.0.tgz",
+      "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==",
+      "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.",
+      "peer": true
+    },
+    "node_modules/xterm-addon-fit": {
+      "version": "0.8.0",
+      "resolved": "https://mirrors.cloud.tencent.com/npm/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz",
+      "integrity": "sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw==",
+      "deprecated": "This package is now deprecated. Move to @xterm/addon-fit instead.",
+      "peerDependencies": {
+        "xterm": "^5.0.0"
+      }
+    }
+  }
+}

+ 35 - 0
package.json

@@ -0,0 +1,35 @@
+{
+  "name": "my-vue3-project",
+  "version": "0.0.0",
+  "private": true,
+  "type": "module",
+  "scripts": {
+    "dev": "vite",
+    "build": "vite build",
+    "preview": "vite preview"
+  },
+  "dependencies": {
+    "@codemirror/lang-python": "^6.1.6",
+    "@codemirror/theme-one-dark": "^6.1.2",
+    "@codemirror/view": "^6.36.1",
+    "@element-plus/icons-vue": "^2.3.1",
+    "@vitejs/plugin-vue": "^5.2.1",
+    "@xterm/xterm": "^5.5.0",
+    "axios": "^1.6.5",
+    "blockly": "^10.3.0",
+    "codemirror": "6.0.1",
+    "element-plus": "^2.5.1",
+    "install": "^0.13.0",
+    "ll": "^1.2.0",
+    "lodash": "^4.17.21",
+    "material-icons": "^1.13.12",
+    "pinia": "^2.1.7",
+    "rimraf": "^5.0.5",
+    "sass": "^1.70.0",
+    "vite": "^6.0.5",
+    "vue": "^3.3.11",
+    "vue-codemirror": "^6.1.1",
+    "vue-router": "^4.2.5",
+    "xterm-addon-fit": "^0.8.0"
+  }
+}

BIN=BIN
public/favicon.ico


+ 47 - 0
src/App.vue

@@ -0,0 +1,47 @@
+<script setup>
+import { ref, watch, watchEffect } from "vue";
+import BlocklyComponent from "./components/BlocklyComponent.vue";
+import Header from './components/header/header.vue'
+import Footer from './components/footer/footer.vue'
+import store from './stores/blockly'
+
+const xmlStr = store.useyXmlStore()
+const pythonCode = store.useyPythonCodeStore()
+
+// watch(xmlStr,(newVal,oldVal)=>{
+//   console.log("newVal",newVal.xmlStr)
+//   console.log("oldVal",oldVal.xmlStr)
+// })
+watchEffect(() => {
+  console.log(xmlStr.xmlStr, pythonCode.pythonCode)
+})
+</script>
+
+<template>
+  <div class="main">
+    <Header></Header>
+    <div id="blockly">
+      <BlocklyComponent></BlocklyComponent>
+    </div>
+    <Footer></Footer>
+  </div>
+</template>
+
+<style scoped lang="scss">
+.main {
+  height: 100%;
+  display: flex;
+  flex-flow: wrap;
+
+  #blockly {
+    width: 100%;
+    height: calc(100% - 120px);
+  }
+}
+
+
+#blockly1 {
+  /* width: 90vw;
+  height: 90vh; */
+}
+</style>

+ 86 - 0
src/assets/css/base.css

@@ -0,0 +1,86 @@
+/* color palette from <https://github.com/vuejs/theme> */
+:root {
+  --vt-c-white: #ffffff;
+  --vt-c-white-soft: #f8f8f8;
+  --vt-c-white-mute: #f2f2f2;
+
+  --vt-c-black: #181818;
+  --vt-c-black-soft: #222222;
+  --vt-c-black-mute: #282828;
+
+  --vt-c-indigo: #2c3e50;
+
+  --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
+  --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
+  --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
+  --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
+
+  --vt-c-text-light-1: var(--vt-c-indigo);
+  --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
+  --vt-c-text-dark-1: var(--vt-c-white);
+  --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
+}
+
+/* semantic color variables for this project */
+:root {
+  --color-background: var(--vt-c-white);
+  --color-background-soft: var(--vt-c-white-soft);
+  --color-background-mute: var(--vt-c-white-mute);
+
+  --color-border: var(--vt-c-divider-light-2);
+  --color-border-hover: var(--vt-c-divider-light-1);
+
+  --color-heading: var(--vt-c-text-light-1);
+  --color-text: var(--vt-c-text-light-1);
+
+  --section-gap: 160px;
+}
+
+@media (prefers-color-scheme: dark) {
+  :root {
+    --color-background: var(--vt-c-black);
+    --color-background-soft: var(--vt-c-black-soft);
+    --color-background-mute: var(--vt-c-black-mute);
+
+    --color-border: var(--vt-c-divider-dark-2);
+    --color-border-hover: var(--vt-c-divider-dark-1);
+
+    --color-heading: var(--vt-c-text-dark-1);
+    --color-text: var(--vt-c-text-dark-2);
+  }
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+  margin: 0;
+  font-weight: normal;
+}
+
+body {
+  min-height: 100vh;
+  color: var(--color-text);
+  background: var(--color-background);
+  transition:
+    color 0.5s,
+    background-color 0.5s;
+  line-height: 1.6;
+  font-family:
+    Inter,
+    -apple-system,
+    BlinkMacSystemFont,
+    'Segoe UI',
+    Roboto,
+    Oxygen,
+    Ubuntu,
+    Cantarell,
+    'Fira Sans',
+    'Droid Sans',
+    'Helvetica Neue',
+    sans-serif;
+  font-size: 15px;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}

+ 2062 - 0
src/assets/css/blockly.css

@@ -0,0 +1,2062 @@
+#\:1>.blocklyTreeRow>.blocklyTreeIconClosedLtr,
+#\:a>.blocklyTreeRow>.blocklyTreeIconClosedLtr,
+#\:s>.blocklyTreeRow>.blocklyTreeIconClosedLtr {
+	background-image: url(<<<PATH>>>/sprites.png);
+	height: 18px;
+	vertical-align: middle;
+	width: 18px;
+	background-size: 100% 100%;
+	background-repeat: no-repeat;
+}
+
+#\:1>.blocklyTreeRow>.blocklyTreeIconOpen,
+#\:a>.blocklyTreeRow>.blocklyTreeIconOpen,
+#\:s>.blocklyTreeRow>.blocklyTreeIconOpen {
+	background-image: url(<<<PATH>>>/expand_open.png);
+	height: 18px;
+	vertical-align: middle;
+	width: 18px;
+	background-size: 100% 100%;
+	background-repeat: no-repeat;
+}
+
+@font-face {
+	font-family: "GT Walsheim Pro Trial";
+	/*
+	src: url("../fonts/gt/GT-Walsheim-Pro-Trial-Regular.otf") format("opentype");
+  */
+}
+
+@font-face {
+	font-family: "GT Walsheim Pro Trial Bold";
+	/*
+	src: url("../fonts/gt/GT-Walsheim-Pro-Trial-Bold.otf") format("opentype");
+  */
+}
+
+@font-face {
+	font-family: 'Material Icons';
+	font-style: normal;
+	font-weight: 400;
+	src: url(MaterialIcons-Regular.eot);
+	src: local('Material Icons'), local('MaterialIcons-Regular'),
+		url(../fonts/material-design-icons/MaterialIcons-Regular.ttf) format('truetype');
+}
+
+.material-icons {
+	font-family: 'Material Icons';
+	font-weight: normal;
+	font-style: normal;
+	font-size: 24px;
+	/* Preferred icon size */
+	display: inline-block;
+	line-height: 1;
+	text-transform: none;
+	letter-spacing: normal;
+	word-wrap: normal;
+	white-space: nowrap;
+	direction: ltr;
+	/* Support for all WebKit browsers. */
+	-webkit-font-smoothing: antialiased;
+	/* Support for Safari and Chrome. */
+	text-rendering: optimizeLegibility;
+	/* Support for Firefox. */
+	-moz-osx-font-smoothing: grayscale;
+	/* Support for IE. */
+	font-feature-settings: 'liga';
+}
+
+@media only screen and (min-width: 1380px) {
+
+	#blockpy-container,
+	#footer>div,
+	#blockpy-div {
+		width: 100%;
+		/*padding: 0 1.5rem;*/
+	}
+
+	#blockpy-content {
+		display: grid;
+		/*padding-top: 32px;*/
+		grid-template-columns: 66.6667% 33.3333%;
+	}
+
+	#blockpy-content>div:first-child {}
+
+	#blockpy-content>div:last-child {}
+}
+
+@media only screen and (min-width: 1075px) and (max-width: 1379px) {
+
+	#blockpy-container,
+	#footer>div,
+	#blockpy-div {
+		width: 100%;
+	}
+
+	#blockpy-content {
+		display: grid;
+		grid-template-columns: 66.6667% 33.3333%;
+	}
+
+	#blockpy-content>div:first-child {}
+
+	#blockpy-content>div:last-child {}
+}
+
+@media only screen and (min-width: 601px) and (max-width: 1074px) {
+
+	#blockpy-container,
+	#footer>div,
+	#blockpy-div {
+		width: 100%;
+	}
+
+	#blockpy-content {
+		display: grid;
+		/*grid-template-columns: 100%;*/
+		grid-template-columns: 66.6667% 33.3333%;
+		grid-template-rows: auto;
+	}
+
+	#blockpy-content>div:first-child {}
+
+	#blockpy-content>div:last-child {}
+
+	#main_content {
+		width: 100%;
+	}
+}
+
+@media only screen and (min-width: 0px) and (max-width: 992px) {
+	#nav {
+		display: none;
+	}
+}
+
+@media only screen and (min-width: 0px) and (max-width: 600px) {
+
+	#blockpy-container,
+	#footer>div,
+	#blockpy-div {
+		width: 100%;
+	}
+
+	#blockpy-content {
+		display: grid;
+		padding-bottom: 12px;
+		grid-template-columns: 100%;
+		grid-template-rows: auto;
+		display: block !important;
+	}
+
+	#blockpy-content>div:first-child {
+		padding-bottom: 0.25rem;
+	}
+
+	#blockpy-content>div:last-child {}
+
+	#logo>span:first-child {
+		display: none;
+	}
+
+	#footer>div {
+		grid-template-columns: max-content !important;
+		justify-content: center;
+	}
+
+	#footer>div>div:last-child {
+		display: none;
+	}
+}
+
+html {
+	font-family: Nunito, sans-serif;
+	font-weight: normal;
+	color: rgba(0, 0, 0, 0.87);
+	min-width: 370px;
+}
+
+html.fullscreenMode {
+	overflow: hidden;
+}
+
+body {
+	margin: 0;
+	background-color: #eeeeee;
+}
+
+.hidden {
+	display: none;
+}
+
+#white-box {
+	position: fixed;
+	top: 0;
+	left: 0;
+	height: 100vh;
+	width: 100vw;
+	background-color: #fff;
+	z-index: 1000;
+}
+
+#preloader {
+	width: max-content;
+	margin: auto;
+	position: relative;
+	top: 50%;
+	transform: translateY(-50%);
+}
+
+#container {
+	width: 100%;
+	height: 100%;
+	display: grid;
+	grid-template-rows: 64px 1fr 47px;
+}
+
+#container,
+#container * {
+	box-sizing: border-box;
+}
+
+#header {
+	background-color: #2c4fcd;
+	color: #ffffff;
+}
+
+#logo {
+	align-self: center;
+}
+
+#logo>i {
+	display: inline;
+}
+
+#logo>span:first-child {
+	font-size: 28px;
+	font-weight: 400;
+	font-family: 'GT Walsheim Pro Trial Bold';
+}
+
+#delete-all,
+#screenshot {
+	cursor: pointer;
+}
+
+.vertical-separator {
+	padding: 8px 3px 8px 3px;
+	margin-left: 6px;
+	border-left: 1px solid rgba(228, 228, 228, 0.87);
+	font-size: 16px;
+}
+
+#nav {
+	align-self: center;
+}
+
+/*
+  
+  .nav-icon {
+	display: block;
+	height: 30px;
+	transform: translateY(50%);
+	margin-right: 5px;
+  }
+  */
+
+.arduino_teal {
+	background-color: #2c4fcd;
+}
+
+#sketch_name {
+	width: 100px;
+	height: 32px;
+	line-height: 32px;
+	font-size: 1.2rem;
+	border: 0;
+	outline: 0;
+	color: #fff;
+	font-style: italic;
+	margin-left: 30px;
+	margin-bottom: 0;
+
+}
+
+#sketch_name:focus {
+	border: none;
+	border-bottom: 1px solid #eee;
+}
+
+#footer {
+	background-color: #2c4fcd;
+}
+
+#footer>div {
+	margin: 0 auto;
+	height: 100%;
+	display: grid;
+	grid-template-columns: max-content auto;
+	color: #fff;
+}
+
+#footer>div>div {
+	align-self: center;
+}
+
+#footer>div>div:first-child {
+	justify-self: start;
+}
+
+#footer>div>div:last-child {
+	justify-self: end;
+}
+
+#blockpy-div {
+	margin: 0 auto;
+}
+
+#blockpy-div>div:first-child {
+	height: 100%;
+}
+
+#blockpy-content>div {
+	height: calc(100vh - 111px);
+}
+
+#blockpy-content>div:first-child {
+	/*margin-top: 0.5rem;*/
+}
+
+#blockpy-content>div:last-child {
+	display: grid;
+	grid-template-rows: 40% 60%;
+}
+
+#blockpy-content>div:last-child>div {
+	display: grid;
+	grid-template-rows: 60px 1fr;
+}
+
+#blockpy-content>div:last-child>div:first-child {}
+
+#blockpy-content .card-panel {
+	margin: 0;
+	padding: 0;
+}
+
+#blockpy-content>div:first-child>div:first-child {
+	position: relative;
+}
+
+.fullscreen {
+	position: fixed !important;
+	/* top: 75px; */
+	left: 0;
+	margin: 0 !important;
+	padding: 0 !important;
+	height: calc(100vh - 111px) !important;
+	width: 100% !important;
+	z-index: 10;
+}
+
+img.fullscreenIcon {
+	z-index: 1;
+	width: 36px;
+	cursor: pointer;
+}
+
+#blockpy-content>.blockpy-editor img.fullscreenIcon {
+	position: absolute;
+	top: 6px;
+	right: 6px;
+}
+
+.card-header {
+	padding: 0px 6px;
+	border-bottom: 1px solid #ddd;
+}
+
+.card-header>img.fullscreenIcon {
+	float: right;
+	height: 100%;
+}
+
+@media screen and (max-width: 1025px) {
+	.card-header span.header-text {
+		margin-left: 0 !important;
+	}
+}
+
+.card-header>span.header-icon {
+	width: 3rem;
+	font-size: 1.6rem;
+	line-height: 3rem;
+	font-weight: bold;
+	float: left;
+	text-align: center;
+	margin-right: 1rem;
+}
+
+.card-header>span.header-text {
+	font-size: 1rem;
+	line-height: 40px;
+	font-weight: 200;
+	max-width: 120px;
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+	-o-text-overflow: ellipsis;
+}
+
+.card-content {
+	overflow-y: auto;
+}
+
+#icon-tool {
+	position: fixed;
+	top: 110px;
+	right: 6px;
+	transform: translate(80%);
+	transition: all 0.3s linear;
+	border-right: 1px solid #ddd;
+	border-left: 6px solid #3258cd;
+	background-color: #fff;
+	margin: 0;
+	width: 45px;
+	z-index: 999;
+	overflow: hidden;
+}
+
+#icon-tool:hover {
+	transform: translate(0);
+}
+
+#icon-tool>li {
+	cursor: pointer;
+	width: 40px;
+	height: 40px;
+}
+
+#icon-tool>li:hover {
+	background-color: rgba(0, 0, 0, 0.1);
+}
+
+#icon-tool>li.active {
+	transition: background-color 0.5s, border-color 0.5s;
+	background-color: #3258cd;
+	border-color: #3258cd;
+	color: #fff;
+}
+
+#icon-tool>li>* {
+	position: relative;
+	transform: translate(-50%, -50%);
+}
+
+#side-lang-trigger {
+	position: fixed;
+	top: 200px;
+	right: 170px;
+	z-index: 999;
+}
+
+#side-file-trigger {
+	position: fixed;
+	top: 160px;
+	right: 170px;
+	z-index: 999;
+}
+
+.blocklyWidgetDiv .goog-menu {
+	position: fixed !important;
+}
+
+.blocklyToolboxDiv {
+	border-color: #fcfcfc !important;
+	border-width: 0px 1px 0px 0px !important;
+	-webkit-border-radius: 0px 4px 4px 0px !important;
+	-moz-border-radius: 4px 4px 0px 0px !important;
+	border-radius: 0px 4px 4px 0px !important;
+	border: none !important;
+	margin: 0px !important;
+	padding: 0px 0px 0px 0px !important;
+	background: rgba(236, 241, 247, 0.8) !important;
+}
+
+.blocklyFlyoutBackground {
+	fill: #d0f0ffbf !important;
+	fill-opacity: 0.9 !important;
+	-webkit-border-radius: 0px 4px 4px 0px !important;
+	-moz-border-radius: 0px 4px 4px 0px !important;
+	border-radius: 0px 4px 4px 0px !important;
+}
+
+.blocklyHtmlInput {
+	border: none !important;
+	border-radius: 4px !important;
+	font-family: sans-serif !important;
+	height: 100% !important;
+	margin: 0 !important;
+	outline: none !important;
+	padding: 0 1px !important;
+	width: 100% !important;
+	background-color: white !important;
+}
+
+.blocklyTreeRoot>div:nth-child(2)>div {
+	border-bottom: 1px solid #eaeaea;
+}
+
+.blocklyTreeRoot>div:nth-child(2)>div>div:nth-child(1) {
+	height: 40px;
+	line-height: 40px;
+	margin-bottom: 0px;
+}
+
+.blocklyTreeRoot {
+	background: none !important;
+	border: none !important;
+	/*margin: 36px 0px 0px 0px !important;*/
+	margin: 0px 0px 0px 0px !important;
+	padding: 0px 1px !important;
+	height: 100%;
+	/* Standard */
+	overflow-x: hidden;
+	overflow-y: auto;
+}
+
+.blocklyTreeRow {
+	height: 40px;
+	line-height: 40px;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+/* ----------------------------- */
+
+.blockpy-explorer {
+	height: 100%;
+}
+
+.blockpy-explorer table {
+	width: 100%;
+	text-align: center;
+}
+
+.blockpy-explorer-errors {
+	text-align: left;
+}
+
+.blockpy-upload {
+	border: 1px solid lightgray;
+}
+
+.blockpy-printer {
+	height: 265px;
+	overflow: auto;
+	resize: vertical;
+}
+
+.blockpy-printer-default {
+	background-color: white;
+}
+
+.blockpy-printer-inverse {
+	background-color: black;
+	border: 1px solid darkgray;
+	color: white;
+}
+
+.blockpy-printer .blockpy-printer-output {
+	display: block;
+	padding-left: 10px;
+	border-bottom: 1px dashed lightgray;
+}
+
+.blockpy-printer .blockpy-printer-output samp {
+	white-space: pre;
+}
+
+.blockpy-bottom {
+	height: 25%;
+}
+
+.blockpy-header {
+	height: 25%;
+}
+
+.editor-active-line {
+	background: #c4fbc4 !important;
+	color: #8a1f11 !important;
+}
+
+.CodeMirror-gutters {
+	background-color: #ddd;
+	border-left: 1px solid #bbb;
+}
+
+.editor-error-line {
+	background: #fbc4c4 !important;
+	color: #8a1f11 !important;
+}
+
+.note-editable {
+	background-color: white;
+}
+
+.label-internal-error {
+	background-color: black;
+}
+
+.label-syntax-error {
+	background-color: darkred;
+}
+
+.label-runtime-error {
+	background-color: #d9534f;
+}
+
+.label-semantic-error {
+	background-color: orangered;
+}
+
+.label-feedback-error {
+	background-color: #f0ad4e;
+}
+
+.label-problem-complete {
+	background-color: #5cb85c;
+}
+
+.label-none {
+	background-color: rgba(0, 0, 0, 0);
+}
+
+.label-no-errors {
+	background-color: #5bc0de;
+}
+
+.blockpy-feedback-traces table {
+	background: white;
+	width: 100%;
+}
+
+.CodeMirror-code div pre {
+	border-bottom: 1px dashed rgba(1, 1, 1, 0.1);
+}
+
+.blockpy-read-only .CodeMirror-scroll {
+	background-color: #e5e5e5;
+}
+
+.blockpy-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	background-color: #000;
+	filter: alpha(opacity=50);
+	-moz-opacity: 0.5;
+	-khtml-opacity: 0.5;
+	opacity: 0.5;
+	z-index: 10000;
+}
+
+.blockpy-feedback-original {
+	white-space: pre-wrap;
+}
+
+
+
+
+
+
+
+
+
+
+@font-face {
+	font-family: 'Material Icons';
+	font-style: normal;
+	font-weight: 400;
+	src: url(MaterialIcons-Regular.eot);
+	/* For IE6-8 */
+	src: local('Material Icons'), local('MaterialIcons-Regular'), url(../font/material-design-icons/MaterialIcons-Regular.ttf) format('truetype');
+}
+
+.material-icons {
+	font-family: 'Material Icons';
+	font-weight: normal;
+	font-style: normal;
+	font-size: 24px;
+	/* Preferred icon size */
+	display: inline-block;
+	line-height: 1;
+	text-transform: none;
+	letter-spacing: normal;
+	word-wrap: normal;
+	white-space: nowrap;
+	direction: ltr;
+	/* Support for all WebKit browsers. */
+	-webkit-font-smoothing: antialiased;
+	/* Support for Safari and Chrome. */
+	text-rendering: optimizeLegibility;
+	/* Support for Firefox. */
+	-moz-osx-font-smoothing: grayscale;
+	/* Support for IE. */
+	font-feature-settings: 'liga';
+}
+
+
+/* toolbox indicator */
+
+#:l {
+	border-left: 10px solid #4c97ff;
+	display: inline-block;
+}
+
+
+/* -------- styles of shadowbox -------- */
+
+.shadowbox {
+	background-color: rgba(0, 0, 0, 0.6);
+	position: fixed;
+	width: 100%;
+	height: 100%;
+}
+
+.nav-fixed>.shadowbox {
+	z-index: 2;
+}
+
+body>.shadowbox {
+	top: 0px;
+	z-index: 1000;
+}
+
+.collapsible-body>.shadowbox {
+	position: absolute;
+	z-index: 2;
+}
+
+.collapsible-body>.blue-dark {
+	background-color: rgba(14, 6, 65, 0.8);
+}
+
+
+/* -------- tour card --------- */
+
+.tourCards {
+	position: fixed;
+	z-index: 1002;
+	transition: all 0.5s ease-in-out;
+	overflow: hidden;
+}
+
+.tourCards>* {
+	width: 390px;
+}
+
+.item_highlight {
+	position: relative;
+	z-index: 1001;
+}
+
+
+/* -------- styles of card display or hide-------- */
+
+.step_hide {
+	visibility: hidden;
+	opacity: 0;
+	width: 200px;
+}
+
+.step_show {
+	visibility: visible;
+	opacity: 1;
+	width: 390px;
+}
+
+
+/* -------- styles of uploader --------- */
+
+.code-header {
+	height: 45px;
+	padding: 0px 6px;
+	border-bottom: 1px solid #ddd;
+}
+
+.code-header>span.card-title {
+	line-height: 3rem;
+	font-size: 18px;
+	font-weight: 200;
+}
+
+.select-wrapper input.select-dropdown {
+	margin-bottom: 8px;
+	border-bottom: 1.5px solid rgba(158, 158, 158, 0);
+}
+
+.select-wrapper:hover input.select-dropdown:hover {
+	border-bottom: 1.5px solid rgba(158, 158, 158, 0.8);
+}
+
+.header-link {
+	float: right;
+	/* line-height: 3rem; */
+	margin: 0 10px;
+}
+
+.header-link>img {
+	width: 22px;
+	height: 22px;
+	transform: translateY(5px);
+}
+
+
+/* -------- styles of footer --------- */
+
+footer.page-footer {
+	padding: 0;
+	transition: background-color 0.5s;
+}
+
+
+/* -------- color change --------- */
+
+#nav_ {
+	transition: background-color 0.5s;
+}
+
+.card-icon-area {
+	transition: border-color 0.5s;
+}
+
+#icon-tool>li.active {
+	transition: background-color 0.5s, border-color 0.5s;
+}
+
+
+/* -------- styles of error button --------- */
+
+#error-btn {
+	width: 20px;
+	height: 20px;
+	float: right;
+	cursor: pointer;
+	margin-right: 8px;
+	display: none;
+}
+
+#err-msg:focus {
+	outline: none;
+	background-color: rgba(86, 86, 86, 0.8);
+}
+
+
+/* -------- styles of tooltip & tooltip's icon --------- */
+
+.plugin_options {
+	position: absolute;
+	bottom: 200px;
+	right: 24px;
+	overflow: hidden;
+	transition: all 0.5s ease-in-out;
+	z-index: 2;
+}
+
+.options_hide {
+	visibility: hidden;
+	opacity: 0;
+	height: 0;
+}
+
+.options_active {
+	visibility: visible;
+	opacity: 1;
+	height: 49px;
+}
+
+.plugin_options a {
+	color: rgb(150, 150, 150);
+	font-size: 18px;
+	font-weight: bold;
+	margin-right: 10px;
+}
+
+.plugin_options .card-content {
+	padding: 8px 12px;
+}
+
+.plugin_options .card-content>div {
+	transform: translateY(-3px);
+}
+
+.plugin_options img {
+	width: 25px;
+	height: 25px;
+	margin-right: 5px;
+	transform: translateY(5px);
+}
+
+#Ardunio-main,
+#Serial-monitor {
+	overflow: hidden;
+}
+
+#main_content {
+	/*overflow: hidden*/
+	width: 100%;
+	height: 100%;
+}
+
+#main_content>div>div:nth-child(2) {
+	overflow: hidden;
+	height: -moz-calc(100vh - 175px);
+	/* Firefox  */
+	height: -webkit-calc(100vh - 175px);
+	/* WebKit   */
+	height: -o-calc(100vh - 175px);
+	/* Opera    */
+	height: calc(100vh - 175px);
+	/* Standard */
+}
+
+
+/* -------- styles of uploader's buttons --------- */
+
+#uploader-btns a {
+	padding: 0 0.25rem;
+}
+
+#uploader .row {
+	margin-bottom: 2px;
+	max-height: 43px;
+}
+
+#uploader input {
+	margin-bottom: 2px;
+}
+
+
+/* -------- styles of Serial Monitor --------- */
+
+#Serial-monitor .card-content>div.row {
+	padding: 0;
+	margin-bottom: 2px;
+}
+
+#Serial-monitor a.btn {
+	min-width: 60px;
+}
+
+.card-serialMonitor .select-wrapper input.select-dropdown {
+	margin-bottom: 2px;
+	border-bottom: 1.5px solid rgba(158, 158, 158, 0);
+	height: 2rem;
+	line-height: 2rem;
+}
+
+#commsBox {
+	height: -moz-calc(100vh - 440px);
+	height: -webkit-calc(100vh - 440px);
+	height: -o-calc(100vh - 44px);
+	height: calc(100vh - 440px);
+	background-color: rgba(248, 248, 250, 0.966);
+	font-family: Consolas;
+	padding: 6px;
+	margin: 8px 0 6px 0;
+	border: none;
+	overflow-y: auto;
+	resize: none;
+	width: 100%;
+}
+
+#commsBox:focus {
+	outline: none;
+}
+
+
+/* -------- styles of Serial Monitor --------- */
+
+#icon-tool {
+	margin-top: 6px;
+	position: fixed;
+	right: 6px;
+	transform: translate(80%);
+	transition: all 0.3s linear;
+	/* display: none; */
+}
+
+#icon-tool.hover {
+	transform: translate(0);
+}
+
+#icon-tool>li {
+	cursor: pointer;
+}
+
+#icon-tool>li:hover {
+	background-color: rgba(0, 0, 0, 0.1);
+}
+
+#icon-tool>li.active {
+	background-color: #3258cd;
+	border-color: #3258cd;
+	color: #fff;
+}
+
+#icon-tool>li:nth-child(4).active {
+	background-color: rgba(0, 0, 0, 0.1);
+	border-color: inherit;
+	border-bottom-color: rgb(221, 221, 221);
+	color: inherit;
+}
+
+#icon-tool>li:nth-child(6).active {
+	background-color: rgba(0, 0, 0, 0.1);
+	border-color: inherit;
+	border-bottom-color: rgb(221, 221, 221);
+	color: inherit;
+}
+
+#icon-tool>li:nth-child(7).active {
+	background-color: rgba(0, 0, 0, 0.1);
+	border-color: inherit;
+	border-bottom-color: rgb(221, 221, 221);
+	color: inherit;
+}
+
+#icon-tool>li.active.color-red {
+	background-color: #e03021;
+	border-color: #e03021;
+}
+
+#icon-tool>li:nth-child(4).active.color-red {
+	background-color: rgba(0, 0, 0, 0.1);
+	border-color: inherit;
+	border-bottom-color: rgb(221, 221, 221);
+	color: inherit;
+}
+
+#icon-tool>li:nth-child(6).active.color-red {
+	background-color: rgba(0, 0, 0, 0.1);
+	border-color: inherit;
+	border-bottom-color: rgb(221, 221, 221);
+	color: inherit;
+}
+
+#icon-tool>li:nth-child(7).active.color-red {
+	background-color: rgba(0, 0, 0, 0.1);
+	border-color: inherit;
+	border-bottom-color: rgb(221, 221, 221);
+	color: inherit;
+}
+
+#icon-tool>li>i {
+	position: relative;
+	left: 50%;
+	top: 50%;
+	transform: translate(-50%, -50%);
+}
+
+#side-lang-trigger {
+	visibility: hidden;
+	opacity: 0;
+	position: fixed;
+	top: 150px;
+	right: 192px;
+}
+
+#side-storage-trigger {
+	visibility: hidden;
+	opacity: 0;
+	position: fixed;
+	top: 200px;
+	right: 192px;
+}
+
+@media only screen and (min-width: 993px) {
+	.container {
+		width: 100%;
+	}
+
+	.row .col.l0 {
+		width: 0%;
+		margin-left: auto;
+		left: auto;
+		right: auto;
+		display: none;
+	}
+}
+
+
+/* -------- styles of login modal --------- */
+
+#login_modal.modal {
+	width: 350px;
+	position: fixed;
+	right: 50px;
+	top: 62px;
+	left: auto;
+	background-color: #fafafa;
+	padding: 0;
+	max-height: 70%;
+	margin: auto;
+	overflow-y: auto;
+	border-radius: 2px;
+	will-change: top, opacity;
+}
+
+#login_modal .row {
+	margin-left: auto;
+	margin-right: auto;
+	margin-bottom: 2px;
+}
+
+
+/* -------- styles of cloud file panel --------- */
+
+#cloud_storage_modal {
+	width: 820px;
+	height: 80%;
+	max-height: 560px;
+	overflow-y: hidden;
+}
+
+#cloud_fileListArea {
+	min-height: 450px;
+	height: 70%;
+	max-height: 400px;
+	overflow-y: auto;
+	border: 1px solid #e8e8e9;
+	background-color: rgba(255, 255, 255, 0);
+}
+
+#cloud_askLogin {
+	padding-top: 15px;
+	width: 350px;
+	margin: auto;
+}
+
+.cloud-file {
+	background-color: rgba(255, 255, 255, 0);
+}
+
+.cloud-file-selected {
+	background-color: rgba(66, 165, 245, 0.3);
+	border-color: #0e0e0f;
+	border: 3px;
+	height: 110px !important;
+	padding: 10px;
+	margin: 1px;
+}
+
+#new_create .card-content>div:nth-child(1) {
+	height: 115px;
+}
+
+#new_create .cloud-new {
+	left: 12%;
+	top: -20px;
+	font-size: 135px !important;
+	color: #757575;
+	cursor: pointer;
+	position: relative;
+}
+
+#new_create span.cloud-new {
+	position: absolute;
+	top: 120px;
+	left: 35%;
+	font-size: 14px !important;
+}
+
+#new_create .cloud-new.disabled {
+	pointer-events: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+	color: #CCC !important;
+	cursor: default;
+}
+
+#new_create.active>div>div:nth-child(1) {
+	display: none;
+}
+
+#new_create.active>div>div:nth-child(2) {
+	display: block;
+}
+
+#new_create>div>div:nth-child(1) {
+	display: block;
+}
+
+#new_create>div>div:nth-child(2) {
+	display: none;
+}
+
+.cloud-btnPanel {
+	position: relative;
+	height: 30px;
+}
+
+.cloud-btn {
+	font-size: 1.2rem;
+	outline: 0;
+	text-decoration: none;
+	color: #fff;
+	background-color: #64B5F6;
+	text-align: center;
+	letter-spacing: .5px;
+	height: 30px;
+	line-height: 30px;
+	padding: 0 0.3rem;
+	text-transform: uppercase;
+	float: right;
+	margin-right: 7px;
+	border-radius: 5px;
+}
+
+#cloud_fileListArea .card {
+	border-radius: 5px;
+}
+
+#cloud_fileListArea .card-image {
+	border-radius: 5px;
+	height: 50px;
+	background: #454fb5;
+}
+
+#cloud_fileListArea .card-content {
+	min-height: 100px
+}
+
+
+/* #cloud_fileListArea .card ul {
+	display: none;
+  }
+  
+  #cloud_fileListArea.cloud-file .card:hover ul {
+	display: block;
+  } */
+
+#cloud_fileListArea.locked .card ul {
+	display: none;
+}
+
+#cloud_fileListArea .card:hover li {
+	animation: btnmove 0.4s
+}
+
+#cloud_fileListArea ul {
+	text-align: right;
+	right: 10px;
+	top: 20px;
+	-webkit-transform: translateY(-50%);
+	transform: translateY(-50%);
+	height: 50px;
+	width: 200px;
+	position: absolute;
+	z-index: 999;
+}
+
+#cloud_fileListArea li {
+	display: inline-block;
+	margin: 5px 5px 0 0;
+}
+
+#cloud_fileListArea li i {
+	color: #fff;
+	cursor: pointer;
+}
+
+#cloud_fileListArea .unblock {
+	display: none
+}
+
+#cloud_fileListArea .cloud_file_state {
+	position: absolute;
+	bottom: -8px;
+	right: -4px;
+	z-index: 999;
+}
+
+#cloud_fileListArea .cloud_file_state>i {
+	display: none;
+}
+
+#cloud_fileListArea .selected .card {
+	/* border: 2px solid #ff8711; */
+	border: 1px solid #ffc107;
+}
+
+#cloud_fileListArea .selected .cloud_file_state>i:nth-child(1) {
+	display: block;
+	color: #ffc107;
+	font-size: 42px;
+}
+
+#cloud_fileListArea .selected .cloud-btnPanel>li:nth-child(2) {
+	display: inline-block;
+}
+
+#cloud_fileListArea.locked .cloud_file_state>i:nth-child(1) {
+	display: none
+}
+
+#cloud_fileListArea.locked .card {
+	border: 0;
+}
+
+#cloud_fileListArea .cloudInfoPanel>span {
+	margin-bottom: 4px;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: "nowrap"
+
+}
+
+#cloud_fileListArea .cloudInfoPanel>p {
+	font-size: 14px;
+	font-weight: 300;
+	margin-bottom: 8px;
+}
+
+
+/* -------- styles of cloud storage sketch_name --------- */
+
+#cloud_fileListArea .cloud_sketch_name {
+	max-width: 400px;
+	line-height: 64px;
+	height: 3rem !important;
+	font-size: 1.2rem !important;
+	border-bottom: 1px solid #9e9e9e;
+	font-style: italic;
+}
+
+.translatable_rename {
+	font-size: 20px;
+	position: absolute;
+	top: 28%;
+}
+
+#cloud_fileListArea .cloud_sketch_name {
+	margin: 8px 0 12px 0 !important;
+}
+
+
+/* -------- styles of nav tootip --------- */
+
+.nav_tooltip span {
+	display: none;
+}
+
+.nav_tooltip:hover span,
+.nav_tooltip:focus span {
+	display: block;
+	position: absolute;
+	top: 68px;
+	left: 2px;
+	border: 1px solid #2b2b2a;
+	background-color: rgba(41, 41, 41, 0.87);
+	color: rgb(255, 248, 248);
+	width: 8em !important;
+	line-height: 36px;
+	height: 36px;
+	padding: 0;
+	margin: 0;
+}
+
+
+/* ------- Vertical Separator Line -------- */
+
+.vertical-separator {
+	padding: 8px 6px 8px 6px;
+	margin-left: 6px;
+	border-left: 1px solid rgba(228, 228, 228, 0.87);
+	font-size: 16px;
+}
+
+
+/* ------- iframe for login -------*/
+
+.iframe-login {
+	position: fixed;
+	width: 499px;
+	height: 600px;
+	left: 500px;
+	top: 100px;
+	z-index: 999;
+}
+
+
+/* ----preloader for login modal---- */
+
+#login_modal_preload.progress,
+#cloud_modal_preload.progress {
+	position: relative;
+	height: 4px;
+	display: block;
+	width: 100%;
+	background-color: #acece6;
+	border-radius: 2px;
+	margin: 0.2rem 0 0.1rem 0;
+	overflow: hidden;
+}
+
+#cloud_modal_preload {
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 1003;
+	width: 100%;
+	height: 100%;
+	background-color: rgba(238, 238, 238, 0.8);
+}
+
+#cloud_modal_preload .preloader-wrapper {
+	position: absolute;
+	top: 30%;
+	left: 45%;
+	z-index: 1001;
+	width: 100px;
+	height: 100px;
+}
+
+/* ----nav help dropdown---- */
+
+.dropdown-content.active {
+	background-color: #fff;
+	margin: 0;
+	display: none;
+	min-width: 120px;
+	max-height: 650px;
+	overflow-y: auto;
+	opacity: 0;
+	position: absolute;
+	z-index: 999;
+	/* will-change: width, height; */
+}
+
+
+/*-----gif tour section ----*/
+
+.slide-section {
+	display: block;
+	background: #eee;
+	width: 850px;
+	top: 15%;
+	height: 540px;
+	overflow: unset;
+	max-height: 81%;
+	/* border: 0.12rem solid #0f6eb1; */
+}
+
+.slide-content {
+	width: 790px;
+	height: 320px;
+	position: relative;
+}
+
+.slide-element {
+	max-width: 100%;
+	max-height: 100%;
+	margin: auto;
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	transform: translate(-50%, -50%);
+}
+
+.slide-text {
+	text-align: center;
+	font-size: 20px;
+	width: 770px;
+}
+
+.slick-prev:before,
+.slick-next:before {
+	color: #8f8f92;
+	font-size: 40px;
+}
+
+.slick-dots {
+	bottom: 2px;
+}
+
+.slick-list {
+	height: 100%;
+	overflow-y: auto;
+}
+
+
+/* uploader reminder  modal*/
+
+.modale {
+	position: fixed;
+	left: 0;
+	right: 0;
+	background-color: #fafafa;
+	padding: 0;
+	max-height: 70%;
+	width: 55%;
+	margin: auto;
+	overflow-y: auto;
+	border-radius: 5px;
+	will-change: top, opacity;
+	border-radius: 5px;
+}
+
+.modale .modal-content {
+	padding: 24px;
+}
+
+.modale .modal-footer {
+	border-radius: 0 0 2px 2px;
+	background-color: #fafafa;
+	padding: 4px 6px;
+	width: 100%;
+	text-align: right;
+	margin-bottom: 10px;
+}
+
+.modale .h1,
+.modale .h2,
+.modale .h3,
+.modale .h4 {
+	margin-top: 0;
+}
+
+nav ul a {
+	font-size: 0.9rem;
+	padding: 0 10px;
+}
+
+.nav-icon {
+	height: 30px;
+	margin-top: 17px;
+	margin-right: 5px;
+}
+
+.nav-icon2 {
+	height: 27px;
+	margin-top: 17px;
+	margin-right: 5px;
+}
+
+.bar-icon {
+	height: 20px;
+	position: relative;
+	left: 50%;
+	top: 50%;
+	transform: translate(-150%, -150%);
+}
+
+
+/* user modal */
+
+#account_alias {
+	display: none;
+}
+
+#userProfile_apikey .select-wrapper {
+	display: inline-block;
+	max-width: 150px;
+	height: 30px;
+}
+
+#userProfile_apikey .caret {
+	top: 10px;
+}
+
+#update_Coevent,
+#update_Coevent_web,
+#update_Coevent_voice {
+	color: #2c4fcd;
+	cursor: pointer;
+	font-size: 18px;
+	position: relative;
+	top: 5px;
+}
+
+#before_login {
+	overflow: hidden;
+}
+
+#after_login {
+	padding: 24px 24px 6px 24px;
+	/* overflow: hidden; */
+	display: none;
+}
+
+#after_login>div {
+	padding-bottom: 5px
+}
+
+#after_login>#userProfile_alias {
+	font-size: 20px;
+	font-weight: bold;
+	padding-bottom: 10px;
+}
+
+#userProfile_apikey>div:nth-child(2)>a {
+	color: #2c4fcd;
+	cursor: pointer;
+	float: right;
+}
+
+#userProfile_apikey>div:nth-child(2)>textarea {
+	overflow: visible;
+	resize: none;
+	border-color: rgb(169, 169, 169);
+	border-radius: 5px;
+	height: auto;
+}
+
+#login_modal>.modal-footer {
+	display: none;
+}
+
+#modal_cococloud_btn {
+	float: left;
+	margin-left: 15px;
+}
+
+#modal_logout_btn {
+	float: right;
+	margin-right: 15px;
+}
+
+#login_modal>.modal-footer>a>span {
+	font-size: 15px;
+	color: #fff;
+}
+
+
+/* Warning Modal */
+
+#gen_warn_image {
+	display: block;
+	height: 128px;
+	position: relative;
+	left: 50%;
+	transform: translateX(-50%);
+}
+
+#gen_warn_title,
+#gen_warn_body {
+	text-align: center;
+}
+
+#gen_warn_title {
+	margin-bottom: 2rem;
+}
+
+#browserLink {
+	display: inline-block;
+	position: relative;
+	left: 50%;
+	transform: translateX(-50%);
+}
+
+#browserLink>a>img {
+	height: 64px;
+}
+
+#gen_warn>.modal-footer {
+	text-align: center;
+	padding: 0 24px 24px 24px;
+}
+
+
+/* import-div */
+
+.shadow_container {
+	position: relative;
+	top: 10%;
+	height: -moz-calc(100vh - 145px);
+	/* Firefox  */
+	height: -webkit-calc(100vh - 145px);
+	/* WebKit   */
+	height: -o-calc(100vh - 145px);
+	/* Opera    */
+	height: calc(100vh - 145px);
+	/* Standard */
+}
+
+.shadow_top {
+	position: relative;
+	transform: translate(-50%, -50%);
+	width: 40%;
+	max-width: 490px;
+	border: dashed #fff;
+	top: 50%;
+	left: 50%;
+	pointer-events: none;
+}
+
+.shadow_top>img {
+	position: relative;
+	width: 150px;
+	transform: translateX(-50%);
+	left: 50%;
+}
+
+.shadow_top>p {
+	position: relative;
+	margin: auto;
+	font-size: 2rem;
+	text-align: center;
+	color: ghostwhite;
+	padding-bottom: 20px;
+}
+
+
+/**
+  * change toast color
+  */
+
+
+/* .toast {
+	background: #ec521c;
+	color: #ffffff;
+	font-size: 1.3rem;
+  } */
+
+
+/* App Center */
+
+#app_center_modal {
+	border-radius: 5px;
+	width: 820px;
+	height: 100%;
+	max-height: 500px;
+	overflow: hidden
+}
+
+#center_categories {
+	border: 1px solid #dddddd;
+}
+
+#center_categories>a {
+	font-weight: bold;
+}
+
+#center_categories>a.active {
+	background-color: #2196F3 !important;
+	color: white !important;
+	border-radius: 2px;
+}
+
+#app_center_modal .card {
+	border-radius: 10px;
+	/* box-shadow: 4px 1px 10px #888888 */
+}
+
+#app_center_modal .card-image {
+	border-radius: 10px 10px 4px 4px;
+}
+
+#app_center_modal .card .card-content {
+	padding: 20px;
+}
+
+
+
+/* Env Detect Modal */
+
+#env_detect {
+	border-radius: 0.8rem;
+	max-height: 80%;
+	max-width: 960px;
+}
+
+#detect_result>div {
+	display: grid;
+	grid-template-columns: 15% 30% 15% 40%;
+}
+
+#detect_before>div:first-child {
+	position: relative;
+	width: 270px;
+	left: 53%;
+	transform: translateX(-50%);
+}
+
+#detect_result>div>h5 {
+	font-size: 1.45rem;
+	color: #818181;
+	place-self: center;
+	margin: 0.82rem 0;
+	text-align: center;
+}
+
+#detect_result>div>div {
+	font-size: 1.2rem;
+	place-self: center;
+	margin: 0.656rem 0;
+	padding: 0 0.3rem;
+	text-align: center;
+}
+
+#detect_result .detect-icons {
+	line-height: 0;
+}
+
+#env_detect .modal-footer {
+	display: grid;
+	grid-template-columns: repeat(3, calc(100%/3));
+	grid-template-areas: '. detect .';
+	margin: 12px 0;
+}
+
+#detect-btn {
+	grid-area: detect;
+	height: 88%;
+	margin: 0;
+	display: grid;
+}
+
+#detect-btn>span {
+	font-size: 1.1rem;
+	font-weight: 500;
+	place-self: center;
+}
+
+#detect_preload {
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 999;
+	width: 100%;
+	height: 100%;
+	background-color: rgba(238, 238, 238, 0.8);
+}
+
+.preloader-wrapper.big {
+	width: 128px;
+	height: 128px;
+}
+
+.spinner-blue,
+.spinner-blue-only {
+	border-color: #0080e6;
+}
+
+.circle-clipper .circle {
+	border-width: 8px;
+}
+
+/**
+  * Teachable Machine modal
+  */
+.TM_class {
+	width: 95%;
+	height: 80%;
+	max-height: 100%;
+	overflow: hidden;
+	/* background:rgb(237, 237, 238); */
+	background: #fff;
+}
+
+.modal_custom.open {
+	top: 40% !important
+}
+
+.modal_custom {
+	top: -30% !important;
+	display: none
+}
+
+.AI_card_content {
+	border: 1.5px solid #4994ec;
+	border-radius: 5px;
+	color: #4994ec;
+	font-weight: 600;
+	font-size: 8px;
+	padding: 3px 7px;
+	margin-bottom: 10px;
+}
+
+.ac-card-title {
+	/* margin-top:10px */
+}
+
+.Img-filter {
+	filter: invert(100%);
+}
+
+#app_center_modal .tabs {
+	background-color: #fafafa
+}
+
+#app_center_modal .tabs-content {
+	width: 300px;
+}
+
+.tabs {
+	height: 30px;
+	margin-bottom: 20px
+}
+
+.tabs .tab {
+	line-height: 24px;
+	height: 24px;
+}
+
+.tabs .tab a,
+.tabs .tab a:hover,
+.tabs .tab a.active {
+	padding: 0 8px;
+	font-size: 13px;
+	background-color: transparent;
+	color: black;
+}
+
+.tabs .indicator {
+	background-color: #039be5;
+	height: 4px
+}
+
+#webcam_capture_modal {
+	width: 820px;
+	height: 100%;
+	max-height: 500px;
+}
+
+#webCamPlaceholder {
+	border: 1px solid rgba(0, 0, 0, .075);
+	font-weight: regular;
+	color: rgba(0, 0, 0, .3);
+	height: 240px;
+	width: 320px;
+	text-align: center;
+	padding-top: 100px;
+	background-color: rgba(0, 0, 0, .02);
+}
+
+#SnapshotPlaceholder {
+	border: 1px solid rgba(0, 0, 0, .075);
+	font-weight: regular;
+	color: rgba(0, 0, 0, .3);
+	height: 240px;
+	width: 100%;
+	text-align: center;
+	padding-top: 100px;
+	background-color: rgba(0, 0, 0, .02);
+}
+
+#emotionResultsAll {
+	margin-left: 1.5%;
+	width: 97%;
+	margin-right: 1.5%;
+	text-align: left;
+	border-radius: 6px;
+	border: 1px solid rgba(0, 0, 0, .075);
+	padding: 15px 15px 4px 15px;
+	background-color: rgba(0, 0, 0, .02);
+	margin-bottom: 15px;
+	margin-top: 10px;
+}
+
+#emotionResultsAll_property {
+	/* line-height: 12px; */
+}
+
+.emotionResultsAll_single {
+	padding-left: 2px;
+	font-weight: 200;
+	color: rgba(0, 0, 0, .4);
+}
+
+
+#emotionOutput {
+	margin-top: -30px;
+}
+
+#learn_board.dropdown-content.active {
+	width: 160px !important
+}
+
+#voice_input_modal {
+	width: 820px;
+	height: 100%;
+	max-height: 595px;
+}
+
+#voice_input_modal textarea.disabled {
+	color: gray
+}
+
+#voice_input_modal .speech_language .select-wrapper {
+	border: 0.2px solid #ccc;
+	height: 42px;
+}
+
+#voice_input_modal .speech_language .caret {
+	padding-right: 5px;
+}
+
+#voice_input_modal .speech_language input.select-dropdown {
+	padding-left: 10px;
+}
+
+#speech_textarea {
+	margin-left: 1.5%;
+	max-width: 97%;
+	margin-right: 1.5%;
+
+	border: 1px solid rgba(0, 0, 0, .2);
+	cursor: default;
+	-webkit-user-select: none;
+	-webkit-touch-callout: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	-o-user-select: none;
+}
+
+#speech_textarea:focus {
+	outline: none;
+}
+
+.filled-in_nocheked {
+	color: red !important;
+}
+
+html,
+body {
+	cursor: default;
+	height: 100%;
+	position: absolute;
+	top: 0;
+	left: 0;
+	margin: 0;
+	padding: 0;
+	border: 0;
+	width: 100%;
+}
+
+input::-webkit-input-placeholder {
+	color: #000;
+}
+
+input::-moz-input-placeholder {
+	color: #000;
+}
+
+input::-ms-input-placeholder {
+	color: #000;
+}

+ 44 - 0
src/assets/css/header.css

@@ -0,0 +1,44 @@
+.header_right_icon {
+    height: 30px;
+    margin-top: 5px;
+    margin-right: 5px;
+}
+
+.header_right_title_span {
+    color: #fff;
+    display: inline-block;
+    line-height: 40px;
+}
+
+.el-dropdown-menu .header_menu_li {
+    font-size: 16px;
+    color: #26a69a;
+    display: block;
+    line-height: 22px;
+    padding: 14px 16px;
+}
+
+.link_stydy .header_menu_li {
+    padding: 0
+}
+
+.link_stydy .header_menu_li a {
+    display: block;
+    padding: 14px;
+    color: #26a69a;
+}
+
+.el-dropdown-menu .header_menu_li:hover {
+    color: #26a69a;
+}
+
+.el_row_card {
+    max-height: 340px;
+    overflow: auto;
+    min-height: 260px;
+}
+
+.card_style {
+    padding: 0 0.75rem;
+    margin-bottom: 15px;
+}

+ 146 - 0
src/assets/css/main.css

@@ -0,0 +1,146 @@
+@import './base.css';
+
+html {
+  font-size: 15px;
+}
+
+/* 清零所有标签的内外边距 */
+* {
+  margin: 0;
+  padding: 0;
+  /* CSS3盒子模型 */
+  /* 可以不用考虑padding和border是否会撑大盒子的情况了*/
+  box-sizing: border-box;
+}
+
+/* em 和 i 斜体的文字不倾斜 */
+em,
+i {
+  font-style: normal
+}
+
+/* 去掉li 的小圆点 */
+li {
+  list-style: none
+}
+
+/* 插入图片的设置 */
+img {
+  /* border 0 照顾低版本浏览器 如果 图片外面包含了链接会有边框的问题 */
+  border: 0;
+  /* 取消图片底侧有空白缝隙的问题 */
+  vertical-align: middle
+}
+
+button {
+  /* 当我们鼠标经过button 按钮的时候,鼠标变成小手 */
+  cursor: pointer
+}
+
+a {
+  color: #666;
+  text-decoration: none
+}
+
+button,
+input {
+  /* "\5B8B\4F53" 就是宋体的意思 这样浏览器兼容性比较好 */
+  font-family: sans-serif, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
+  /* 手动去掉默认的灰色边框 */
+  border: 0;
+  /* 手动去掉input输入时的蓝色/加粗边框 */
+  outline: none;
+}
+
+body {
+  /* CSS3 抗锯齿形 让文字显示的更加清晰 */
+  -webkit-font-smoothing: antialiased;
+  background-color: #fff;
+  font: 16px/1.5 sans-serif, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
+  color: #666
+}
+
+.hide,
+.none {
+  display: none
+}
+
+#app {
+  height: 100%;
+}
+
+a,
+.green {
+  text-decoration: none;
+  color: hsla(160, 100%, 37%, 1);
+  transition: 0.4s;
+  padding: 3px;
+}
+
+.left {
+  float: left;
+}
+
+.right {
+  float: right;
+}
+
+.flex {
+  display: flex;
+}
+
+
+#app .el-dialog__header {
+  padding: 0;
+  padding-bottom: 0;
+}
+
+#app .el-dialog__body {
+  padding: 0;
+  padding-bottom: 0;
+  color: #000;
+}
+
+#app .el-card__body {
+  padding: 0;
+}
+
+.background_blue {
+  background-color: #2196F3 !important;
+}
+
+/* 清除浮动 */
+.clearfix:after,
+.clearfix:before {
+  content: "";
+  display: table;
+}
+
+.clearfix:after {
+  clear: both;
+}
+
+.clearfix {
+  zoom: 1;
+}
+
+a {
+  color: #fff;
+}
+
+a:hover {
+  background-color: #fff;
+}
+
+@media (hover: hover) {
+
+  a:hover {
+    background-color: rgba(0, 0, 0, 0);
+  }
+
+  span:hover {
+    background-color: rgba(0, 0, 0, 0);
+  }
+}
+
+@media (min-width: 1024px) {}

BIN=BIN
src/assets/img/APPCenter_test.jpg


BIN=BIN
src/assets/img/AppCenter_ai_emotion.jpg


BIN=BIN
src/assets/img/AppCenter_ai_gesture_recognition.jpg


BIN=BIN
src/assets/img/AppCenter_ai_speech.jpg


BIN=BIN
src/assets/img/AppCenter_ai_teachableMachine.jpg


BIN=BIN
src/assets/img/AppCenter_comingSoon.jpg


BIN=BIN
src/assets/img/AppCenter_game_floppy-bird.jpg


BIN=BIN
src/assets/img/AppCenter_game_space_lamb.jpg


BIN=BIN
src/assets/img/AppCenter_iot_ifttt.jpg


BIN=BIN
src/assets/img/AppCenter_iot_thingspeak.jpg


BIN=BIN
src/assets/img/WeTech.jpg


BIN=BIN
src/assets/img/adb1.png


BIN=BIN
src/assets/img/adb2.png


BIN=BIN
src/assets/img/adb3.png


BIN=BIN
src/assets/img/adb4.jpg


BIN=BIN
src/assets/img/cocoblockly-navbar_labs-icon.png


BIN=BIN
src/assets/img/delete.png


BIN=BIN
src/assets/img/edit.png


BIN=BIN
src/assets/img/error.png


BIN=BIN
src/assets/img/file.png


BIN=BIN
src/assets/img/firmware.png


BIN=BIN
src/assets/img/home_icon.png


BIN=BIN
src/assets/img/labs_aihub1.jpg


BIN=BIN
src/assets/img/labs_aihub2.jpg


BIN=BIN
src/assets/img/labs_aihub3.jpg


BIN=BIN
src/assets/img/language2.png


BIN=BIN
src/assets/img/learn_nav_icon.png


BIN=BIN
src/assets/img/local_storage.png


BIN=BIN
src/assets/img/logo1.png


BIN=BIN
src/assets/img/nav_help.png


BIN=BIN
src/assets/img/object_recognition_header.jpg


BIN=BIN
src/assets/img/posenet_recogition.png


BIN=BIN
src/assets/img/save.png


BIN=BIN
src/assets/img/tm_with_pose.jpg


BIN=BIN
src/assets/img/uploader_connect.png


BIN=BIN
src/assets/img/uploader_disconnect.png


BIN=BIN
src/assets/img/user.png


BIN=BIN
src/assets/img/分享.png


BIN=BIN
src/assets/img/加载.png


+ 343 - 0
src/blockly/blocklyXml.js

@@ -0,0 +1,343 @@
+export default {
+  xml: `<xml  style="height: 100%">
+    <category id="Logic" name="Logic" colour="#4c97ff">
+         <block type="controls_if"></block>
+         <block type="logic_compare"></block>
+         <block type="logic_operation"></block>
+         <block type="logic_negate"></block>
+         <block type="logic_boolean"></block>
+         <block type="logic_null"></block>
+         <block type="logic_ternary"></block>
+         <block type="CocoRobo_return"></block>
+         <block type="CocoRobo_try_except"></block>
+         <block type="CocoRobo_try_except_finally"></block>
+         <block type="CocoRobo_type"></block>
+         <block type="CocoRobo_type_is"></block>
+         <block type="CocoRobo_eval"></block>
+     </category>
+     <category id="catLoops" name="Loops" colour="#9d64fd"> 
+            <block type="controls_repeat_forever"></block> 
+            <block type="controls_repeat_ext"> 
+            <value name="TIMES"> 
+            <shadow type="math_number"> 
+            <field name="NUM">10</field> 
+            </shadow> 
+            </value> 
+            </block> 
+            <block type="controls_whileUntil"></block> 
+            <block type="controls_for"> 
+            <value name="FROM"> 
+            <shadow type="math_number"> 
+            <field name="NUM">1</field> 
+            </shadow> 
+            </value> 
+            <value name="TO"> 
+            <shadow type="math_number"> 
+            <field name="NUM">10</field> 
+            </shadow> 
+            </value> 
+            <value name="BY"> 
+            <shadow type="math_number"> 
+            <field name="NUM">1</field> 
+            </shadow> 
+            </value> 
+            </block> 
+            <block type="controls_forEach"></block> 
+            <block type="controls_flow_statements"></block> 
+
+      </category>
+      <category id="catMath" name="Math" colour="#5472ea"> 
+        <block type="math_number" gap="32"></block> 
+        <block type="math_arithmetic"> 
+         <value name="A"> 
+        <shadow type="math_number"> 
+          <field name="NUM">1</field> 
+        </shadow> 
+        </value> 
+        <value name="B"> 
+        <shadow type="math_number"> 
+          <field name="NUM">1</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_degrad"></block> 
+        <block type="math_single"> 
+        <value name="NUM"> 
+        <shadow type="math_number"> 
+          <field name="NUM">9</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_trig"> 
+        <value name="NUM"> 
+        <shadow type="math_angle"> 
+         <field name="angle">45</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_constant"></block> 
+        <block type="math_number_property"> 
+        <value name="NUMBER_TO_CHECK"> 
+        <shadow type="math_number"> 
+           <field name="NUM">0</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_round"> 
+        <value name="NUM"> 
+                <shadow type="math_number"> 
+         <field name="NUM">3.1</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_keep_decimal"> 
+        <value name="NUM"> 
+         <shadow type="math_number"> 
+          <field name="NUM">3.1415926</field> 
+        </shadow> 
+        </value> 
+        <value name="PLACE"> 
+         <shadow type="math_number"> 
+         <field name="NUM">2</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_on_list"></block> 
+        <block type="math_modulo"> 
+        <value name="DIVIDEND"> 
+        <shadow type="math_number"> 
+          <field name="NUM">64</field> 
+        </shadow> 
+        </value> 
+         <value name="DIVISOR"> 
+        <shadow type="math_number"> 
+            <field name="NUM">10</field> 
+        </shadow> 
+        </value> 
+         </block> 
+        <block type="math_division_consult"> 
+         <value name="DIVIDEND"> 
+        <shadow type="math_number"> 
+          <field name="NUM">64</field> 
+        </shadow> 
+        </value> 
+        <value name="DIVISOR"> 
+        <shadow type="math_number"> 
+          <field name="NUM">10</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_constrain"> 
+         <value name="VALUE"> 
+        <shadow type="math_number"> 
+         <field name="NUM">50</field> 
+        </shadow> 
+        </value> 
+        <value name="LOW"> 
+        <shadow type="math_number"> 
+          <field name="NUM">1</field> 
+        </shadow> 
+        </value> 
+         <value name="HIGH"> 
+        <shadow type="math_number"> 
+          <field name="NUM">100</field> 
+        </shadow> 
+         </value> 
+        </block> 
+         <block type="labplus_mapping"> 
+        <value name="inputNum"><shadow type="math_number"><field name="NUM">10</field></shadow></value> 
+        <value name="bMin"><shadow type="math_number"><field name="NUM">0</field></shadow></value> 
+        <value name="bMax"><shadow type="math_number"><field name="NUM">100</field></shadow></value> 
+        <value name="cMin"><shadow type="math_number"><field name="NUM">0</field></shadow></value> 
+        <value name="cMax"><shadow type="math_number"><field name="NUM">200</field></shadow></value> 
+        </block> 
+        <block type="math_random_int"> 
+        <value name="FROM"> 
+        <shadow type="math_number"> 
+          <field name="NUM">1</field> 
+        </shadow> 
+        </value> 
+        <value name="TO"> 
+        <shadow type="math_number"> 
+          <field name="NUM">100</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="math_random_randrange"> 
+        <value name="start"><shadow type="math_number"><field name="NUM">0</field></shadow></value> 
+         <value name="stop"><shadow type="math_number"><field name="NUM">10</field></shadow></value> 
+        <value name="step"><shadow type="math_number"><field name="NUM">2</field></shadow></value> 
+        </block> 
+        <block type="math_random_float"></block> 
+        <block type="math_convert"></block> 
+        <block type="math_number_bits_ops"> 
+        <value name="A"> 
+        <shadow type="math_number"> 
+          <field name="NUM">1</field> 
+        </shadow> 
+        </value> 
+        <value name="B"> 
+        <shadow type="math_number"> 
+          <field name="NUM">1</field> 
+        </shadow> 
+        </value> 
+        </block> 
+        <block type="bit_inversion"> 
+        <value name="data"><shadow type="math_number"><field name="NUM">60</field></shadow></value> 
+        </block> 
+        <block type="CocoRobo_ten_convert_to"> 
+         <value name="int_num"><shadow type="math_number"><field name="NUM">10</field></shadow></value> 
+        </block> 
+        <block type="CocoRobo_convert_to_ten"> 
+         <value name="convert_str"><shadow type="text"><field name="TEXT">11</field></shadow></value> 
+        </block> 
+        <block type="CocoRobo_ten_converted_to_bytes"> 
+         <value name="convert_num"><shadow type="math_number"><field name="NUM">11</field></shadow></value> 
+        </block> 
+        <block type="CocoRobo_int_to_chr"> 
+          <value name="convert_num"><shadow type="math_number"><field name="NUM">97</field></shadow></value> 
+        </block> 
+        <block type="CocoRobo_chr_to_int"> 
+         <value name="convert_chr"><shadow type="text"><field name="TEXT">a</field></shadow></value> 
+         </block> 
+         <block type="CocoRobo_str_to_hex"> 
+        <value name="convert_chr"><shadow type="text"><field name="TEXT">abcdfg</field></shadow></value> 
+        </block> 
+        <block type="CocoRobo_hex_to_bin_str"> 
+        <value name="convert_chr"><shadow type="text"><field name="TEXT">313233</field></shadow></value> 
+         </block> 
+        <block type="CocoRobo_data_to_base64"> 
+           <value name="data"><shadow type="text"><field name="TEXT">cocorobo</field></shadow></value> 
+        </block> 
+        <block type="CocoRobo_base64_to_data"> 
+           <value name="data"><shadow type="text"><field name="TEXT">bXB5dGhvbg==</field></shadow></value> 
+        </block> 
+      </category>
+      <category id="catVariables" name="Variables" custom="VARIABLE" colour="#ffab2f">' +
+      </category>
+      <category id="catText" name="Text" colour="#33cc99">
+        <block type="text"><field name="TEXT"></field></block>
+        <block type="text_join"><mutation items="1"></mutation></block>
+        <block type="text_join"></block>
+        <block type="text_split_string_by_delimiter">
+        </block>
+        <block type="text_format">
+          <value name="FORMAT">
+            <shadow type="text"><field name="TEXT">Value: %.2f</field></shadow>
+          </value>
+          <value name="CONTENT">
+            <block type="tuple_create_with_items_insert">
+              <mutation items="1"></mutation>
+              <value name="ADD0">
+                <block type="math_number">
+                  <field name="NUM">3.1415926</field>
+                </block>
+              </value>
+            </block>
+          </value>
+        </block>
+        <block type="text_format2">
+          <value name="FORMAT">
+            <shadow type="text"><field name="TEXT">Value: {:.3}</field></shadow>
+          </value>
+          <value name="CONTENT">
+            <block type="tuple_create_with_items_insert">
+              <mutation items="1"></mutation>
+                <value name="ADD0">
+                  <block type="math_number">
+                    <field name="NUM">3.1415926</field>
+                  </block>
+                </value>
+            </block>
+          </value>
+        </block>
+      </category>
+ </xml>`
+}
+
+{/* <block type="CocoRobo_text_ESC">
+        </block>
+        <block type="text_append_text">
+        <value name="text_abc"><shadow type="text"><field name="TEXT">abc</field></shadow></value>
+        <value name="append_text"><shadow type="text"><field name="TEXT">def</field></shadow></value>
+        </block>
+        <block type="text_is_number">
+        <value name="TEXT">
+         <shadow type="text">
+        <field name="TEXT"></field>
+        </shadow>
+        </value>
+        </block>
+        <block type="text_length">
+        <value name="VALUE">
+        <shadow type="text">
+         <field name="TEXT"></field>
+        </shadow>
+        </value>
+        </block>
+        <block type="text_isEmpty">
+        <value name="VALUE">
+        <shadow type="text">
+         <field name="TEXT"></field>
+        </shadow>
+        </value>
+        </block>
+        <block type="text_indexOf">
+        <value name="VALUE">
+         <shadow type="text">
+        <field name="TEXT">abc</field>
+        </shadow>
+        </value>
+        <value name="FIND">
+         <shadow type="text">
+        <field name="TEXT">b</field>
+         </shadow>
+        </value>
+        </block>
+        <block type="text_charAt">
+        <value name="VALUE">
+        <shadow type="text">
+        <field name="TEXT">abc</field>
+         </shadow>
+        </value>
+         </block>
+         <block type="text_getSubstring">
+        <value name="STRING">
+         <shadow type="text">
+        <field name="TEXT">abc</field>
+         </shadow>
+        </value>
+         </block>
+           <block type="text_changeCase">
+        <value name="TEXT">
+          <shadow type="text">
+            <field name="TEXT"></field>
+             </shadow>
+           </value>
+             </block>
+              <block type="text_trim">
+           <value name="TEXT">
+          <shadow type="text">
+            <field name="TEXT"></field>
+             </shadow>
+           </value>
+              </block>
+             <block type="text_to_byte">
+          <value name="TEXT">
+              <shadow type="text">
+                  <field name="TEXT">abc</field>
+              </shadow>
+          </value>
+           </block>
+           <block type="CocoRobo_bytes_decode">
+           <value name="bytes_decode"></value>
+        </block>
+        <block type="CocoRobo_ujson_dumps">
+         <value name="data"><shadow type="text_dict"><field name="TEXT">"Age":8</field></shadow></value>
+        </block>
+        <block type="CocoRobo_ujson_loads">
+        <value name="data"><shadow type="text"><field name="TEXT">{"Age":8}</field></shadow></value>
+        </block>
+        <block type="CocoRobo_code_annotation">
+        <value name="data"><shadow type="text"><field name="TEXT"></field></shadow></value>
+        </block> */}

+ 0 - 0
src/blockly/blocks/Mutator.js


+ 0 - 0
src/blockly/blocks/ai.js


+ 711 - 0
src/blockly/blocks/basic.js

@@ -0,0 +1,711 @@
+import Blockly from 'blockly';
+import { pythonGenerator } from "blockly/python";
+import CategoryColors from './define_color'
+
+Blockly.Python = pythonGenerator
+Blockly.Blocks['custom_text_block'] = {
+    init: function () {
+        this.appendDummyInput()
+            .appendField(Blockly.Msg.numpy_mnist_clear)
+            .appendField(new Blockly.FieldTextInput("张三丰"), "TEXT_INPUT");
+        // this.setOutput(true, null);
+        this.setPreviousStatement(true, null)
+        this.setNextStatement(true, null)
+        this.setTooltip("");
+        this.setHelpUrl("");
+        this.setStyle('custom_text_blocks')
+    }
+};
+Blockly.Blocks["CocoRobo_return"] = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            nextStatement: null,
+            previousStatement: null,
+            colour: CategoryColors.Logic,
+            helpUrl: Blockly.Msg.CocoRobo_RETURN_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_RETURN_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_RETURN_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "VAR"
+            }]
+        })
+    }
+}
+Blockly.Blocks.CocoRobo_try_except = {
+    init: function () {
+        this.jsonInit({
+            message0: "",
+            previousStatement: null,
+            nextStatement: null,
+            colour: CategoryColors.Logic,
+            tooltip: Blockly.Msg.CocoRobo_try_except_TOOLTIP,
+            helpUrl: ""
+        });
+        this.appendStatementInput("TRY").appendField("try");
+        this.appendStatementInput("EXCEPT").appendField("except");
+    }
+}
+
+Blockly.Blocks.CocoRobo_try_except_finally = {
+    init: function () {
+        this.jsonInit({
+            message0: "",
+            previousStatement: null,
+            nextStatement: null,
+            colour: CategoryColors.Logic,
+            tooltip: Blockly.Msg.CocoRobo_try_except_finally_TOOLTIP,
+            helpUrl: ""
+        });
+        this.appendStatementInput("TRY").appendField("try");
+        this.appendStatementInput("EXCEPT").appendField("except");
+        this.appendStatementInput("FINALLY").appendField("finally")
+    }
+};
+
+Blockly.Blocks.CocoRobo_type = {
+    init: function () {
+        this.jsonInit({
+            message0: "值 %1 的类型",
+            args0: [{
+                type: "input_value",
+                name: "VAR"
+            }],
+            output: null,
+            colour: CategoryColors.Logic,
+            tooltip: "返回当前值的类型",
+            helpUrl: ""
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_type_is = {
+    init: function () {
+        this.jsonInit({
+            message0: '值 %1 的类型为 %2',
+            args0: [{
+                type: "input_value",
+                name: "VAR"
+            }, {
+                name: "TYPE",
+                options: [
+                    ["int", "int"],
+                    ["float", "float"],
+                    ["bool", "bool"],
+                    ["str", "str"],
+                    ["list", "list"],
+                    ["tuple", "tuple"],
+                    ["set", "set"],
+                    ["dict", "dict"],
+                    ["bytes", "bytes"],
+                    ["bytearray", "bytearray"],
+                    ["complex", "complex"]
+                ],
+                type: "field_dropdown"
+            }],
+            output: "Boolean",
+            colour: CategoryColors.Logic,
+            // tooltip: Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP,
+            helpUrl: Blockly.Msg.CocoRobo_TYPE_IS_HELPURL
+        });
+        var thisBlock = this;
+        this.setTooltip(function () {
+            return Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP.replace('%2',
+                thisBlock.getFieldValue('TYPE'));
+        });
+    }
+};
+Blockly.Blocks.CocoRobo_eval = {
+    init: function () {
+        this.jsonInit({
+            message0: '计算表达式 %1 的结果',
+            args0: [{
+                check: "String",
+                type: "input_value",
+                name: "VAR"
+            }],
+            output: null,
+            colour: CategoryColors.Logic,
+            tooltip: '计算字符串表达式,并返回结果',
+            helpUrl: ""
+        })
+    }
+};
+
+Blockly.controls = {
+    HUE: "#9d64fd"
+}
+Blockly.Blocks.controls_repeat_forever = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CONTROLS_REPEAT_FOREVER,
+            previousStatement: null,
+            nextStatement: null,
+            colour: Blockly.controls.HUE,
+            tooltip: Blockly.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP,
+            helpUrl: Blockly.Msg.CONTROLS_REPEAT_HELPURL
+        });
+        this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)
+    }
+};
+Blockly.Blocks.controls_repeat_ext = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CONTROLS_REPEAT_TITLE,
+            args0: [{
+                type: "input_value",
+                name: "TIMES",
+                check: "Number"
+            }],
+            previousStatement: null,
+            nextStatement: null,
+            colour: Blockly.controls.HUE,
+            tooltip: Blockly.Msg.CONTROLS_REPEAT_TOOLTIP,
+            helpUrl: Blockly.Msg.CONTROLS_REPEAT_HELPURL
+        });
+        this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)
+    }
+};
+Blockly.Blocks.controls_repeat = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CONTROLS_REPEAT_TITLE,
+            args0: [{
+                type: "field_number",
+                name: "TIMES",
+                value: 10,
+                min: 0,
+                precision: 1
+            }],
+            previousStatement: null,
+            nextStatement: null,
+            colour: Blockly.controls.HUE,
+            tooltip: Blockly.Msg.CONTROLS_REPEAT_TOOLTIP,
+            helpUrl: Blockly.Msg.CONTROLS_REPEAT_HELPURL
+        });
+        this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)
+    }
+};
+Blockly.Blocks.controls_whileUntil = {
+    init: function () {
+        var a = [[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE, "WHILE"], [Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, "UNTIL"]];
+        this.setHelpUrl(Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL);
+        this.setColour(Blockly.controls.HUE);
+        this.appendValueInput("BOOL").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a), "MODE");
+        this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO);
+        this.setPreviousStatement(!0);
+        this.setNextStatement(!0);
+        var b = this;
+        this.setTooltip(function () {
+            var a = b.getFieldValue("MODE");
+            return {
+                WHILE: Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,
+                UNTIL: Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL
+            }[a]
+        })
+    }
+};
+Blockly.Blocks.controls_for = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CONTROLS_FOR_TITLE,
+            args0: [{
+                type: "field_variable",
+                name: "VAR",
+                variable: null
+            }, {
+                type: "input_value",
+                name: "FROM",
+                check: "Number",
+                align: "RIGHT"
+            }, {
+                type: "input_value",
+                name: "TO",
+                check: "Number",
+                align: "RIGHT"
+            }, {
+                type: "input_value",
+                name: "BY",
+                check: "Number",
+                align: "RIGHT"
+            }],
+            inputsInline: !0,
+            previousStatement: null,
+            nextStatement: null,
+            colour: Blockly.controls.HUE,
+            helpUrl: Blockly.Msg.CONTROLS_FOR_HELPURL
+        });
+        this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOR_INPUT_DO);
+        var a = this;
+        this.setTooltip(function () {
+            return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace("%1", a.getFieldValue("VAR"))
+        })
+    },
+    customContextMenu: function (a) {
+        if (!this.isCollapsed()) {
+            var b = {
+                enabled: !0
+            }
+                , c = this.getFieldValue("VAR");
+            b.text = Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1", c);
+            c = goog.dom.createDom("field", null, c);
+            c.setAttribute("name", "VAR");
+            c = goog.dom.createDom("block", null, c);
+            c.setAttribute("type", "variables_get");
+            b.callback = Blockly.ContextMenu.callbackFactory(this, c);
+            a.push(b)
+        }
+    }
+};
+Blockly.Blocks.controls_forEach = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CONTROLS_FOREACH_TITLE,
+            args0: [{
+                type: "field_variable",
+                name: "VAR",
+                variable: null
+            }, {
+                type: "input_value",
+                name: "LIST",
+                check: "Array"
+            }],
+            previousStatement: null,
+            nextStatement: null,
+            colour: Blockly.controls.HUE,
+            helpUrl: Blockly.Msg.CONTROLS_FOREACH_HELPURL
+        });
+        this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_DO);
+        var a = this;
+        this.setTooltip(function () {
+            return Blockly.Msg.CONTROLS_FOREACH_TOOLTIP.replace("%1", a.getFieldValue("VAR"))
+        })
+    },
+    customContextMenu: Blockly.Blocks.controls_for.customContextMenu
+};
+Blockly.Blocks.controls_flow_statements = {
+    init: function () {
+        var a = [[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, "BREAK"], [Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, "CONTINUE"]];
+        this.setHelpUrl(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL);
+        this.setColour(Blockly.controls.HUE);
+        this.appendDummyInput().appendField(new Blockly.FieldDropdown(a), "FLOW");
+        this.setPreviousStatement(!0);
+        var b = this;
+        this.setTooltip(function () {
+            var a = b.getFieldValue("FLOW");
+            return {
+                BREAK: Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,
+                CONTINUE: Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE
+            }[a]
+        })
+    },
+    onchange: function (a) {
+        if (!this.workspace.isDragging()) {
+            a = !1;
+            var b = this;
+            do {
+                if (-1 != this.LOOP_TYPES.indexOf(b.type)) {
+                    a = !0;
+                    break
+                }
+                b = b.getSurroundParent()
+            } while (b); a ? (this.setWarningText(null),
+                this.isInFlyout || this.setDisabled(!1)) : (this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING),
+                    this.isInFlyout || this.getInheritedDisabled() || this.setDisabled(!0))
+        }
+    },
+    LOOP_TYPES: "controls_repeat_forever controls_repeat controls_repeat_ext controls_forEach controls_for controls_whileUntil tello_repeat_forever".split(" ")
+};
+
+Blockly.Blocks.controls_if = {
+    init: function () {
+        this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);
+        this.setColour(CategoryColors.Logic);
+        this.appendValueInput("IF0").setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);
+        this.appendStatementInput("DO0").appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);
+        this.setPreviousStatement(!0);
+        this.setNextStatement(!0);
+        this.setMutator(new Blockly.icons.MutatorIcon(["controls_if_elseif", "controls_if_else"], this));
+        var a = this;
+        this.setTooltip(function () {
+            if (a.elseifCount_ || a.elseCount_) {
+                if (!a.elseifCount_ && a.elseCount_)
+                    return Blockly.Msg.CONTROLS_IF_TOOLTIP_2;
+                if (a.elseifCount_ && !a.elseCount_)
+                    return Blockly.Msg.CONTROLS_IF_TOOLTIP_3;
+                if (a.elseifCount_ && a.elseCount_)
+                    return Blockly.Msg.CONTROLS_IF_TOOLTIP_4
+            } else
+                return Blockly.Msg.CONTROLS_IF_TOOLTIP_1;
+            return ""
+        });
+        this.elseCount_ = this.elseifCount_ = 0
+    },
+    mutationToDom: function () {
+        if (!this.elseifCount_ && !this.elseCount_)
+            return null;
+        var a = document.createElement("mutation");
+        this.elseifCount_ && a.setAttribute("elseif", this.elseifCount_);
+        this.elseCount_ && a.setAttribute("else", 1);
+        return a
+    },
+    domToMutation: function (a) {
+        this.elseifCount_ = parseInt(a.getAttribute("elseif"), 10) || 0;
+        this.elseCount_ = parseInt(a.getAttribute("else"), 10) || 0;
+        this.updateShape_()
+    },
+    decompose: function (a) {
+        var b = a.newBlock("controls_if_if");
+        b.initSvg();
+        for (var c = b.nextConnection, e = 1; e <= this.elseifCount_; e++) {
+            var d = a.newBlock("controls_if_elseif");
+            d.initSvg();
+            c.connect(d.previousConnection);
+            c = d.nextConnection
+        }
+        this.elseCount_ && (a = a.newBlock("controls_if_else"),
+            a.initSvg(),
+            c.connect(a.previousConnection));
+        return b
+    },
+    compose: function (a) {
+        var b = a.nextConnection.targetBlock();
+        this.elseCount_ = this.elseifCount_ = 0;
+        a = [null];
+        for (var c = [null], e = null; b;) {
+            switch (b.type) {
+                case "controls_if_elseif":
+                    this.elseifCount_++;
+                    a.push(b.valueConnection_);
+                    c.push(b.statementConnection_);
+                    break;
+                case "controls_if_else":
+                    this.elseCount_++;
+                    e = b.statementConnection_;
+                    break;
+                default:
+                    throw "Unknown block type.";
+            }
+            b = b.nextConnection && b.nextConnection.targetBlock()
+        }
+        this.updateShape_();
+        for (b = 1; b <= this.elseifCount_; b++)
+            Blockly.icons.MutatorIcon.reconnect(a[b], this, "IF" + b),
+                Blockly.icons.MutatorIcon.reconnect(c[b], this, "DO" + b);
+        Blockly.icons.MutatorIcon.reconnect(e, this, "ELSE")
+    },
+    saveConnections: function (a) {
+        a = a.nextConnection.targetBlock();
+        for (var b = 1; a;) {
+            switch (a.type) {
+                case "controls_if_elseif":
+                    var c = this.getInput("IF" + b)
+                        , e = this.getInput("DO" + b);
+                    a.valueConnection_ = c && c.connection.targetConnection;
+                    a.statementConnection_ = e && e.connection.targetConnection;
+                    b++;
+                    break;
+                case "controls_if_else":
+                    e = this.getInput("ELSE");
+                    a.statementConnection_ = e && e.connection.targetConnection;
+                    break;
+                default:
+                    throw "Unknown block type.";
+            }
+            a = a.nextConnection && a.nextConnection.targetBlock()
+        }
+    },
+    updateShape_: function () {
+        this.getInput("ELSE") && this.removeInput("ELSE");
+        for (var a = 1; this.getInput("IF" + a);)
+            this.removeInput("IF" + a),
+                this.removeInput("DO" + a),
+                a++;
+        for (a = 1; a <= this.elseifCount_; a++)
+            this.appendValueInput("IF" + a).setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF),
+                this.appendStatementInput("DO" + a).appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);
+        this.elseCount_ && this.appendStatementInput("ELSE").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE)
+    }
+};
+Blockly.Blocks.controls_if_elseif = {
+    init: function () {
+        this.setColour(CategoryColors.Logic);
+        this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF);
+        this.setPreviousStatement(!0);
+        this.setNextStatement(!0);
+        this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP);
+        this.contextMenu = !1
+    }
+};
+Blockly.Blocks.controls_if_else = {
+    init: function () {
+        this.setColour(CategoryColors.Logic);
+        this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE);
+        this.setPreviousStatement(!0);
+        this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP);
+        this.contextMenu = !1
+    }
+};
+Blockly.Blocks.controls_if_if = {
+    init: function () {
+        this.setColour(CategoryColors.Logic);
+        this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_IF_TITLE_IF);
+        this.setNextStatement(!0);
+        this.setTooltip(Blockly.Msg.CONTROLS_IF_IF_TOOLTIP);
+        this.contextMenu = !1
+    }
+};
+Blockly.Blocks['logic_compare'] = {
+    /**
+     * Block for comparison operator.
+     * @this Blockly.Block
+     */
+    init: function () {
+        var rtlOperators = [
+            ['==', 'EQ'],
+            ['!=', 'NEQ'],
+            ['>', 'LT'],
+            ['>=', 'LTE'],
+            ['<', 'GT'],
+            ['<=', 'GTE']
+        ];
+        var ltrOperators = [
+            ['==', 'EQ'],
+            ['!=', 'NEQ'],
+            ['<', 'LT'],
+            ['<=', 'LTE'],
+            ['>', 'GT'],
+            ['>=', 'GTE']
+        ];
+        var OPERATORS = this.RTL ? rtlOperators : ltrOperators;
+        this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL);
+        this.setColour(CategoryColors.Logic);
+        this.setOutput(true, 'Boolean');
+        this.appendValueInput('A');
+        this.appendValueInput('B')
+            .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');
+        this.setInputsInline(true);
+        // Assign 'this' to a variable for use in the tooltip closure below.
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var op = thisBlock.getFieldValue('OP');
+            var TOOLTIPS = {
+                'EQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ,
+                'NEQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,
+                'LT': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT,
+                'LTE': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE,
+                'GT': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT,
+                'GTE': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE
+            };
+            return TOOLTIPS[op];
+        });
+        this.prevBlocks_ = [null, null];
+    },
+    /**
+     * Called whenever anything on the workspace changes.
+     * Prevent mismatched types from being compared.
+     * @param {!Blockly.Events.Abstract} e Change event.
+     * @this Blockly.Block
+     */
+    onchange: function (e) {
+        var blockA = this.getInputTargetBlock('A');
+        var blockB = this.getInputTargetBlock('B');
+        // Disconnect blocks that existed prior to this change if they don't match.
+        if (blockA && blockB &&
+            !blockA.outputConnection.checkType_(blockB.outputConnection)) {
+            // Mismatch between two inputs.  Disconnect previous and bump it away.
+            // Ensure that any disconnections are grouped with the causing event.
+            Blockly.Events.setGroup(e.group);
+            for (var i = 0; i < this.prevBlocks_.length; i++) {
+                var block = this.prevBlocks_[i];
+                if (block === blockA || block === blockB) {
+                    block.unplug();
+                    block.bumpNeighbours_();
+                }
+            }
+            Blockly.Events.setGroup(false);
+        }
+        this.prevBlocks_[0] = blockA;
+        this.prevBlocks_[1] = blockB;
+    }
+};
+Blockly.Blocks['logic_operation'] = {
+    /**
+     * Block for logical operations: 'and', 'or'.
+     * @this Blockly.Block
+     */
+    init: function () {
+        var OPERATORS =
+            [[Blockly.Msg.LOGIC_OPERATION_AND, 'AND'],
+            [Blockly.Msg.LOGIC_OPERATION_OR, 'OR']];
+        this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL);
+        this.setColour(CategoryColors.Logic);
+        this.setOutput(true, 'Boolean');
+        this.appendValueInput('A')
+            .setCheck('Boolean');
+        this.appendValueInput('B')
+            .setCheck('Boolean')
+            .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');
+        this.setInputsInline(true);
+        // Assign 'this' to a variable for use in the tooltip closure below.
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var op = thisBlock.getFieldValue('OP');
+            var TOOLTIPS = {
+                'AND': Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND,
+                'OR': Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR
+            };
+            return TOOLTIPS[op];
+        });
+    }
+};
+
+Blockly.Blocks['logic_negate'] = {
+    /**
+     * Block for negation.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": Blockly.Msg.LOGIC_NEGATE_TITLE,
+            "args0": [
+                {
+                    "type": "input_value",
+                    "name": "BOOL",
+                    "check": "Boolean"
+                }
+            ],
+            "output": "Boolean",
+            "colour": CategoryColors.Logic,
+            "tooltip": Blockly.Msg.LOGIC_NEGATE_TOOLTIP,
+            "helpUrl": Blockly.Msg.LOGIC_NEGATE_HELPURL
+        });
+    }
+};
+
+Blockly.Blocks['logic_boolean'] = {
+    /**
+     * Block for boolean data type: true and false.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": "%1",
+            "args0": [
+                {
+                    "type": "field_dropdown",
+                    "name": "BOOL",
+                    "options": [
+                        [Blockly.Msg.LOGIC_BOOLEAN_TRUE, "TRUE"],
+                        [Blockly.Msg.LOGIC_BOOLEAN_FALSE, "FALSE"]
+                    ]
+                }
+            ],
+            "output": "Boolean",
+            "colour": CategoryColors.Logic,
+            "tooltip": Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP,
+            "helpUrl": Blockly.Msg.LOGIC_BOOLEAN_HELPURL
+        });
+    }
+};
+
+Blockly.Blocks['logic_null'] = {
+    /**
+     * Block for null data type.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": Blockly.Msg.LOGIC_NULL,
+            "output": null,
+            "colour": CategoryColors.Logic,
+            "tooltip": Blockly.Msg.LOGIC_NULL_TOOLTIP,
+            "helpUrl": Blockly.Msg.LOGIC_NULL_HELPURL
+        });
+    }
+};
+
+Blockly.Blocks['logic_ternary'] = {
+    /**
+     * Block for ternary operator.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.setHelpUrl(Blockly.Msg.LOGIC_TERNARY_HELPURL);
+        this.setColour(CategoryColors.Logic);
+        this.appendValueInput('IF')
+            .setCheck('Boolean')
+            .appendField(Blockly.Msg.LOGIC_TERNARY_CONDITION);
+        this.appendValueInput('THEN')
+            .appendField(Blockly.Msg.LOGIC_TERNARY_IF_TRUE);
+        this.appendValueInput('ELSE')
+            .appendField(Blockly.Msg.LOGIC_TERNARY_IF_FALSE);
+        this.setOutput(true);
+        this.setTooltip(Blockly.Msg.LOGIC_TERNARY_TOOLTIP);
+        this.prevParentConnection_ = null;
+    },
+    /**
+     * Called whenever anything on the workspace changes.
+     * Prevent mismatched types.
+     * @param {!Blockly.Events.Abstract} e Change event.
+     * @this Blockly.Block
+     */
+    onchange: function (e) {
+        var blockA = this.getInputTargetBlock('THEN');
+        var blockB = this.getInputTargetBlock('ELSE');
+        var parentConnection = this.outputConnection.targetConnection;
+        // Disconnect blocks that existed prior to this change if they don't match.
+        if ((blockA || blockB) && parentConnection) {
+            for (var i = 0; i < 2; i++) {
+                var block = (i == 1) ? blockA : blockB;
+                if (block && !block.outputConnection.checkType_(parentConnection)) {
+                    // Ensure that any disconnections are grouped with the causing event.
+                    Blockly.Events.setGroup(e.group);
+                    if (parentConnection === this.prevParentConnection_) {
+                        this.unplug();
+                        parentConnection.getSourceBlock().bumpNeighbours_();
+                    } else {
+                        block.unplug();
+                        block.bumpNeighbours_();
+                    }
+                    Blockly.Events.setGroup(false);
+                }
+            }
+        }
+        this.prevParentConnection_ = parentConnection;
+    }
+};
+
+Blockly.Blocks['logic_isIn'] = {
+    /**
+     * Block for testing if something contains something.
+     * @this Blockly.Block
+     */
+    init: function () {
+        var OPERATORS =
+            [["is in", 'IN'],
+            ["is not in", 'NOTIN']];
+        this.setColour(CategoryColors.Logic);
+        this.setOutput(true, 'Boolean');
+        this.appendValueInput('ITEM');
+        this.appendValueInput('LIST')
+            .setCheck(['Array', 'String'])
+            .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP');
+        this.setInputsInline(true);
+    }
+};
+
+
+Blockly.Blocks['logic_none'] = {
+    /**
+     * Block for testing if something contains something.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.appendDummyInput()
+            .appendField("None");
+        this.setColour(CategoryColors.Logic);
+        this.setOutput(true);
+    }
+};
+export default Blockly

+ 53 - 0
src/blockly/blocks/define_color.js

@@ -0,0 +1,53 @@
+
+const CategoryColors = {
+	'Common': '328',
+	'System': '#22398e',
+	'onboard_RGB': '0',
+	'Event': '32',
+	'Show': '#5bb2d6',
+	'Music': '192',
+	'Audio': '#24c48e',
+	'AI': '#24c48e',
+	'Pin': '#ff8b2c',
+	'Radio': '328',
+	'Wifi': '#386dc8',
+	'IoT_OneNet': '64',
+	'IoT_TinyWebIO': '160',
+	'IoT_Blynk': '#24c48e',
+	'IoT_MQTT': '288',
+	'IoT_OneNet_WeChat': '64',
+	'Neopixel': '288',
+	'Bluebit': '#336699',
+	'General': '260',
+	'Sensor': '260',
+	'Weather': '192',
+	'Logic': '#4c97ff',
+	'Loop': '120',
+	'Math': "#5472ea",
+	'Text': "#33cc99",
+	'List': '#40bfe4',
+	'Variables': '330',
+	'Functions': '290',
+	'Tuple': '192',
+	'Dictionary': '32',
+	'Set': '160',
+	'File': '#22398e',
+	'Network': "#183895",
+	'UART': '260',
+	'Box': '#24c48e',
+	'Microbit': '160',
+	'Accelerometer': '0',
+	'Button': '32',
+	'Compass': '64',
+	'Image': '128',
+	'Light': '224',
+	'Radio2': '288',
+	'AI_LCD': '#BA2FBA',
+	'AI_camera': '#008CFF',
+	'AI_face': '#6533CB',
+	'AI_20classid': '#3B67CC',
+	'AI_number': '#068227',
+	'AI_color': '#7C658C'
+};
+
+export default CategoryColors;

+ 9 - 0
src/blockly/blocks/index.js

@@ -0,0 +1,9 @@
+import basic from './basic';
+import logic from './logic';
+import math from './math';
+import variable from './variables';
+import text from './text';
+
+const Blockly = {...basic,...logic,...math,...variable,...text};
+
+export default Blockly;

+ 126 - 0
src/blockly/blocks/logic.js

@@ -0,0 +1,126 @@
+import Blockly from 'blockly';
+import { pythonGenerator } from "blockly/python";
+import CategoryColors from './define_color'
+
+Blockly.Python = pythonGenerator
+Blockly.Blocks.CocoRobo_return = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            nextStatement: null,
+            previousStatement: null,
+            colour: CategoryColors.Logic,
+            helpUrl: Blockly.Msg.CocoRobo_RETURN_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_RETURN_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_RETURN_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "VAR"
+            }]
+        })
+    }
+};
+
+Blockly.Blocks.CocoRobo_try_except = {
+    init: function () {
+        this.jsonInit({
+            message0: "",
+            previousStatement: null,
+            nextStatement: null,
+            colour: CategoryColors.Logic,
+            tooltip: Blockly.Msg.CocoRobo_try_except_TOOLTIP,
+            helpUrl: ""
+        });
+        this.appendStatementInput("TRY").appendField("try");
+        this.appendStatementInput("EXCEPT").appendField("except");
+    }
+};
+
+
+Blockly.Blocks.CocoRobo_try_except_finally = {
+    init: function () {
+        this.jsonInit({
+            message0: "",
+            previousStatement: null,
+            nextStatement: null,
+            colour: CategoryColors.Logic,
+            tooltip: Blockly.Msg.CocoRobo_try_except_finally_TOOLTIP,
+            helpUrl: ""
+        });
+        this.appendStatementInput("TRY").appendField("try");
+        this.appendStatementInput("EXCEPT").appendField("except");
+        this.appendStatementInput("FINALLY").appendField("finally")
+    }
+};
+
+
+Blockly.Blocks.CocoRobo_type = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CocoRobo_TYPE_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "VAR"
+            }],
+            output: null,
+            colour: CategoryColors.Logic,
+            tooltip: Blockly.Msg.CocoRobo_TYPE_TOOLTIP,
+            helpUrl: Blockly.Msg.CocoRobo_TYPE_HELPURL
+        })
+    }
+};
+
+
+Blockly.Blocks.CocoRobo_type_is = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CocoRobo_TYPE_IS_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "VAR"
+            }, {
+                name: "TYPE",
+                options: [
+                    ["int", "int"],
+                    ["float", "float"],
+                    ["bool", "bool"],
+                    ["str", "str"],
+                    ["list", "list"],
+                    ["tuple", "tuple"],
+                    ["set", "set"],
+                    ["dict", "dict"],
+                    ["bytes", "bytes"],
+                    ["bytearray", "bytearray"],
+                    ["complex", "complex"]
+                ],
+                type: "field_dropdown"
+            }],
+            output: "Boolean",
+            colour: CategoryColors.Logic,
+            // tooltip: Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP,
+            helpUrl: Blockly.Msg.CocoRobo_TYPE_IS_HELPURL
+        });
+        var thisBlock = this;
+        this.setTooltip(function () {
+            return Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP.replace('%2',
+                thisBlock.getFieldValue('TYPE'));
+        });
+    }
+};
+Blockly.Blocks.CocoRobo_eval = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.CocoRobo_EVAL_MESSAGE0,
+            args0: [{
+                check: "String",
+                type: "input_value",
+                name: "VAR"
+            }],
+            output: null,
+            colour: CategoryColors.Logic,
+            tooltip: Blockly.Msg.CocoRobo_EVAL_TOOLTIP,
+            helpUrl: Blockly.Msg.CocoRobo_EVAL_HELPURL
+        })
+    }
+};
+export default Blockly;

+ 1200 - 0
src/blockly/blocks/math.js

@@ -0,0 +1,1200 @@
+import Blockly from 'blockly';
+import { pythonGenerator } from "blockly/python";
+import CategoryColors from './define_color'
+
+Blockly.Python = pythonGenerator
+
+// math
+Blockly.math = {
+    HUE: "#5472ea"
+}
+/* additional math */
+Blockly.Blocks['math_degrad'] = {
+    init: function () {
+        this.appendValueInput("convert")
+            .setCheck(null)
+            .appendField(new Blockly.FieldDropdown([
+                [Blockly.Msg.math_degrad_rad, "radians"],
+                [Blockly.Msg.math_degrad_deg, "degrees"]
+            ]), "rad_deg");
+        this.setOutput(true, null);
+        this.setColour("#5472ea");
+        // this.setTooltip("");
+        this.setHelpUrl("");
+
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var mode = thisBlock.getFieldValue('rad_deg');
+            var TOOLTIPS = {
+                'radians': Blockly.Msg.Math_Degrad_RAD_TOOLTIP,
+                'degrees': Blockly.Msg.Math_Degrad_DEG_TOOLTIP
+            };
+            return TOOLTIPS[mode];
+        });
+    }
+};
+
+Blockly.Blocks.math_angle = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Math,
+            helpUrl: "",
+            tooltip: "",
+            message0: "%1",
+            args0: [{
+                name: "angle",
+                type: "field_angle"
+            }]
+        })
+    }
+};
+
+
+Blockly.Blocks.math_keep_decimal = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL,
+            tooltip: Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP,
+            message0: Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0,
+            args0: [{
+                check: "Number",
+                type: "input_value",
+                name: "NUM"
+            }, {
+                check: "Number",
+                type: "input_value",
+                name: "PLACE"
+            }]
+        })
+    }
+};
+Blockly.Blocks.math_division_consult = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.MATH_DIVISION_CONSULT_TITLE,
+            args0: [{
+                type: "input_value",
+                name: "DIVIDEND",
+                check: "Number"
+            }, {
+                type: "input_value",
+                name: "DIVISOR",
+                check: "Number"
+            }],
+            inputsInline: !0,
+            output: "Number",
+            colour: Blockly.math.HUE,
+            tooltip: Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP,
+            helpUrl: Blockly.Msg.MATH_DIVISION_CONSULT_HELPURL
+        })
+    }
+};
+Blockly.Blocks.labplus_mapping = {
+    init: function () {
+        this.jsonInit({
+            colour: 230,
+            args0: [{
+                name: "inputNum",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "bMin",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "bMax",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "cMin",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "cMax",
+                type: "input_value",
+                check: "Number"
+            }],
+            output: "Number",
+            message0: Blockly.Msg.labplus_mapping_MESSAGE0,
+            tooltip: Blockly.Msg.labplus_mapping_TOOLTIP,
+            helpUrl: Blockly.Msg.labplus_mapping_HELPURL
+        })
+    }
+};
+
+Blockly.Blocks.math_random_randrange = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.MATH_RANDOM_RANDRANGE_HELPURL,
+            tooltip: Blockly.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP,
+            message0: Blockly.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0,
+            args0: [{
+                check: "Number",
+                type: "input_value",
+                name: "start"
+            }, {
+                check: "Number",
+                type: "input_value",
+                name: "stop"
+            }, {
+                check: "Number",
+                type: "input_value",
+                name: "step"
+            }]
+        })
+    }
+};
+Blockly.Blocks['math_random_float'] = {
+  /**
+   * Block for random fraction between 0 and 1.
+   * @this Blockly.Block
+   */
+  init: function() {
+    this.jsonInit({
+      "message0": Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM,
+      "output": "Number",
+      "colour": CategoryColors.Math,
+      "tooltip": Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP,
+      "helpUrl": Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL
+    });
+  }
+};
+Blockly.Blocks.math_convert = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.MATH_CONVERT_MESSAGE0,
+            args0: [{
+                type: "field_dropdown",
+                options: [["int", "int"], ["float", "float"]],
+                name: "TYPE0"
+            }, {
+                type: "input_value",
+                name: "INPUT0",
+                check: ["Number", "String"]
+            }],
+            output: "Number",
+            colour: CategoryColors.Math,
+            tooltip: Blockly.Msg.MATH_CONVERT_TOOLTIP,
+            helpUrl: Blockly.Msg.MATH_CONVERT_HELPURL
+        })
+    }
+};
+Blockly.Blocks.math_number_bits_ops = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "A",
+                check: "Number"
+            }, {
+                type: "field_dropdown",
+                options: [["|", " | "], ["&", " & "], ["^", " ^ "], ["<<", " << "], [">>", " >> "]],
+                name: "OP"
+            }, {
+                type: "input_value",
+                name: "B",
+                check: "Number"
+            }],
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Math,
+            tooltip: Blockly.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP,
+            helpUrl: Blockly.Msg.MATH_NUMBER_BITS_OPS_HELPURL
+        })
+    }
+};
+Blockly.Blocks.bit_inversion = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.BIT_INVERSION_HELPURL,
+            tooltip: Blockly.Msg.BIT_INVERSION_TOOLTIP,
+            message0: Blockly.Msg.BIT_INVERSION_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "data"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_ten_convert_to = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "String",
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL,
+            // tooltip: Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0,
+            args0: [{
+                check: "Number",
+                type: "input_value",
+                name: "int_num"
+            }, {
+                options: [
+                    [Blockly.Msg.CocoRobo_BIN, "bin"],
+                    [Blockly.Msg.CocoRobo_OCT, "oct"],
+                    [Blockly.Msg.CocoRobo_HEX, "hex"]
+                ],
+                type: "field_dropdown",
+                name: "ten_convert_to"
+            }]
+        });
+        var thisBlock = this;
+        this.setTooltip(function () {
+            return Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP.replace('%2',
+                thisBlock.getFieldValue('ten_convert_to'));
+        });
+    }
+};
+Blockly.Blocks.CocoRobo_convert_to_ten = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL,
+            // tooltip: Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0,
+            args0: [{
+                options: [
+                    [Blockly.Msg.CocoRobo_BIN, "2"],
+                    [Blockly.Msg.CocoRobo_OCT, "8"],
+                    [Blockly.Msg.CocoRobo_HEX, "16"]
+                ],
+                type: "field_dropdown",
+                name: "convert_choice"
+            }, {
+                check: "String",
+                type: "input_value",
+                name: "convert_str"
+            }]
+        });
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var mode = thisBlock.getFieldValue('convert_choice');
+            var TOOLTIPS = {
+                '2': Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace('%2', "bin"),
+                '8': Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace('%2', "oct"),
+                '16': Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace('%2', "hex")
+            };
+            return TOOLTIPS[mode];
+        });
+    }
+};
+Blockly.Blocks.CocoRobo_high_low = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Pin,
+            helpUrl: Blockly.Msg.CocoRobo_HIGH_LOW_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_HIGH_LOW_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_HIGH_LOW_MESSAGE0,
+            args0: [{
+                options: [
+                    ["HIGH", "1"],
+                    ["LOW", "0"]
+                ],
+                type: "field_dropdown",
+                name: "high_low"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_start_new_thread = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            nextStatement: null,
+            previousStatement: null,
+            colour: CategoryColors.Event,
+            helpUrl: Blockly.Msg.CocoRobo_START_NEW_THREAD_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0,
+            args0: [{
+                options: [
+                    ["1", "1"],
+                    ["2", "2"],
+                    ["3", "3"],
+                    ["4", "4"]
+                ],
+                type: "field_dropdown",
+                name: "thread_name"
+            }]
+        });
+        this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)
+    }
+};
+Blockly.Blocks.CocoRobo_lock_object_acquire_lock = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            nextStatement: null,
+            previousStatement: null,
+            colour: CategoryColors.Event,
+            helpUrl: Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0,
+            args0: [{
+                type: "field_input",
+                name: "thread_lock_object",
+                text: "lock"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_ten_converted_to_bytes = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: null,
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL,
+            // tooltip: Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0,
+            args0: [{
+                options: [
+                    ["2", "'\x3cH'"],
+                    ["4", "'\x3cL'"]
+                ],
+                type: "field_dropdown",
+                name: "convert_choice"
+            }, {
+                check: "Number",
+                type: "input_value",
+                name: "convert_num"
+            }]
+        });
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var mode = thisBlock.getFieldValue('convert_choice');
+            var TOOLTIPS = {
+                "'\x3cHH'": Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP.replace('%1', "2"),
+                "'\x3cLL'": Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP.replace('%1', "4")
+            };
+            return TOOLTIPS[mode];
+        });
+    }
+};
+Blockly.Blocks.CocoRobo_int_to_chr = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "String",
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_INT_TO_CHR_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_INT_TO_CHR_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_INT_TO_CHR_MESSAGE0,
+            args0: [{
+                check: "Number",
+                type: "input_value",
+                name: "convert_num"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_hcsr04_obj = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            nextStatement: null,
+            previousStatement: null,
+            colour: CategoryColors.General,
+            helpUrl: Blockly.Msg.CocoRobo_HCSR04_OBJ_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0,
+            args0: [{
+                text: "hcsr04",
+                type: "field_input",
+                name: "hcsr04_name"
+            }, {
+                check: "Number",
+                type: "input_value",
+                name: "trigger"
+            }, {
+                check: "Number",
+                type: "input_value",
+                name: "echo"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_hcsr04_distance = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.General,
+            helpUrl: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0,
+            args0: [{
+                text: "hcsr04",
+                type: "field_input",
+                name: "hcsr04_name"
+            }, {
+                options: [
+                    ["mm", "mm"],
+                    ["cm", "cm"]
+                ],
+                type: "field_dropdown",
+                name: "unit"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_hcsr04_distance_mm = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.Pin,
+            helpUrl: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0,
+            args0: [{
+                text: "hcsr04",
+                type: "field_input",
+                name: "hcsr04_name"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_pm2_5_MIC = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.General,
+            helpUrl: Blockly.Msg.CocoRobo_PM2_5_MIC_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_PM2_5_MIC_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_PM2_5_MIC_MESSAGE0,
+            args0: [{
+                check: "Number",
+                type: "input_value",
+                name: "rx"
+            }, {
+                options: [
+                    ["PM1.0ug/m3", "_pm_data[0]"],
+                    ["PM2.5ug/m3", "_pm_data[1]"],
+                    ["PM10ug/m3", "_pm_data[2]"]
+                ],
+                type: "field_dropdown",
+                name: "unit"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_pm2_5_LitresAir = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "Number",
+            colour: CategoryColors.General,
+            helpUrl: Blockly.Msg.CocoRobo_PM2_5_LitresAir_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0,
+            args0: [{
+                check: "Number",
+                type: "input_value",
+                name: "rx"
+            }, {
+                options: [
+                    ["0.3um", "_pm_data[3]"],
+                    ["0.5um", "_pm_data[4]"],
+                    ["1um", "_pm_data[5]"],
+                    ["2.5um", "_pm_data[6]"],
+                    ["5um", "_pm_data[7]"],
+                    ["10um", "_pm_data[8]"]
+                ],
+                type: "field_dropdown",
+                name: "unit"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_mac_address = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "String",
+            colour: "X" == SOFTWARE_KEY ? CategoryColors.System : CategoryColors.Wifi,
+            helpUrl: Blockly.Msg.CocoRobo_MAC_ADDRESS_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_ujson_loads = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: null,
+            colour: CategoryColors.Text,
+            helpUrl: Blockly.Msg.CocoRobo_UJSON_LOADS_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_UJSON_LOADS_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_UJSON_LOADS_MESSAGE0,
+            args0: [{
+                check: "String",
+                type: "input_value",
+                name: "data"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_code_annotation = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            nextStatement: null,
+            previousStatement: null,
+            // output: null,
+            colour: CategoryColors.Text,
+            helpUrl: Blockly.Msg.CocoRobo_code_annotation_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_code_annotation_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_code_annotation_MESSAGE0,
+            args0: [{
+                check: "String",
+                type: "input_value",
+                name: "data"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_ujson_dumps = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "String",
+            colour: CategoryColors.Text,
+            helpUrl: Blockly.Msg.CocoRobo_UJSON_DUMPS_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "data"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_base64_to_data = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: null,
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_BASE64_TO_DATA_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "data"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_data_to_base64 = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: null,
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_DATA_TO_BASE64_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "data"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_hex_to_bin_str = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: null,
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0,
+            args0: [{
+                check: "String",
+                type: "input_value",
+                name: "convert_chr"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_str_to_hex = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: null,
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_STR_TO_HEX_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_STR_TO_HEX_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_STR_TO_HEX_MESSAGE0,
+            args0: [{
+                check: "String",
+                type: "input_value",
+                name: "convert_chr"
+            }]
+        })
+    }
+};
+Blockly.Blocks.CocoRobo_chr_to_int = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            output: "String",
+            colour: CategoryColors.Math,
+            helpUrl: Blockly.Msg.CocoRobo_CHR_TO_INT_HELPURL,
+            tooltip: Blockly.Msg.CocoRobo_CHR_TO_INT_TOOLTIP,
+            message0: Blockly.Msg.CocoRobo_CHR_TO_INT_MESSAGE0,
+            args0: [{
+                check: "String",
+                type: "input_value",
+                name: "convert_chr"
+            }]
+        })
+    }
+};
+Blockly.Blocks['math_single'] = {
+    /**
+     * Block for advanced math operators with single operand.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": "%1 %2",
+            "args0": [
+                {
+                    "type": "field_dropdown",
+                    "name": "OP",
+                    "options": [
+                        [Blockly.Msg.MATH_SINGLE_OP_ROOT, 'ROOT'],
+                        [Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE, 'ABS'],
+                        // ['degrees', 'DEGRAD_DEG'],
+                        // ['radians', 'DEGRAD_RAD'],
+                        ['-', 'NEG'],
+                        ['ln', 'LN'],
+                        ['log10', 'LOG10'],
+                        ['e^', 'EXP'],
+                        ['10^', 'POW10']
+                    ]
+                },
+                {
+                    "type": "input_value",
+                    "name": "NUM",
+                    "check": "Number"
+                }
+            ],
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "helpUrl": Blockly.Msg.MATH_SINGLE_HELPURL
+        });
+        // Assign 'this' to a variable for use in the tooltip closure below.
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var mode = thisBlock.getFieldValue('OP');
+            var TOOLTIPS = {
+                'ROOT': Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT,
+                'ABS': Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS,
+                'NEG': Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG,
+                'LN': Blockly.Msg.MATH_SINGLE_TOOLTIP_LN,
+                'LOG10': Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10,
+                'EXP': Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP,
+                'POW10': Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10
+            };
+            return TOOLTIPS[mode];
+        });
+    }
+};
+
+Blockly.Blocks['math_number'] = {
+    /**
+     * Block for numeric value.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.setHelpUrl(Blockly.Msg.MATH_NUMBER_HELPURL);
+        this.setColour(CategoryColors.Math);
+        this.appendDummyInput()
+            .appendField(new Blockly.FieldNumber('0'), 'NUM');
+        this.setOutput(true, 'Number');
+        // Assign 'this' to a variable for use in the tooltip closure below.
+        var thisBlock = this;
+        // Number block is trivial.  Use tooltip of parent block if it exists.
+        this.setTooltip(function () {
+            var parent = thisBlock.getParent();
+            return (parent && parent.getInputsInline() && parent.tooltip) ||
+                Blockly.Msg.MATH_NUMBER_TOOLTIP;
+        });
+    }
+};
+
+Blockly.Blocks['math_arithmetic'] = {
+    /**
+     * Block for basic arithmetic operator.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": "%1 %2 %3",
+            "args0": [
+                {
+                    "type": "input_value",
+                    "name": "A",
+                    "check": ["Number", "String"]
+                },
+                {
+                    "type": "field_dropdown",
+                    "name": "OP",
+                    "options":
+                        [[Blockly.Msg.MATH_ADDITION_SYMBOL, 'ADD'],
+                        [Blockly.Msg.MATH_SUBTRACTION_SYMBOL, 'MINUS'],
+                        [Blockly.Msg.MATH_MULTIPLICATION_SYMBOL, 'MULTIPLY'],
+                        [Blockly.Msg.MATH_DIVISION_SYMBOL, 'DIVIDE'],
+                        [Blockly.Msg.MATH_POWER_SYMBOL, 'POWER'],
+                            // ['%', 'MODULO']
+                        ]
+                },
+                {
+                    "type": "input_value",
+                    "name": "B",
+                    "check": ["Number", "String"]
+                }
+            ],
+            "inputsInline": true,
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "helpUrl": Blockly.Msg.MATH_ARITHMETIC_HELPURL
+        });
+        // Assign 'this' to a variable for use in the tooltip closure below.
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var mode = thisBlock.getFieldValue('OP');
+            var TOOLTIPS = {
+                'ADD': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,
+                'MINUS': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,
+                'MULTIPLY': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,
+                'DIVIDE': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,
+                'POWER': Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER,
+                'MODULO': 'Computes the remainder of division.'
+            };
+            return TOOLTIPS[mode];
+        });
+    }
+};
+
+Blockly.Blocks['math_trig'] = {
+    /**
+     * Block for trigonometry operators.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": "%1 %2",
+            "args0": [
+                {
+                    "type": "field_dropdown",
+                    "name": "OP",
+                    "options": [
+                        [Blockly.Msg.MATH_TRIG_SIN, 'SIN'],
+                        [Blockly.Msg.MATH_TRIG_COS, 'COS'],
+                        [Blockly.Msg.MATH_TRIG_TAN, 'TAN'],
+                        [Blockly.Msg.MATH_TRIG_ASIN, 'ASIN'],
+                        [Blockly.Msg.MATH_TRIG_ACOS, 'ACOS'],
+                        [Blockly.Msg.MATH_TRIG_ATAN, 'ATAN']
+                    ]
+                },
+                {
+                    "type": "input_value",
+                    "name": "NUM",
+                    "check": "Number"
+                }
+            ],
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "helpUrl": Blockly.Msg.MATH_TRIG_HELPURL
+        });
+        // Assign 'this' to a variable for use in the tooltip closure below.
+        var thisBlock = this;
+        this.setTooltip(function () {
+            var mode = thisBlock.getFieldValue('OP');
+            var TOOLTIPS = {
+                'SIN': Blockly.Msg.MATH_TRIG_TOOLTIP_SIN,
+                'COS': Blockly.Msg.MATH_TRIG_TOOLTIP_COS,
+                'TAN': Blockly.Msg.MATH_TRIG_TOOLTIP_TAN,
+                'ASIN': Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN,
+                'ACOS': Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS,
+                'ATAN': Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN
+            };
+            return TOOLTIPS[mode];
+        });
+    }
+};
+
+Blockly.Blocks['math_constant'] = {
+    /**
+     * Block for constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": "%1",
+            "args0": [
+                {
+                    "type": "field_dropdown",
+                    "name": "CONSTANT",
+                    "options": [
+                        ['\u03c0', 'PI'],
+                        ['e', 'E'],
+                        ['\u03c6', 'GOLDEN_RATIO'],
+                        ['sqrt(2)', 'SQRT2'],
+                        ['sqrt(\u00bd)', 'SQRT1_2'],
+                        ['\u221e', 'INFINITY']
+                    ]
+                }
+            ],
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "tooltip": Blockly.Msg.MATH_CONSTANT_TOOLTIP,
+            "helpUrl": Blockly.Msg.MATH_CONSTANT_HELPURL
+        });
+    }
+};
+
+Blockly.Blocks['math_number_property'] = {
+    /**
+     * Block for checking if a number is even, odd, prime, whole, positive,
+     * negative or if it is divisible by certain number.
+     * @this Blockly.Block
+     */
+    init: function () {
+        var PROPERTIES =
+            [[Blockly.Msg.MATH_IS_EVEN, 'EVEN'],
+            [Blockly.Msg.MATH_IS_ODD, 'ODD'],
+            [Blockly.Msg.MATH_IS_PRIME, 'PRIME'],
+            [Blockly.Msg.MATH_IS_WHOLE, 'WHOLE'],
+            [Blockly.Msg.MATH_IS_POSITIVE, 'POSITIVE'],
+            [Blockly.Msg.MATH_IS_NEGATIVE, 'NEGATIVE'],
+            [Blockly.Msg.MATH_IS_DIVISIBLE_BY, 'DIVISIBLE_BY']];
+        this.setColour(CategoryColors.Math);
+        this.appendValueInput('NUMBER_TO_CHECK')
+            .setCheck('Number');
+        var dropdown = new Blockly.FieldDropdown(PROPERTIES, function (option) {
+            var divisorInput = (option == 'DIVISIBLE_BY');
+            this.sourceBlock_.updateShape_(divisorInput);
+        });
+        this.appendDummyInput()
+            .appendField(dropdown, 'PROPERTY');
+        this.setInputsInline(true);
+        this.setOutput(true, 'Boolean');
+        this.setTooltip(Blockly.Msg.MATH_IS_TOOLTIP);
+    },
+    /**
+     * Create XML to represent whether the 'divisorInput' should be present.
+     * @return {Element} XML storage element.
+     * @this Blockly.Block
+     */
+    mutationToDom: function () {
+        var container = document.createElement('mutation');
+        var divisorInput = (this.getFieldValue('PROPERTY') == 'DIVISIBLE_BY');
+        container.setAttribute('divisor_input', divisorInput);
+        return container;
+    },
+    /**
+     * Parse XML to restore the 'divisorInput'.
+     * @param {!Element} xmlElement XML storage element.
+     * @this Blockly.Block
+     */
+    domToMutation: function (xmlElement) {
+        var divisorInput = (xmlElement.getAttribute('divisor_input') == 'true');
+        this.updateShape_(divisorInput);
+    },
+    /**
+     * Modify this block to have (or not have) an input for 'is divisible by'.
+     * @param {boolean} divisorInput True if this block has a divisor input.
+     * @private
+     * @this Blockly.Block
+     */
+    updateShape_: function (divisorInput) {
+        // Add or remove a Value Input.
+        var inputExists = this.getInput('DIVISOR');
+        if (divisorInput) {
+            if (!inputExists) {
+                this.appendValueInput('DIVISOR')
+                    .setCheck('Number');
+            }
+        } else if (inputExists) {
+            this.removeInput('DIVISOR');
+        }
+    }
+};
+
+Blockly.Blocks['math_round'] = {
+    /**
+     * Block for rounding functions.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": "%1 %2",
+            "args0": [
+                {
+                    "type": "field_dropdown",
+                    "name": "OP",
+                    "options": [
+                        [Blockly.Msg.MATH_ROUND_OPERATOR_ROUND, 'ROUND'],
+                        [Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP, 'ROUNDUP'],
+                        [Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN, 'ROUNDDOWN']
+                    ]
+                },
+                {
+                    "type": "input_value",
+                    "name": "NUM",
+                    "check": "Number"
+                }
+            ],
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "tooltip": Blockly.Msg.MATH_ROUND_TOOLTIP,
+            "helpUrl": Blockly.Msg.MATH_ROUND_HELPURL
+        });
+    }
+};
+
+Blockly.Blocks['math_on_list'] = {
+    /**
+     * Block for evaluating a list of numbers to return sum, average, min, max,
+     * etc.  Some functions also work on text (min, max, mode, median).
+     * @this Blockly.Block
+     */
+    init: function () {
+        var OPERATORS =
+            [[Blockly.Msg.MATH_ONLIST_OPERATOR_SUM, 'SUM'],
+            [Blockly.Msg.MATH_ONLIST_OPERATOR_MIN, 'MIN'],
+            [Blockly.Msg.MATH_ONLIST_OPERATOR_MAX, 'MAX'],
+            [Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE, 'AVERAGE'],
+            [Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN, 'MEDIAN'],
+            [Blockly.Msg.MATH_ONLIST_OPERATOR_MODE, 'MODE'],
+            [Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV, 'STD_DEV'],
+            [Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM, 'RANDOM']];
+        // Assign 'this' to a variable for use in the closures below.
+        var thisBlock = this;
+        this.setHelpUrl(Blockly.Msg.MATH_ONLIST_HELPURL);
+        this.setColour(CategoryColors.Math);
+        this.setOutput(true, 'Number');
+        var dropdown = new Blockly.FieldDropdown(OPERATORS, function (newOp) {
+            thisBlock.updateType_(newOp);
+        });
+        this.appendValueInput('LIST')
+            .setCheck('Array')
+            .appendField(dropdown, 'OP');
+        this.setTooltip(function () {
+            var mode = thisBlock.getFieldValue('OP');
+            var TOOLTIPS = {
+                'SUM': Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM,
+                'MIN': Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN,
+                'MAX': Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX,
+                'AVERAGE': Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE,
+                'MEDIAN': Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN,
+                'MODE': Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE,
+                'STD_DEV': Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV,
+                'RANDOM': Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM
+            };
+            return TOOLTIPS[mode];
+        });
+    },
+    /**
+     * Modify this block to have the correct output type.
+     * @param {string} newOp Either 'MODE' or some op than returns a number.
+     * @private
+     * @this Blockly.Block
+     */
+    updateType_: function (newOp) {
+        if (newOp == 'MODE') {
+            this.outputConnection.setCheck('Array');
+        } else {
+            this.outputConnection.setCheck('Number');
+        }
+    },
+    /**
+     * Create XML to represent the output type.
+     * @return {Element} XML storage element.
+     * @this Blockly.Block
+     */
+    mutationToDom: function () {
+        var container = document.createElement('mutation');
+        container.setAttribute('op', this.getFieldValue('OP'));
+        return container;
+    },
+    /**
+     * Parse XML to restore the output type.
+     * @param {!Element} xmlElement XML storage element.
+     * @this Blockly.Block
+     */
+    domToMutation: function (xmlElement) {
+        this.updateType_(xmlElement.getAttribute('op'));
+    }
+};
+Blockly.Blocks['math_modulo'] = {
+    /**
+     * Block for remainder of a division.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": Blockly.Msg.MATH_MODULO_TITLE,
+            "args0": [
+                {
+                    "type": "input_value",
+                    "name": "DIVIDEND",
+                    "check": "Number"
+                },
+                {
+                    "type": "input_value",
+                    "name": "DIVISOR",
+                    "check": "Number"
+                }
+            ],
+            "inputsInline": true,
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "tooltip": Blockly.Msg.MATH_MODULO_TOOLTIP,
+            "helpUrl": Blockly.Msg.MATH_MODULO_HELPURL
+        });
+    }
+};
+Blockly.Blocks['math_constrain'] = {
+    /**
+     * Block for constraining a number between two limits.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": Blockly.Msg.MATH_CONSTRAIN_TITLE,
+            "args0": [
+                {
+                    "type": "input_value",
+                    "name": "VALUE",
+                    "check": "Number"
+                },
+                {
+                    "type": "input_value",
+                    "name": "LOW",
+                    "check": "Number"
+                },
+                {
+                    "type": "input_value",
+                    "name": "HIGH",
+                    "check": "Number"
+                }
+            ],
+            "inputsInline": true,
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "tooltip": Blockly.Msg.MATH_CONSTRAIN_TOOLTIP,
+            "helpUrl": Blockly.Msg.MATH_CONSTRAIN_HELPURL
+        });
+    }
+};
+
+Blockly.Blocks['labplus_mapping'] = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !0,
+            colour: CategoryColors.Math,
+            args0: [{
+                name: "inputNum",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "bMin",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "bMax",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "cMin",
+                type: "input_value",
+                check: "Number"
+            }, {
+                name: "cMax",
+                type: "input_value",
+                check: "Number"
+            }],
+            output: "Number",
+            message0: Blockly.Msg.labplus_mapping_MESSAGE0,
+            tooltip: Blockly.Msg.labplus_mapping_TOOLTIP,
+            helpUrl: Blockly.Msg.labplus_mapping_HELPURL
+        })
+    }
+};
+
+Blockly.Blocks['math_random_int'] = {
+    /**
+     * Block for random integer between [X] and [Y].
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.jsonInit({
+            "message0": Blockly.Msg.MATH_RANDOM_INT_TITLE,
+            "args0": [
+                {
+                    "type": "input_value",
+                    "name": "FROM",
+                    "check": "Number"
+                },
+                {
+                    "type": "input_value",
+                    "name": "TO",
+                    "check": "Number"
+                }
+            ],
+            "inputsInline": true,
+            "output": "Number",
+            "colour": CategoryColors.Math,
+            "tooltip": Blockly.Msg.MATH_RANDOM_INT_TOOLTIP,
+            "helpUrl": Blockly.Msg.MATH_RANDOM_INT_HELPURL
+        });
+    }
+};
+
+Blockly.Blocks.math_convert = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.MATH_CONVERT_MESSAGE0,
+            args0: [{
+                type: "field_dropdown",
+                options: [["int", "int"], ["float", "float"]],
+                name: "TYPE0"
+            }, {
+                type: "input_value",
+                name: "INPUT0",
+                check: ["Number", "String"]
+            }],
+            output: "Number",
+            colour: CategoryColors.Math,
+            tooltip: Blockly.Msg.MATH_CONVERT_TOOLTIP,
+            helpUrl: Blockly.Msg.MATH_CONVERT_HELPURL
+        })
+    }
+};
+export default Blockly

+ 336 - 0
src/blockly/blocks/text.js

@@ -0,0 +1,336 @@
+import Blockly from 'blockly';
+import { pythonGenerator } from "blockly/python";
+import CategoryColors from './define_color'
+
+Blockly.Python = pythonGenerator
+
+// variables
+Blockly.texts = {
+    HUE: "#33cc99"
+}
+
+Blockly.Blocks['text'] = {
+    /**
+     * Block for text value.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);
+        this.setColour(Blockly.texts.HUE);
+        this.appendDummyInput()
+            .appendField(this.newQuote_(true))
+            .appendField(new Blockly.FieldTextInput(''), 'TEXT')
+            .appendField(this.newQuote_(false));
+        this.setOutput(true, 'String');
+        // Assign 'this' to a variable for use in the tooltip closure below.
+        var thisBlock = this;
+        // Text block is trivial.  Use tooltip of parent block if it exists.
+        this.setTooltip(function () {
+            var parent = thisBlock.getParent();
+            return (parent && parent.getInputsInline() && parent.tooltip) ||
+                Blockly.Msg.TEXT_TEXT_TOOLTIP;
+        });
+    },
+    /**
+     * Create an image of an open or closed quote.
+     * @param {boolean} open True if open quote, false if closed.
+     * @return {!Blockly.FieldImage} The field image of the quote.
+     * @this Blockly.Block
+     * @private
+     */
+    newQuote_: function (open) {
+        if (open == this.RTL) {
+            var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==';
+        } else {
+            var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC';
+        }
+        return new Blockly.FieldImage(file, 12, 12, '"');
+    }
+};
+
+Blockly.Blocks['text_join'] = {
+    /**
+     * Block for creating a string made up of any number of elements of any type.
+     * @this Blockly.Block
+     */
+    init: function () {
+        this.setHelpUrl(Blockly.Msg.TEXT_JOIN_HELPURL);
+        this.setColour(Blockly.texts.HUE);
+        this.itemCount_ = 2;
+        this.updateShape_();
+        this.setOutput(true, 'String');
+        this.setMutator(new Blockly.icons.MutatorIcon(['text_create_join_item'], this));
+        this.setTooltip(Blockly.Msg.TEXT_JOIN_TOOLTIP);
+    },
+    /**
+     * Create XML to represent number of text inputs.
+     * @return {!Element} XML storage element.
+     * @this Blockly.Block
+     */
+    mutationToDom: function () {
+        var container = document.createElement('mutation');
+        container.setAttribute('items', this.itemCount_);
+        return container;
+    },
+    /**
+     * Parse XML to restore the text inputs.
+     * @param {!Element} xmlElement XML storage element.
+     * @this Blockly.Block
+     */
+    domToMutation: function (xmlElement) {
+        this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
+        this.updateShape_();
+    },
+    /**
+     * Populate the mutator's dialog with this block's components.
+     * @param {!Blockly.Workspace} workspace Mutator's workspace.
+     * @return {!Blockly.Block} Root block in mutator.
+     * @this Blockly.Block
+     */
+    decompose: function (workspace) {
+        var containerBlock = workspace.newBlock('text_create_join_container');
+        containerBlock.initSvg();
+        var connection = containerBlock.getInput('STACK').connection;
+        for (var i = 0; i < this.itemCount_; i++) {
+            var itemBlock = workspace.newBlock('text_create_join_item');
+            itemBlock.initSvg();
+            connection.connect(itemBlock.previousConnection);
+            connection = itemBlock.nextConnection;
+        }
+        return containerBlock;
+    },
+    /**
+     * Reconfigure this block based on the mutator dialog's components.
+     * @param {!Blockly.Block} containerBlock Root block in mutator.
+     * @this Blockly.Block
+     */
+    compose: function (containerBlock) {
+        var itemBlock = containerBlock.getInputTargetBlock('STACK');
+        // Count number of inputs.
+        var connections = [];
+        while (itemBlock) {
+            connections.push(itemBlock.valueConnection_);
+            itemBlock = itemBlock.nextConnection &&
+                itemBlock.nextConnection.targetBlock();
+        }
+        // Disconnect any children that don't belong.
+        for (var i = 0; i < this.itemCount_; i++) {
+            var connection = this.getInput('ADD' + i).connection.targetConnection;
+            if (connection && connections.indexOf(connection) == -1) {
+                connection.disconnect();
+            }
+        }
+        this.itemCount_ = connections.length;
+        this.updateShape_();
+        // Reconnect any child blocks.
+        for (var i = 0; i < this.itemCount_; i++) {
+            Blockly.Mutator.reconnect(connections[i], this, 'ADD' + i);
+        }
+    },
+    /**
+     * Store pointers to any connected child blocks.
+     * @param {!Blockly.Block} containerBlock Root block in mutator.
+     * @this Blockly.Block
+     */
+    saveConnections: function (containerBlock) {
+        var itemBlock = containerBlock.getInputTargetBlock('STACK');
+        var i = 0;
+        while (itemBlock) {
+            var input = this.getInput('ADD' + i);
+            itemBlock.valueConnection_ = input && input.connection.targetConnection;
+            i++;
+            itemBlock = itemBlock.nextConnection &&
+                itemBlock.nextConnection.targetBlock();
+        }
+    },
+    /**
+     * Modify this block to have the correct number of inputs.
+     * @private
+     * @this Blockly.Block
+     */
+    updateShape_: function () {
+        if (this.itemCount_ && this.getInput('EMPTY')) {
+            this.removeInput('EMPTY');
+        } else if (!this.itemCount_ && !this.getInput('EMPTY')) {
+            this.appendDummyInput('EMPTY')
+                .appendField(this.newQuote_(true))
+                .appendField(this.newQuote_(false));
+        }
+        // Add new inputs.
+        for (var i = 0; i < this.itemCount_; i++) {
+            if (!this.getInput('ADD' + i)) {
+                var input = this.appendValueInput('ADD' + i);
+                if (i == 0) {
+                    input.appendField(Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH);
+                }
+            }
+        }
+        // Remove deleted inputs.
+        while (this.getInput('ADD' + i)) {
+            this.removeInput('ADD' + i);
+            i++;
+        }
+    },
+    newQuote_: Blockly.Blocks['text'].newQuote_
+};
+Blockly.Blocks['text_split_string_by_delimiter'] = {
+    init: function () {
+        this.appendValueInput("string_input")
+            .setCheck(null)
+            .appendField(Blockly.Msg.text_additional_delimiter_string);
+        this.appendDummyInput()
+            .appendField(Blockly.Msg.text_additional_delimiter_deli)
+            .appendField(new Blockly.FieldTextInput(","), "delimiter")
+            .appendField(Blockly.Msg.text_additional_delimiter_end);
+        this.setInputsInline(true);
+        this.setOutput(true, null);
+        this.setColour(Blockly.texts.HUE);
+        this.setTooltip(Blockly.Msg.Text_Split_String_By_Delimiter_TOOLTIP);
+        this.setHelpUrl("");
+    }
+};
+Blockly.Blocks.text_format = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !1,
+            output: "String",
+            colour: Blockly.texts.HUE,
+            helpUrl: Blockly.Msg.TEXT_FORMAT_HELPURL,
+            tooltip: Blockly.Msg.TEXT_FORMAT_TOOLTIP,
+            message0: Blockly.Msg.TEXT_FORMAT_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "FORMAT",
+                check: "String"
+            }, {
+                type: "input_value",
+                name: "CONTENT"
+            }]
+        })
+    }
+};
+Blockly.Blocks.text_format2 = {
+    init: function () {
+        this.jsonInit({
+            inputsInline: !1,
+            output: "String",
+            colour: Blockly.texts.HUE,
+            helpUrl: Blockly.Msg.TEXT_FORMAT2_HELPURL,
+            tooltip: Blockly.Msg.TEXT_FORMAT2_TOOLTIP,
+            message0: Blockly.Msg.TEXT_FORMAT2_MESSAGE0,
+            args0: [{
+                type: "input_value",
+                name: "FORMAT",
+                check: "String"
+            }, {
+                type: "input_value",
+                name: "CONTENT"
+            }]
+        })
+    }
+};
+Blockly.Blocks.tuple_create_with_items_insert = {
+    init: function () {
+        this.setHelpUrl(Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL);
+        this.setColour(Blockly.texts.HUE);
+        this.itemCount_ = 3;
+        this.updateShape_();
+        this.setOutput(!0);
+        this.setMutator(new Blockly.icons.MutatorIcon(["tuple_create_with_item"],this));
+        this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP)
+    },
+    mutationToDom: function () {
+        var a = document.createElement("mutation");
+        a.setAttribute("items", this.itemCount_);
+        return a
+    },
+    domToMutation: function (a) {
+        this.itemCount_ = parseInt(a.getAttribute("items"), 10);
+        this.updateShape_()
+    },
+    decompose: function (a) {
+        var b = a.newBlock("tuple_create_with_container");
+        b.initSvg();
+        for (var c = b.getInput("STACK").connection, e = 0; e < this.itemCount_; e++) {
+            var d = a.newBlock("tuple_create_with_item");
+            d.initSvg();
+            c.connect(d.previousConnection);
+            c = d.nextConnection
+        }
+        return b
+    },
+    compose: function (a) {
+        var b = a.getInputTargetBlock("STACK");
+        for (a = []; b;)
+            a.push(b.valueConnection_),
+                b = b.nextConnection && b.nextConnection.targetBlock();
+        for (b = 0; b < this.itemCount_; b++) {
+            var c = this.getInput("ADD" + b).connection.targetConnection;
+            c && -1 == a.indexOf(c) && c.disconnect()
+        }
+        this.itemCount_ = a.length;
+        this.updateShape_();
+        for (b = 0; b < this.itemCount_; b++)
+            Blockly.Mutator.reconnect(a[b], this, "ADD" + b)
+    },
+    saveConnections: function (a) {
+        a = a.getInputTargetBlock("STACK");
+        for (var b = 0; a;) {
+            var c = this.getInput("ADD" + b);
+            a.valueConnection_ = c && c.connection.targetConnection;
+            b++;
+            a = a.nextConnection && a.nextConnection.targetBlock()
+        }
+    },
+    updateShape_: function () {
+        this.itemCount_ && this.getInput("EMPTY") ? this.removeInput("EMPTY") : this.itemCount_ || this.getInput("EMPTY") || this.appendDummyInput("EMPTY").appendField(Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE);
+        for (var a = 0; a < this.itemCount_; a++)
+            if (!this.getInput("ADD" + a)) {
+                var b = this.appendValueInput("ADD" + a);
+                0 == a && b.appendField(Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH)
+            }
+        for (; this.getInput("ADD" + a);)
+            this.removeInput("ADD" + a),
+                a++
+    }
+};
+Blockly.Blocks.tuple_create_with_item = {
+    init: function () {
+        this.setColour(Blockly.texts.HUE);
+        this.appendDummyInput().appendField(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TITLE);
+        this.setPreviousStatement(!0);
+        this.setNextStatement(!0);
+        this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP);
+        this.contextMenu = !1
+    }
+};
+Blockly.Blocks.tuple_create_with_container = {
+    init: function () {
+        this.setColour(Blockly.texts.HUE);
+        this.appendDummyInput().appendField(Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD);
+        this.appendStatementInput("STACK");
+        this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP);
+        this.contextMenu = !1
+    }
+};
+// Blockly.Blocks.tuple_create_with = {
+//     init: function () {
+//         this.jsonInit({
+//             colour: Blockly.texts.HUE,
+//             args0: [{
+//                 type: "input_value",
+//                 name: "tuple_name"
+//             }, {
+//                 type: "input_value",
+//                 name: "tuple_items"
+//             }],
+//             inputsInline: !0,
+//             nextStatement: null,
+//             previousStatement: null,
+//             helpUrl: Blockly.Msg.tuple_create_with_HELPURL,
+//             tooltip: Blockly.Msg.tuple_create_with_TOOLTIP,
+//             message0: Blockly.Msg.tuple_create_with_MESSAGE0
+//         })
+//     }
+// };
+export default Blockly;

+ 85 - 0
src/blockly/blocks/variables.js

@@ -0,0 +1,85 @@
+import Blockly from 'blockly';
+import { pythonGenerator } from "blockly/python";
+
+Blockly.Python = pythonGenerator
+
+// variables
+Blockly.variables = {
+    HUE: "#ffab2f"
+}
+Blockly.Blocks.variables_get = {
+    init: function () {
+        this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL);
+        this.setColour(Blockly.variables.HUE);
+        this.appendDummyInput().
+            appendField(new Blockly.FieldVariable(Blockly.Msg.VARIABLES_DEFAULT_NAME), "VAR");
+        this.setOutput(!0);
+        this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP);
+        this.contextMenuMsg_ = Blockly.Msg.VARIABLES_GET_CREATE_SET
+    },
+    contextMenuType_: "variables_set",
+    customContextMenu: function (a) {
+        var b = {
+            enabled: !0
+        }
+            , c = this.getFieldValue("VAR");
+        b.text = this.contextMenuMsg_.replace("%1", c);
+        c = goog.dom.createDom("field", null, c);
+        c.setAttribute("name", "VAR");
+        c = goog.dom.createDom("block", null, c);
+        c.setAttribute("type", this.contextMenuType_);
+        b.callback = Blockly.ContextMenu.callbackFactory(this, c);
+        a.push(b)
+    }
+};
+Blockly.Blocks.variables_set = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.VARIABLES_SET,
+            args0: [{
+                type: "field_variable",
+                name: "VAR",
+                variable: Blockly.Msg.VARIABLES_DEFAULT_NAME
+            }, {
+                type: "input_value",
+                name: "VALUE",
+            }],
+            previousStatement: null,
+            nextStatement: null,
+            colour: Blockly.variables.HUE,
+            tooltip: Blockly.Msg.VARIABLES_SET_TOOLTIP,
+            helpUrl: Blockly.Msg.VARIABLES_SET_HELPURL
+        });
+    },
+    contextMenuType_: "variables_get",
+    customContextMenu: Blockly.Blocks.variables_get.customContextMenu
+};
+
+
+Blockly.Blocks.math_change = {
+    init: function () {
+        this.jsonInit({
+            message0: Blockly.Msg.MATH_CHANGE_TITLE,
+            args0: [{
+                type: "field_variable",
+                name: "VAR",
+                variable: Blockly.Msg.MATH_CHANGE_TITLE_ITEM
+            }, {
+                type: "input_value",
+                name: "DELTA",
+                check: "Number"
+            }],
+            previousStatement: null,
+            nextStatement: null,
+            colour: Blockly.variables.HUE,
+            helpUrl: Blockly.Msg.MATH_CHANGE_HELPURL
+        });
+        var a = this;
+        this.setTooltip(function () {
+            return Blockly.Msg.MATH_CHANGE_TOOLTIP.replace("%1", a.getField("VAR").variable.name)
+        })
+    }
+};
+
+
+export default Blockly;

+ 9647 - 0
src/blockly/msg/en.js

@@ -0,0 +1,9647 @@
+
+'use strict';
+
+var Blockly = Blockly || { Msg: Object.create(null) };
+
+Blockly.Msg["ADD_COMMENT"] = "Add Comment";
+Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'";
+Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:";
+Blockly.Msg["CLEAN_UP"] = "Clean up Blocks";
+Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings.";
+Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks";
+Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block";
+Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1";
+Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2";
+Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp";
+Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio";
+Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend";
+Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0).";
+Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color";
+Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette.";
+Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com";
+Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour";
+Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random.";
+Blockly.Msg["COLOUR_RGB_BLUE"] = "blue";
+Blockly.Msg["COLOUR_RGB_GREEN"] = "green";
+Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html";
+Blockly.Msg["COLOUR_RGB_RED"] = "red";
+Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with";
+Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop.";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration.";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop.";
+Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each";
+Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2";
+Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements.";
+Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with";
+Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4";
+Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";
+Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block.";
+Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block.";
+Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse";
+Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block.";
+Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else";
+Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if";
+Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements.";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";
+Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop";
+Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do";
+Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times";
+Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times.";
+Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat";
+Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until";
+Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while";
+Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements.";
+Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements.";
+Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?";
+Blockly.Msg["DELETE_BLOCK"] = "Delete Block";
+Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable";
+Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?";
+Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks";
+Blockly.Msg["DIALOG_CANCEL"] = "Cancel";
+Blockly.Msg["DIALOG_OK"] = "OK";
+Blockly.Msg["DISABLE_BLOCK"] = "Disable Block";
+Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate";
+Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment";
+Blockly.Msg["ENABLE_BLOCK"] = "Enable Block";
+Blockly.Msg["EXPAND_ALL"] = "Expand Blocks";
+Blockly.Msg["EXPAND_BLOCK"] = "Expand Block";
+Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs";
+Blockly.Msg["HELP"] = "Help";
+Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs";
+Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list";
+Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records";
+Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list";
+Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block.";
+Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with";
+Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list.";
+Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items.";
+Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first";
+Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end";
+Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#";
+Blockly.Msg["LISTS_GET_INDEX_GET"] = "get";
+Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove";
+Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last";
+Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random";
+Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove";
+Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list.";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list.";
+Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end";
+Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #";
+Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last";
+Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";
+Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first";
+Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end";
+Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #";
+Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "";
+Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list.";
+Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item.";
+Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item.";
+Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item";
+Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";
+Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item";
+Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.";
+Blockly.Msg["LISTS_INLIST"] = "in list";
+Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty";
+Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty";
+Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty.";
+Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of";
+Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1";
+Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list.";
+Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times";
+Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times.";
+Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";
+Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1";
+Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list.";
+Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set";
+Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as";
+Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at";
+Blockly.Msg["LISTS_SET_INDEX_SET"] = "set";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list.";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list.";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list.";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list.";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list.";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list.";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list.";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list.";
+Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending";
+Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending";
+Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3";
+Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list.";
+Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case";
+Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric";
+Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic";
+Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text";
+Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list";
+Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter.";
+Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter.";
+Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter";
+Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false";
+Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values";
+Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false.";
+Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true";
+Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other.";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input.";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input.";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input.";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input.";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other.";
+Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1";
+Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true.";
+Blockly.Msg["LOGIC_NULL"] = "null";
+Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type";
+Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null.";
+Blockly.Msg["LOGIC_OPERATION_AND"] = "and";
+Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations";
+Blockly.Msg["LOGIC_OPERATION_OR"] = "or";
+Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true.";
+Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true.";
+Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test";
+Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:";
+Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false";
+Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true";
+Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";
+Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+";
+Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers.";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers.";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers.";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers.";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number.";
+Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2";
+Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2";
+Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180.";
+Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
+Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2";
+Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'.";
+Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant";
+Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
+Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)";
+Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3";
+Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive).";
+Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷";
+Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by";
+Blockly.Msg["MATH_IS_EVEN"] = "is even";
+Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative";
+Blockly.Msg["MATH_IS_ODD"] = "is odd";
+Blockly.Msg["MATH_IS_POSITIVE"] = "is positive";
+Blockly.Msg["MATH_IS_PRIME"] = "is prime";
+Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";
+Blockly.Msg["MATH_IS_WHOLE"] = "is whole";
+Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation";
+Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2";
+Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers.";
+Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×";
+Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number";
+Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number.";
+Blockly.Msg["MATH_ONLIST_HELPURL"] = "";
+Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list";
+Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list";
+Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list";
+Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list.";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list.";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list.";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list.";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list.";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list.";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list.";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list.";
+Blockly.Msg["MATH_POWER_SYMBOL"] = "^";
+Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction";
+Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";
+Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2";
+Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive.";
+Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up";
+Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down.";
+Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root";
+Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute";
+Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number.";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number.";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number.";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number.";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number.";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number.";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number.";
+Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-";
+Blockly.Msg["MATH_TRIG_ACOS"] = "acos";
+Blockly.Msg["MATH_TRIG_ASIN"] = "asin";
+Blockly.Msg["MATH_TRIG_ATAN"] = "atan";
+Blockly.Msg["MATH_TRIG_COS"] = "cos";
+Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions";
+Blockly.Msg["MATH_TRIG_SIN"] = "sin";
+Blockly.Msg["MATH_TRIG_TAN"] = "tan";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number.";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number.";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number.";
+Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian).";
+Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian).";
+Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian).";
+Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable...";
+Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable...";
+Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable...";
+Blockly.Msg["NEW_VARIABLE"] = "Create variable...";
+Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:";
+Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:";
+Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "";
+Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements";
+Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:";
+Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
+Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'.";
+Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
+Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output.";
+Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:";
+Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'";
+Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function...";
+Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "";
+Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
+Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something";
+Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to";
+Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output.";
+Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine";
+Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return";
+Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output.";
+Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters.";
+Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition";
+Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "https://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value.";
+Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition.";
+Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:";
+Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function.";
+Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs";
+Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function.";
+Blockly.Msg["REDO"] = "Redo";
+Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment";
+Blockly.Msg["RENAME_VARIABLE"] = "Rename variable...";
+Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:";
+Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2";
+Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'.";
+Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case";
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case";
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE";
+Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case.";
+Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter";
+Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end";
+Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #";
+Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text";
+Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter";
+Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter";
+Blockly.Msg["TEXT_CHARAT_TAIL"] = "";
+Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2";
+Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position.";
+Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";
+Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2";
+Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text.";
+Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text.";
+Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join";
+Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block.";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter";
+Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";
+Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #";
+Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "";
+Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text.";
+Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text";
+Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text";
+Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text";
+Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3";
+Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";
+Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";
+Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty";
+Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty.";
+Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation";
+Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with";
+Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items.";
+Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1";
+Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text.";
+Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text";
+Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1";
+Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value.";
+Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";
+Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number.";
+Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text.";
+Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message";
+Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message";
+Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";
+Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3";
+Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text.";
+Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";
+Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1";
+Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text.";
+Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)";
+Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text.";
+Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";
+Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of";
+Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of";
+Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of";
+Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends.";
+Blockly.Msg["TODAY"] = "Today";
+Blockly.Msg["UNDO"] = "Undo";
+Blockly.Msg["UNNAMED_KEY"] = "unnamed";
+Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item";
+Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'";
+Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get";
+Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable.";
+Blockly.Msg["VARIABLES_SET"] = "set %1 to %2";
+Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'";
+Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set";
+Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input.";
+Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists.";
+Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'.";
+Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace";
+Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something...";
+Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
+Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
+Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
+Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
+Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
+Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
+Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
+Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
+Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+
+Blockly.Msg["MATH_HUE"] = "230";
+Blockly.Msg["LOOPS_HUE"] = "120";
+Blockly.Msg["LISTS_HUE"] = "260";
+Blockly.Msg["LOGIC_HUE"] = "210";
+Blockly.Msg["VARIABLES_HUE"] = "330";
+Blockly.Msg["TEXTS_HUE"] = "160";
+Blockly.Msg["PROCEDURES_HUE"] = "290";
+Blockly.Msg["COLOUR_HUE"] = "20";
+Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
+
+Blockly.Msg.TEXT_IS_NUMBER_HELPURL = '';
+Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP = 'Judge the text %1 and return True or False';
+Blockly.Msg.TEXT_IS_NUMBER_MESSAGE0 = '%1 %2';
+
+Blockly.Msg.TEXT_IS_DIGIT = 'Is number';
+Blockly.Msg.TEXT_IS_ALPHA = 'Is letter';
+Blockly.Msg.TEXT_IS_ALNUM = 'Is mix of numbers and letters';
+
+Blockly.Msg.REDO = "Redo";
+Blockly.Msg.UNDO = "Undo";
+Blockly.Msg.DELETE_VARIABLE = "Delete \"%1\" variable";
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "Delete %1 of the \"%2\" variable?";
+
+Blockly.Msg.CONTROLS_REPEAT_FOREVER = "Repeat forever";
+Blockly.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP = "Do some statements forever times";
+Blockly.Msg.TEXT_LIST_START = "Create list [";
+Blockly.Msg.TEXT_LIST_END = "]";
+Blockly.Msg.TEXT_TUPLE_START = "Create tuple (";
+Blockly.Msg.TEXT_TUPLE_END = ")";
+Blockly.Msg.TEXT_DICT_START = "Create dictionary {";
+Blockly.Msg.TEXT_DICT_END = "}";
+Blockly.Msg.TEXT_SET_START = "Create set {";
+Blockly.Msg.TEXT_SET_END = "}";
+Blockly.Msg.TEXT_SET_HELPURL = "https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";
+Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE = "Create empty tuple";
+Blockly.Msg.DICT_CREATE_EMPTY_TITLE = "Create empty dictionary";
+Blockly.Msg.SET_CREATE_EMPTY_TITLE = "Create empty sets";
+Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD = "Tuple";
+Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD = "Dictionary";
+Blockly.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD = "Sets";
+Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or rearrange sections to reconfigure this tuple block.";
+Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or rearrange sections to reconfigure this dictionary block.";
+Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH = "Create tuple with";
+Blockly.Msg.DICT_CREATE_WITH_INPUT_WITH = "Create dictionary with";
+Blockly.Msg.SET_CREATE_WITH_INPUT_WITH = "Create sets with";
+Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the tuple.";
+Blockly.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the dictionary.";
+Blockly.Msg.SET_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the sets.";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "Ascending";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "Descending";
+Blockly.Msg.LISTS_SORT_TITLE = "Sort %1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list.";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "By letter, ignore case";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "By number";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "By letter";
+
+Blockly.Msg.labplus_mapping_MESSAGE0 = 'Map %1 from %2 , %3 to %4 , %5'
+Blockly.Msg.labplus_mapping_TOOLTIP = 'Map 10 of 0~100 to 0~200 and return the mapped value'
+Blockly.Msg.labplus_mapping_HELPURL = ''
+
+Blockly.Msg.CocoRobo_OPEN = 'On';
+Blockly.Msg.CocoRobo_CLOSE = 'Off';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT = 'Shift left';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT = 'Shift right';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP = 'Shift up';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN = 'Shift down';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE = 'Grayscale';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW = 'Rainbow';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE = 'Negate';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT = 'Invert';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR = 'Line polar';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR = 'Log polar';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE = 'Grayscale';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR = 'Color';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_START = 'Start capturing image';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP = 'Stop capturing image';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H = 'Horizontal mirror';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V = 'Vertical flip';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST = 'Contrast';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS = 'Brightness';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION = 'Saturation';
+
+Blockly.Msg.CocoRobo_AI2_FACE_YOLO = 'FACE YOLO';
+Blockly.Msg.CocoRobo_AI2_CLASS_20_YOLO = 'CLASS 20 YOLO';
+
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE = 'Rectangle';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_CROSS = 'Cross';
+
+
+/*文本- 开始 */
+Blockly.Msg.TEXT_APPEND_TEXT_HELPURL = '';
+Blockly.Msg.TEXT_APPEND_TEXT_TOOLTIP = 'Append text after the specified text and return the result';
+Blockly.Msg.TEXT_APPEND_TEXT_MESSAGE0 = '%1 append text %2';
+
+
+
+/*文本 - 结束 */
+
+
+/*教科板 - 扩展 - Bluebit - 开始 */
+
+
+
+
+
+
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_MESSAGE0 = 'Set Audio volume as %1';
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_MESSAGE0 = 'Expansion-board speed of DC motor %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_M1M2_LED_ON_HELPURL = '';
+Blockly.Msg.CocoRobo_M1M2_LED_ON_MESSAGE0 = 'Expansion-board set led at %1 brightness %2';
+Blockly.Msg.CocoRobo_M1M2_LED_ON_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_HELPURL = '';
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_MESSAGE0 = 'Expansion-board turn off led at %1';
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_MESSAGE0 = 'I2C ultrasonic value';
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_MESSAGE0 = '%1 on pin %2 be triggered';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_MESSAGE0 = '%1 on pin %2 analog value';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_MESSAGE0 = 'Set LED on pin %2 value as %1';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_MESSAGE0 = 'Tracking sensor on pin %1 detected as black';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_MESSAGE0 = 'Turn on %1 on pin %2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_MESSAGE0 = 'Turn off %1 on pin %2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_MESSAGE0 = 'Turn on recorder %1 %2 REC %3  PLAY %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_MESSAGE0 = 'Turn off recorder %1  REC %2  PLAY %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY = 'PLAY';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_REC = 'REC';
+
+Blockly.Msg.STOP = 'STOP';
+
+Blockly.Msg.CocoRobo_BLUEBIT_IR_RECEIVE = 'Infrared detection';
+Blockly.Msg.CocoRobo_BLUEBIT_SOUND = 'Microphone';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER = 'Tracking sensor';
+Blockly.Msg.CocoRobo_BLUEBIT_VIBRATION = 'Vibration sensor';
+Blockly.Msg.CocoRobo_BLUEBIT_RFID = 'RF card';
+Blockly.Msg.CocoRobo_BLUEBIT_FINGERPRINT_SCANNER = 'Fingerprint scanner';
+Blockly.Msg.CocoRobo_BLUEBIT_PIR = 'PIR sensor';
+Blockly.Msg.CocoRobo_BLUEBIT_MAGNETIC = 'Magnetic switch';
+Blockly.Msg.CocoRobo_BLUEBIT_BUTTON = 'Button';
+
+Blockly.Msg.CocoRobo_BLUEBIT_FAN = 'Fan';
+Blockly.Msg.CocoRobo_BLUEBIT_LASER = 'Laser';
+
+Blockly.Msg.CocoRobo_BLUEBIT_NTC_TEMP = 'NTC temperature';
+Blockly.Msg.CocoRobo_BLUEBIT_WATER = 'Water level';
+Blockly.Msg.CocoRobo_BLUEBIT_SOIL_MOISTURE = 'Soil moisture';
+Blockly.Msg.CocoRobo_BLUEBIT_ROTATE_DIMMER = 'Rotate dimmer';
+Blockly.Msg.CocoRobo_BLUEBIT_LINEAR_SLIDING_POTENTIOMETER = 'Inear sliding potentiometer';
+Blockly.Msg.CocoRobo_BLUEBIT_ANALOG_LIGHT = 'Analog light';
+Blockly.Msg.CocoRobo_BLUEBIT_LM35_TEMP = 'LM35 temperature';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE = 'Corotation';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE = 'Reverse';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_TOOLTIP = 'Speed:Map -100~100 to -1023~1023';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_MESSAGE0 = 'Turn on DC motor %1 speed %2 pin AIN1 %3 pin AIN2 %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_MESSAGE0 = 'Stop DC motor %1 pin AIN1 %2 pin AIN2 %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_MESSAGE0 = 'Expansion-board turn on the fan %1';
+Blockly.Msg.CocoRobo_LEFT = 'LEFT';
+Blockly.Msg.CocoRobo_RIGHT = 'RIGHT';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_MESSAGE0 = 'Expansion-board turn off the fan %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_HELPURL = 'http://wiki.CocoRobo_BLUEBIT.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE';
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_MESSAGE0 = 'Navigation button module pin %1 button %2 is pressed';
+Blockly.Msg.BLUE = 'A';
+Blockly.Msg.GREEN = 'B';
+Blockly.Msg.RED = 'C';
+Blockly.Msg.YELLOW = 'D';
+
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_MESSAGE0 = 'Thumb joystick pin A0 %1 pin A1 %2  %3 axis';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_TOOLTIP = 'Speed: 0~100';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_MESSAGE0 = 'Expansion-board turn on DC motor %1 %2 speed %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_BLUEBIT_MOTOR_OFF_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_TOOLTIP = 'Speed: 0~100';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_MESSAGE0 = 'Expansion-board stop DC motor';
+
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_TOOLTIP = 'Speed: -1023~1023';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_MESSAGE0 = 'Coded motor mode%1 dial code%2 M1 speed%3 M2 speed%4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_TOOLTIP = 'Stop Coding Motor Rotation';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_MESSAGE0 = 'Stop Coding Motor Rotation %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_MESSAGE0 = 'Initialize MIDI TX pin %1';
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_MESSAGE0 = 'Set MIDI volume as %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_TOOLTIP = 'Volume range:0~127';
+
+Blockly.Msg.MIDI_PIANO = "ACOUSTIC GRAND PIANO"; //ACOUSTIC GRAND PIANO
+Blockly.Msg.MIDI_BRIGHTACOUSTICPIANO = "BRIGHT ACOUSTIC PIANO";
+Blockly.Msg.MIDI_ELECTRICGRANDPIANO = "ELECTRIC GRAND PIANO";
+Blockly.Msg.MIDI_HARPSICHORD = "HARPSICHORD";
+Blockly.Msg.MIDI_CELESTA = "CELESTA";
+Blockly.Msg.MIDI_GLOCKENSPIEL = "GLOCKENSPIEL";
+Blockly.Msg.MIDI_MUSICALBOX = "MUSICAL BOX";
+Blockly.Msg.MIDI_MARIMBA = "MARIMBA";
+Blockly.Msg.MIDI_XYLOPHONE = "XYLOPHONE";
+Blockly.Msg.MIDI_TUBULARBELL = "TUBULAR BELL";
+Blockly.Msg.MIDI_DULCIMER = "DULCIMER";
+Blockly.Msg.MIDI_VIBRAPHONE = "VIBRAPHONE"; //VIBRAPHONE
+Blockly.Msg.MIDI_ORGAN = "DRAWBAR ORGAN"; //DRAWBAR ORGAN
+Blockly.Msg.MIDI_ACOUSTIC_GUITAR = "ACOUSTIC GUITAR"; //ACOUSTIC GUITAR
+Blockly.Msg.MIDI_ELECTRIC_GUITAR = "ELECTRIC GUITAR"; //ELECTRIC GUITAR
+Blockly.Msg.MIDI_ACOUSTIC_BASS = "ACOUSTIC BASS";  //ACOUSTIC BASS
+Blockly.Msg.MIDI_STRING_ENSEMBLE = "STRING ENSEMBLE";  //STRING ENSEMBLE
+Blockly.Msg.MIDI_VIOLIN = "VIOLIN";  //VIOLIN
+Blockly.Msg.MIDI_TRUMPET = "TRUMPET";  //TRUMPET
+Blockly.Msg.MIDI_SAX = "SAX";  //SAX
+Blockly.Msg.MIDI_STEEL_DRUMS = "STEEL DRUMS";  //STEEL DRUMS
+Blockly.Msg.MIDI_LEAD = "LEAD";  //LEAD
+Blockly.Msg.MIDI_PAD = "PAD";  //PAD
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_MESSAGE0 = 'Set MIDI instrument as %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_MESSAGE0 = 'MIDI %1 tone %2';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_MESSAGE0 = 'Set matrix`s brightness level as %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_TOOLTIP = 'Brightness level:0~15';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_MESSAGE0 = 'Set matrix %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_MESSAGE0 = 'Set matrix  %1 %2 %3 %4 %5 %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 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_MESSAGE0 = 'The setting of matrix takes effect';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_MESSAGE0 = 'Set MP3 volume as %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_TOOLTIP = 'Volume:0~30';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_MESSAGE0 = 'Init MP3 TX pin %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_TOOLTIP = 'The tx pin of the cocorobo board is connected to the RXI pin of the music module';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_MESSAGE0 = 'MP3 volume %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_TOOLTIP = '';
+Blockly.Msg.CocoRobo_PLUS_1 = 'Plus 1';
+Blockly.Msg.CocoRobo_MINUS_1 = 'Minus 1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_MESSAGE0 = 'Mp3 plays song with order %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_TOOLTIP = '';
+
+Blockly.Msg.PAUSE = 'PAUSE';
+Blockly.Msg.STOP = 'STOP';
+Blockly.Msg.PLAY = 'GO ON';
+Blockly.Msg.PLAYNEXT = 'NEXT SONG';
+Blockly.Msg.PLAYPREV = 'LAST SONG';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_MESSAGE0 = 'MP3 play %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_TOOLTIP = '';
+
+Blockly.Msg.LABPLUS_USB_SWITCH_ON = 'ON';
+Blockly.Msg.LABPLUS_USB_SWITCH_OFF = 'OFF';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_MESSAGE0 = 'MP3 single-loop mode %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_MESSAGE0 = 'Set EXT IO module`s IO %2 as %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_TOOLTIP = 'IO: 0~7';
+
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_OUTPUT = 'OUTPUT';
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_INPUT = 'INPUT';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_MESSAGE0 = 'Value of EXT IO at IO %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_MESSAGE0 = 'Set EXT IO module`s IO %2 as %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_OBJECT_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_OBJECT_MESSAGE0 = 'Initialise LCD1602';
+Blockly.Msg.CocoRobo_LCD_OBJECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_PRINT_MESSAGE0 = 'LCD1602 display %1';
+Blockly.Msg.CocoRobo_LCD_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_HOME_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_HOME_MESSAGE0 = 'LCD1602 cursor returns to the origin';
+Blockly.Msg.CocoRobo_LCD_HOME_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_CURSOR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_CURSOR_MESSAGE0 = 'LCD1602 cursor %1';
+Blockly.Msg.CocoRobo_LCD_CURSOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0 = 'LCD1602 starts with row %2 column %1';
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP = 'Row and column count from 0';
+
+Blockly.Msg.CocoRobo_LCD_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_CLEAR_MESSAGE0 = 'LCD1602 clear';
+Blockly.Msg.CocoRobo_LCD_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_CURSOR_BLINK = 'BLINK';
+Blockly.Msg.CocoRobo_LCD_CURSOR_NO_BLINK = 'NO BLINK';
+
+Blockly.Msg.CocoRobo_LEFT_TO_RIGHT = 'LEFT TO RIGHT';
+Blockly.Msg.CocoRobo_RIGHT_TO_LEFT = 'RIGHT TO LEFT';
+
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0 = 'LCD1602 text direction %1';
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_MOVE_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_MOVE_MESSAGE0 = 'LCD1602 scrolls a column to %1';
+Blockly.Msg.CocoRobo_LCD_MOVE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IR_TRANS_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_TRANS_MESSAGE0 = 'Infrared transmission of string with one byte length %1 tx pin %2';
+Blockly.Msg.CocoRobo_IR_TRANS_TOOLTIP =
+    `
+string with one byte length: 'A', 'b', '1' and so on
+`
+
+Blockly.Msg.OUTPUT_PIN_HELPURL = '';
+Blockly.Msg.OUTPUT_PIN_MESSAGE0 = '%1';
+Blockly.Msg.OUTPUT_PIN_TOOLTIP = "";
+
+Blockly.Msg.INPUT_PIN_HELPURL = '';
+Blockly.Msg.INPUT_PIN_MESSAGE0 = '%1';
+Blockly.Msg.INPUT_PIN_TOOLTIP = "";
+
+Blockly.Msg.READ_ANALOG_PIN_HELPURL = ''
+Blockly.Msg.READ_ANALOG_PIN_MESSAGE0 = '%1'
+Blockly.Msg.READ_ANALOG_PIN_TOOLTIP = ""
+
+Blockly.Msg.SET_DIGITAL_HELPURL = ''
+Blockly.Msg.SET_DIGITAL_MESSAGE0 = '%1'
+Blockly.Msg.SET_DIGITAL_TOOLTIP = ""
+
+Blockly.Msg.SET_ANALOG_HELPURL = ''
+Blockly.Msg.SET_ANALOG_MESSAGE0 = '%1'
+Blockly.Msg.SET_ANALOG_TOOLTIP = ""
+
+Blockly.Msg.ALL_PIN_HELPURL = ''
+Blockly.Msg.ALL_PIN_MESSAGE0 = '%1'
+Blockly.Msg.ALL_PIN_TOOLTIP = ""
+
+Blockly.Msg.PWM_PIN_HELPURL = ''
+Blockly.Msg.PWM_PIN_MESSAGE0 = '%1'
+Blockly.Msg.PWM_PIN_TOOLTIP = ""
+
+Blockly.Msg.DH11_HUM_TEM_PIN_HELPURL = ''
+Blockly.Msg.DH11_HUM_TEM_PIN_MESSAGE0 = '%1'
+Blockly.Msg.DH11_HUM_TEM_PIN_TOOLTIP = ""
+
+Blockly.Msg.UART_TX_PIN_HELPURL = ''
+Blockly.Msg.UART_TX_PIN_MESSAGE0 = '%1'
+Blockly.Msg.UART_TX_PIN_TOOLTIP = ""
+
+Blockly.Msg.UART_RX_PIN_HELPURL = ''
+Blockly.Msg.UART_RX_PIN_MESSAGE0 = '%1'
+Blockly.Msg.UART_RX_PIN_TOOLTIP = ""
+
+Blockly.Msg.I2C_PIN_HELPURL = ''
+Blockly.Msg.I2C_PIN_MESSAGE0 = '%1'
+Blockly.Msg.I2C_PIN_TOOLTIP = ""
+
+
+
+
+
+
+Blockly.Msg.MQTT_COMMON_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_COMMON_SETUP_MESSAGE0 = 'MQTT %1 client_id %2 server %3 port %4 user %5 password %6 keepalive %7';
+Blockly.Msg.MQTT_COMMON_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_TENCENT_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_TENCENT_SETUP_MESSAGE0 = 'MQTT Tencent IoT %1 Server %2 Port %3 AppId %4 Device %5 -- Output -- %6 ReportTopic %7 ControlTopic %8';
+Blockly.Msg.MQTT_TENCENT_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_TENCENT_SETUPS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_TENCENT_SETUPS_MESSAGE0 = 'MQTT Tencent IoT %1 Server %2 Port %3 AppId %4 Device %5 -- Output -- %6 ReportTopic %7 ControlTopic %8';
+Blockly.Msg.MQTT_TENCENT_SETUPS_TOOLTIP = "";
+
+Blockly.Msg.MQTT_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_SETUP_MESSAGE0 = 'MQTT-Easy IoT %1 Server %2 Client ID %5 Iot_id %3 Iot_pwd %4';
+Blockly.Msg.MQTT_SETUP_TOOLTIP = '';
+
+Blockly.Msg.MQTT_CONNECT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_CONNECT_MESSAGE0 = 'Connect to MQTT';
+Blockly.Msg.MQTT_CONNECT_TOOLTIP = '';
+
+Blockly.Msg.MQTT_PUBLISH_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_PUBLISH_MESSAGE0 = 'Publish %1 to topic %2';
+Blockly.Msg.MQTT_PUBLISH_TOOLTIP = '';
+
+Blockly.Msg.MQTT_REC_FROM_TOPIC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_REC_FROM_TOPIC_MESSAGE0 = 'When recieved %2 from topic %1';
+Blockly.Msg.MQTT_REC_FROM_TOPIC_TOOLTIP = '';
+
+Blockly.Msg.MQTT_RECEIVE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_RECEIVE_MESSAGE0 = 'When recieved %2 from topic %1';
+Blockly.Msg.MQTT_RECEIVE_TOOLTIP = "Parameter \"topic\" only accepts variable";
+
+Blockly.Msg.MQTT_WAIT_MSG_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_WAIT_MSG_MESSAGE0 = 'Wait for topic message in %1 mode';
+Blockly.Msg.MQTT_WAIT_MSG_TOOLTIP = "It is recommended to run in 'while True'";
+
+Blockly.Msg.MQTT_DISCONNECT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_DISCONNECT_MESSAGE0 = 'Disconnect from MQTT';
+Blockly.Msg.MQTT_DISCONNECT_TOOLTIP = ''
+
+Blockly.Msg.MQTT_LAST_WILL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will'
+Blockly.Msg.MQTT_LAST_WILL_MESSAGE0 = 'Set MQTT topic %2 last will message as %1';
+Blockly.Msg.MQTT_LAST_WILL_TOOLTIP = 'Set the MQTT "last will" message. Should be called before connect().'
+
+
+Blockly.Msg.CocoRobo_IR_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_RECV_MESSAGE0 = 'Infrared received int at rx pin %1';
+Blockly.Msg.CocoRobo_IR_RECV_TOOLTIP = 'The first time the receive is always empty';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_MESSAGE0 = 'Bluebit LCD show %1 at x %2 y %3';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_MESSAGE0 = 'Bluebit LCD init at tx %1 rx %2';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_MESSAGE0 = 'Bluebit LCD clear';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_MESSAGE0 = 'Bluebit LCD show image x %1 y %2 width %3 height %4 with hex image data %5';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_TOOLTIP = '';
+
+
+//MENUS
+Blockly.Msg.MICROBIT_GESTURE_SHAKE = 'Shake';
+Blockly.Msg.MICROBIT_GESTURE_UP = 'Up';
+Blockly.Msg.MICROBIT_GESTURE_DOWN = 'Down';
+Blockly.Msg.MICROBIT_GESTURE_LEFT = 'Left';
+Blockly.Msg.MICROBIT_GESTURE_RIGHT = 'Right';
+Blockly.Msg.MICROBIT_GESTURE_FACE_UP = 'Upward';
+Blockly.Msg.MICROBIT_GESTURE_FACE_DOWN = 'Down';
+Blockly.Msg.MICROBIT_GESTURE_FREEFAIL = 'Free fall';
+Blockly.Msg.MICROBIT_IMAGE_HEART = 'Heart';
+Blockly.Msg.MICROBIT_IMAGE_HEART_SMALL = 'Heart (small)';
+Blockly.Msg.MICROBIT_IMAGE_HAPPY = 'Happy';
+Blockly.Msg.MICROBIT_IMAGE_SMILE = 'Smile Face';
+Blockly.Msg.MICROBIT_IMAGE_SAD = 'Sad';
+Blockly.Msg.MICROBIT_IMAGE_CONFUSED = 'Confusion';
+Blockly.Msg.MICROBIT_IMAGE_ANGRY = 'Angry';
+Blockly.Msg.MICROBIT_IMAGE_ASLEEP = 'Sleep';
+Blockly.Msg.MICROBIT_IMAGE_SUPRISED = 'Surprise';
+Blockly.Msg.MICROBIT_IMAGE_SILLY = 'Stupid';
+Blockly.Msg.MICROBIT_IMAGE_FABULOUS = 'Wonderful';
+Blockly.Msg.MICROBIT_IMAGE_MEH = 'Boredom';
+Blockly.Msg.MICROBIT_IMAGE_YES = 'Yes';
+Blockly.Msg.MICROBIT_IMAGE_NO = 'No';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK12 = '12 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK11 = '11 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK10 = '10 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK9 = '9 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK8 = '8 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK7 = '7 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK6 = '6 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK5 = '5 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK4 = '4 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK3 = '3 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK2 = '2 clock';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK1 = '1 clock';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_N = 'Arrow-North';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_NE = 'Arrow-Northeast';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_E = 'Arrow-east';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_SE = 'arrow-southeast';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_S = 'Arrow-South';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_SW = 'Arrow-southwest';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_W = 'Arrow-West';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_NW = 'Arrow-Northwest';
+Blockly.Msg.MICROBIT_IMAGE_TRIANGLE = 'Triangle';
+Blockly.Msg.MICROBIT_IMAGE_TRIANGLE_LEFT = 'Left triangle';
+Blockly.Msg.MICROBIT_IMAGE_CHESSBOARD = 'Chessboard';
+Blockly.Msg.MICROBIT_IMAGE_DIAMOND = 'Diamond';
+Blockly.Msg.MICROBIT_IMAGE_DIAMOND_SMALL = 'Diamond (small)';
+Blockly.Msg.MICROBIT_IMAGE_SQUARE = 'Square';
+Blockly.Msg.MICROBIT_IMAGE_SQUARE_SMALL = 'Square (small)';
+Blockly.Msg.MICROBIT_IMAGE_RABBIT = 'Rabbit';
+Blockly.Msg.MICROBIT_IMAGE_COW = 'Cow';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_CROTCHET = 'Quarter note';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVER = 'Octave';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVERS = 'Tremolo';
+Blockly.Msg.MICROBIT_IMAGE_PITCHFORK = 'Fork';
+Blockly.Msg.MICROBIT_IMAGE_XMAS = 'Christmas Tree';
+Blockly.Msg.MICROBIT_IMAGE_PACMAN = 'Bean Eater';
+Blockly.Msg.MICROBIT_IMAGE_TARGET = 'Target';
+Blockly.Msg.MICROBIT_IMAGE_TSHIRT = 'T-shirt';
+Blockly.Msg.MICROBIT_IMAGE_ROLLERSKATE = 'Roller Skating';
+Blockly.Msg.MICROBIT_IMAGE_DUCK = 'Duck';
+Blockly.Msg.MICROBIT_IMAGE_HOUSE = 'House';
+Blockly.Msg.MICROBIT_IMAGE_TORTOISE = 'Tortoise';
+Blockly.Msg.MICROBIT_IMAGE_BUTTERFLY = 'Butterfly';
+Blockly.Msg.MICROBIT_IMAGE_STICKFIGURE = 'Line drawing';
+Blockly.Msg.MICROBIT_IMAGE_GHOST = 'Ghost';
+Blockly.Msg.MICROBIT_IMAGE_SWORD = 'Sword';
+Blockly.Msg.MICROBIT_IMAGE_GIRAFFE = 'Giraffe';
+Blockly.Msg.MICROBIT_IMAGE_SKULL = 'Head';
+Blockly.Msg.MICROBIT_IMAGE_UMBRELLA = 'Umbrella';
+Blockly.Msg.MICROBIT_IMAGE_SNAKE = 'Snake';
+Blockly.Msg.MICROBIT_IMAGE_ALL_CLOCKS = 'All Clocks';
+Blockly.Msg.MICROBIT_IMAGE_ALL_ARROWS = 'All arrows';
+
+
+
+/*教科板 - 扩展 - Bluebit - 结束 */
+
+/*掌控实验箱*/
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0 = 'Meteorological %1';
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP = '%';
+
+Blockly.Msg.CocoRobobox_sound_MESSAGE0 = 'Sound value';
+Blockly.Msg.CocoRobobox_sound_TOOLTIP = '0~4095。';
+Blockly.Msg.CocoRobobox_sound_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo.html';
+
+Blockly.Msg.CocoRoboBOX_SLIDER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_SLIDER_MESSAGE0 = 'Slide bar';
+Blockly.Msg.CocoRoboBOX_SLIDER_TOOLTIP = '0~4095。';
+
+Blockly.Msg.CocoRoboBOX_5BUTTON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_5BUTTON_MESSAGE0 = 'Five way button%1';
+Blockly.Msg.CocoRoboBOX_5BUTTON_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_MOTOR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_MOTOR_MESSAGE0 = 'Motor speed%1';
+Blockly.Msg.CocoRoboBOX_MOTOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key';
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_MESSAGE0 = 'Ultrasonic';
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_TOOLTIP = '3~340CM';
+
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key';
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_MESSAGE0 = 'Human body infrared';
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_pixel_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_MESSAGE0 = 'Set column%1 line%2  R%3 G%4 B%5';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_MESSAGE0 = 'Returns the RGB color of column%1, line%2';
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_MESSAGE0 = 'Scroll Display Text%1 Speed%2';
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_Image_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_Image_MESSAGE0 = 'According to the image%1';
+Blockly.Msg.CocoRoboBOX_RGB_Image_TOOLTIP = 'According to the image';
+
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_MESSAGE0 = 'Create an image %1 The first line%2, the second line%3, the third line%4, the fourth line%5, the fifth line%6';
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_MESSAGE0 = 'Display image/text %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_TOOLTIP = '';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_MESSAGE0 = 'Display image %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_TOOLTIP = 'Display image。';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_MESSAGE0 = 'Copy image %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_TOOLTIP = 'Copy image';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_MESSAGE0 = 'Cut image%1 column%2 rows%3 width%4 high%5';
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_TOOLTIP = 'Cut image';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_MESSAGE0 = 'Built in image %1';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_TOOLTIP = 'Select a built-in image.';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_MESSAGE0 = 'Translation image %1 %2 %3 ';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_TOOLTIP = 'Move the image in a specific direction and return the result of the move.';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_clear_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_clear_MESSAGE0 = 'Turn off all RGB';
+Blockly.Msg.CocoRoboBOX_RGB_clear_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_MESSAGE0 = 'Return %1 column %2 line colour';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_TOOLTIP = 'Return to the number of columns, row RGB color';
+
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_MESSAGE0 = '%1Triaxial acceleration';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_TOOLTIP = 'Unit g, range-2~+2g。';
+
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_MESSAGE0 = '%1Triaxial angular velocity';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_TOOLTIP = 'Range±500°/seconds';
+
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_MESSAGE0 = '%1Euler Angle';
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_TOOLTIP = 'Returns the current euler Angle(Pitch,Roll,Yaw),Unit Angle';
+
+Blockly.Msg.CocoRoboBOX_QUATERNION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_QUATERNION_MESSAGE0 = '%1quaternions';
+Blockly.Msg.CocoRoboBOX_QUATERNION_TOOLTIP = 'Returns the current quaternion(w,x,y,z)';
+
+Blockly.Msg.LIST_FIRST_INDEX_HELPURL = '';
+Blockly.Msg.LIST_FIRST_INDEX_MESSAGE0 = 'Location of item%1 in list%2 %3';
+Blockly.Msg.LIST_FIRST_INDEX_TOOLTIP = 'Returns the position where the specified string appears in the list %3';
+
+/*AI类*/
+Blockly.Msg.CocoRobo_AI_LCD_INIT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.init';
+Blockly.Msg.CocoRobo_AI_LCD_INIT_MESSAGE0 = 'Screen Initialization ';
+Blockly.Msg.CocoRobo_AI_LCD_INIT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0';
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_MESSAGE0 = 'Initialize the camera';
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_MESSAGE0 = 'Camera%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MESSAGE0 = 'Display text x %1 y %2 content %3';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7';
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_MESSAGE0 = 'The number of frames skipped by the camera %1 Millisecond %2 ';
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6';
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_MESSAGE0 = '测 摄像头 获取%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_MESSAGE0 = 'Camera set %1 as %2';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_MESSAGE0 = 'Automatic gain of camera%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_MESSAGE0 = 'Camera White Balance%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_MESSAGE0 = 'Camera %1 %2';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_MESSAGE0 = 'Screen display takes effect';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_MESSAGE0 = 'Image display takes effect x%1 y%2 wide%3 high%4';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_MESSAGE0 = 'Camera captures images';
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C';
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_MESSAGE0 = 'Face recognition';
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_MESSAGE0 = 'Rectangular%1 x%3 y%4 width%5 high%6 color R%7 G%8 B%9 coarsening%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_MESSAGE0 = 'line x1%1 y1%2 reachx2%3 y2%4 Color isR%5 G%6 B%7 Thickening%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_MESSAGE0 = 'Clear screen display';
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_MESSAGE0 = 'LCD Return x%1 y%2 colour';
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_TOOLTIP = '';
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_MESSAGE0 = 'circular%1 x%2 y%3 radius%4 colour R%5 G%6 B%7 Thickening%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_MESSAGE0 = 'Display text x %1 y %2 content %3 colourR%4 G%5 B%6 size%7';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_MESSAGE0 = 'Cross line  x%1 y%2 colourR%3 G%4 B%5 size%6 Thickening%7';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_MESSAGE0 = 'Arrow  x1%1 y1%2 x2%3 y2%4 colourR%5 G%6 B%7  Thickening%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_TOOLTIP = '';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL = '.https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0 = 'Display image path%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.invert';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_MESSAGE0 = 'Image conversion to%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.linpolar';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_MESSAGE0 = 'Image from Cartesian coordinates to%1 Reprojection of coordinates %2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.dilate';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_MESSAGE0 = 'Image Expansion Level%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.midpoint';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_MESSAGE0 = 'Image Point Filtering Level%1 Wave filtering%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.modehttps://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mode';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_MESSAGE0 = 'Image Modal Filtering Level%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mean';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_MESSAGE0 = 'Image Fuzzy Filtering Level%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.cartoon';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_MESSAGE0 = 'Image Cartoonization Level%1 Initial Pixel Difference%2 Adjacent pixel difference%3';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.rotation_corr';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_MESSAGE0 = 'Image 3D Rotation Up and Down%1 Rotate left and right%2 degrees%3 or so move%4 up and down move%5 zoom%6';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.copy';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_MESSAGE0 = 'Save a copy of the image to the SD card image name%1 Image display area x%2 y%3 wide%4 high%5';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.save';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0 = 'Create a copy of the image object to copy the image area  x%1 y%2 wide%3 high%4';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI2_20CLASS_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_20CLASS_TRACKING_MESSAGE0 = '20 kinds of recognition';
+Blockly.Msg.CocoRobo_AI2_20CLASS_TRACKING_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0 = 'Handwritten Number Recognition';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html?highlight=get_pixel#CocoRobo_classroom_kit.image.set_pixel';
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_MESSAGE0 = 'Screen x%1 y%2  Display color R%3 G%4 B%5';
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.clear';
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_MESSAGE0 = 'Screen Initialization Display Color R%1 G%2 B%3';
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.camera.set_pixformat';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_MESSAGE0 = 'Initialize the camera, set pixel mode as %1';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL = '';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0 = 'Tracking color display%1';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP = '';
+
+//人脸检测
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_MESSAGE0 = 'Set the training model to "Face ID"';
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_TOOLTIP = 'It can recognize and track faces, display face size and so on';
+
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_MESSAGE0 = 'Call the camera for "Face ID"';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_TOOLTIP = 'It can recognize and track faces, display face size and so on';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_MESSAGE0 = 'Get the recognition result of "Face ID"';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_TOOLTIP = 'After acquisition and identification All the parameters';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_MESSAGE0 = 'Get the X coordinate of the "Face ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_TOOLTIP = 'After acquisition and identification x coordinates';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_MESSAGE0 = 'Get the Y coordinate of the "Face ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_TOOLTIP = 'After acquisition and identification y coordinates';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_MESSAGE0 = 'Get the width of the "Face ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_TOOLTIP = 'After acquisition and identification width';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_MESSAGE0 = 'Get the height of the "Face ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_TOOLTIP = 'After acquisition and identification height';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_MESSAGE0 = 'Get the confidence of the "Face ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_TOOLTIP = 'After acquisition and identification Confidence';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_MESSAGE0 = 'Get the object count of the "Face ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_TOOLTIP = 'After acquisition and identification number';
+
+//20分类
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_MESSAGE0 = 'Set the training model to "20 Class ID"';
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_TOOLTIP = 'Can identify 20 types, respectively are 0-19 for aircraft, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, dining table, dog, house, motorcycle, person, potted plant, sheep, sofa, train, TV';
+
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_MESSAGE0 = 'Call the camera for "20 Class ID"';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_MESSAGE0 = 'Get the recognition result of "20 Class ID"';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_TOOLTIP = 'After acquisition and identification All the parameters';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_MESSAGE0 = 'Get the X coordinate of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_TOOLTIP = 'After acquisition and identification x coordinates';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_MESSAGE0 = 'Get the Y coordinate of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_TOOLTIP = 'After acquisition and identification y coordinates';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_MESSAGE0 = 'Get the width of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_TOOLTIP = 'After acquisition and identification width';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_MESSAGE0 = 'Get the height of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_TOOLTIP = 'After acquisition and identification height';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_MESSAGE0 = 'Get the confidence of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_TOOLTIP = 'After acquisition and identification Confidence';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_MESSAGE0 = 'Get the object count of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_TOOLTIP = 'After acquisition and identification number';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_MESSAGE0 = 'Get the type name of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_TOOLTIP = 'Can identify 20 types, respectively are 0-19 for aircraft, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, dining table, dog, house, motorcycle, person, potted plant, sheep, sofa, train, TV';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_MESSAGE0 = 'Get the type count of the "20 Class ID" result';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_TOOLTIP = 'After acquisition and identification type number';
+
+
+//手写数字
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0 = 'Set the training model to "Number ID"';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP = 'Select training model handwritten numerals';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_MESSAGE0 = 'Call the camera for "Number ID"';
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_TOOLTIP = 'Call camera identification';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_MESSAGE0 = 'Get the recognition result of "Number ID"';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_TOOLTIP = 'Handwritten digit recognition parameters';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_MESSAGE0 = 'Get the digital of the "Number ID" result';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_TOOLTIP = 'Handwritten digits recognize Numbers';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_MESSAGE0 = 'Get the confidence of the "Number ID" result';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_TOOLTIP = 'Handwritten digit recognition digital confidence';
+
+
+//追踪色块
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_MESSAGE0 = 'Trace color block LAB color %1 bounding box less than %2 pixels less than %3 filter';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_TOOLTIP = 'Track the color piece';
+
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL = '';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0 = 'Trace color display%1';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_MESSAGE0 = 'Color piece block all parameters';
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_X_MESSAGE0 = 'Color piece x coordinates';
+Blockly.Msg.CocoRobo_AI_BLOB_X_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_Y_MESSAGE0 = 'Color piece y coordinates';
+Blockly.Msg.CocoRobo_AI_BLOB_Y_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_W_MESSAGE0 = 'Color piece width';
+Blockly.Msg.CocoRobo_AI_BLOB_W_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_H_MESSAGE0 = 'Color piece height';
+Blockly.Msg.CocoRobo_AI_BLOB_H_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_MESSAGE0 = 'Color piece number';
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_MESSAGE0 = 'Color piece center x coordinates';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_MESSAGE0 = 'Color piece center y coordinates';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_TOOLTIP = 'Returns blob class -- a color block object';
+
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_MESSAGE0 = 'Color piece rectangular';
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_TOOLTIP = 'Returns blob class -- a color block object';
+
+
+//Pythons 训练身高体重比例
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_MESSAGE0 = 'Initialize training%1';
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_MESSAGE0 = 'Instantiate the linear regression line';
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_TITLE_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_TITLE_MESSAGE0 = ' title%1 size%2';
+Blockly.Msg.CocoRobo_DRILL_TITLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_LABEL_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LABEL_MESSAGE0 = 'Label%1  title%2 size%3';
+Blockly.Msg.CocoRobo_DRILL_LABEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_MESSAGE0 = 'Real data lines Sign marks%1 The color of r%2 g%3 b%4  title%5';
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_MESSAGE0 = 'Predict linear regression lines Sign marks%1 The color of r%2 g%3 b%4  title%5';
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_LEGEND_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LEGEND_MESSAGE0 = 'Show legend';
+Blockly.Msg.CocoRobo_DRILL_LEGEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_SHOW_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_SHOW_MESSAGE0 = 'Display images';
+Blockly.Msg.CocoRobo_DRILL_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_MESSAGE0 = 'Returns the corresponding key value%1';
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_TOOLTIP = '';
+
+//pythons 鸢尾花
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_MESSAGE0 = 'Initialize Iris dataset';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_MESSAGE0 = 'Flower-de-luce Principal component analysis';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_MESSAGE0 = 'Flower-de-luce Factor analysis 3D';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_MESSAGE0 = 'Flower-de-luce Factor analysis';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_MESSAGE0 = 'Predicting graphic flower-de-luce type%1 Render content x%3 y%4 Present species%2  color r%5 g%6 b%7  title%8 upward merge%9';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_MESSAGE0 = 'Predicting graphic Render content x%1 y%2 Present species%3  color r%4 g%5 b%6  title%7';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_MESSAGE0 = '3D Predicting graphic Render content x%1 y%2 z%3  color r%4 g%5 b%6  title%7';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_MESSAGE0 = ' Title%1 size%2';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_MESSAGE0 = 'Label%1  title%2 size%3';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_MESSAGE0 = '3D  title%1 size%2';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_MESSAGE0 = '3D label%1  title%2 size%3';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_MESSAGE0 = 'Show legend';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_MESSAGE0 = 'Display images';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_MESSAGE0 = 'X and y coordinates of calyx and petals';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_TOOLTIP = 'There are 150 records, representing 50 Iris-setosa, Iris-versicolor and Iris-virginica respectively';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_setosa = 'Iris setosa';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_versicolor = 'Iris versicolor';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_virginica = 'Iris virginica';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_scatter_diagram = 'Scatter diagram';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_kde_diagram = 'Kde diagram';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_box_diagram = 'Box diagram';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_merge = 'Merge';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_not_merge = 'Don it merge';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_length = 'Calyx length';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_width = 'Calyx width';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_length = 'Petal length';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_width = 'Petal width';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_full_line = 'Full line';
+Blockly.Msg.CocoRobo_DRILL_DRILL_dash_line = 'Dash line';
+Blockly.Msg.CocoRobo_DRILL_DRILL_chain_line = 'Chain line';
+Blockly.Msg.CocoRobo_DRILL_DRILL_imaginary_line = 'Imaginary line';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_dot = 'Dot';
+Blockly.Msg.CocoRobo_DRILL_DRILL_pixel = 'Pixel';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_rim = 'Solid rim';
+Blockly.Msg.CocoRobo_DRILL_DRILL_down_triangle = 'Down triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_up_triangle = 'Up triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_right_triangle = 'Right triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_left_triangle = 'Left triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_down_flower_triangle = 'Down flower triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_up_flower_triangle = 'Up flower triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_right_flower_triangle = 'Right flower triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_left_flower_triangle = 'Left flower triangle';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_square = 'Solid square';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_pentagon = 'Solid pentagon';
+Blockly.Msg.CocoRobo_DRILL_DRILL_star = 'Star';
+Blockly.Msg.CocoRobo_DRILL_DRILL_vertical_hexagon = 'Vertical hexagon';
+Blockly.Msg.CocoRobo_DRILL_DRILL_across_hexagon = 'Across hexagon';
+Blockly.Msg.CocoRobo_DRILL_DRILL_cross = 'Cross';
+Blockly.Msg.CocoRobo_DRILL_DRILL_X = 'X';
+Blockly.Msg.CocoRobo_DRILL_DRILL_rhombus = 'Rhombus';
+Blockly.Msg.CocoRobo_DRILL_DRILL_thin_rhombus = 'Thin rhombus';
+Blockly.Msg.CocoRobo_DRILL_DRILL_vertical_line = 'Vertical line';
+
+
+//Pythons 数字识别
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_HELPURL = ' ';
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_MESSAGE0 = ' Vonvert image to 28 ^ 2 binary image %1 pending image storage path %2 processed image storage path %3 format %4';
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_TOOLTIP = 'Control board passes WIF to voice assistant via serial port ';
+
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_HELPURL = ' ';
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_MESSAGE0 = ' find parse handwritten numeric data store path %1';
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_TOOLTIP = 'Use handwritten number library ';
+
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_HELPURL = ' ';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_MESSAGE0 = ' handwritten digital image storage path %1';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_TOOLTIP = 'Path of handwritten digital image ';
+
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_HELPURL = ' ';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_MESSAGE0 = ' display handwritten digital image ';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_TOOLTIP = 'Display handwritten digital image ';
+
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_HELPURL = ' ';
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_MESSAGE0 = ' identify handwritten digital image storage path %1';
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_TOOLTIP = 'Path to recognize handwritten digital image ';
+
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_HELPURL = ' ';
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_MESSAGE0 = ' create variable %1 initialize neural network tensor variable name %2';
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_TOOLTIP = ' ';
+
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_MESSAGE0 = 'Create variable %1 and convert the input photo variable %2 into neural network output tensor %3';
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_MESSAGE0 = 'Create variable %1 Shared variable name %2 initialization mode %3';
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_MESSAGE0 = 'Produce truncated normal distribution random number output tensor %1 standard deviation %2';
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_MESSAGE0 = 'Create constant value %1 output tensor %2';
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_MESSAGE0 = 'Neural network output tensor %1 Shared variable %2 step size %3 fill %4';
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_MESSAGE0 = 'Tensor %1';
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_MESSAGE0 = 'Convolution two-dimensional variable %1 %2';
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_RELU_MESSAGE0 = 'Create variable %1 Relu forward drive function convolution 2d layer %2';
+Blockly.Msg.CocoRobo_NUMBER_RELU_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_RELU_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_MESSAGE0 = 'Pooling 2d layer variable %1 convolution layer %2 pooling window %3 step size %4 fill %5';
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_MESSAGE0 = 'The corresponding elements of the two parameters are multiplied x%1 y%2';
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_ADD_MESSAGE0 = 'Full connection layer variable %1 add elements of two parameters x%2 y%3';
+Blockly.Msg.CocoRobo_NUMBER_ADD_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_ADD_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_MESSAGE0 = 'Create variable %1 prediction model accuracy variable name %2';
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_MESSAGE0 = 'Create variable %1 loss function %2';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_LOG_MESSAGE0 = 'Natural logarithm %1';
+Blockly.Msg.CocoRobo_NUMBER_LOG_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_LOG_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_MESSAGE0 = 'Compress sum %1 dimension %2';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_TOOLTIP = 'Because the log function is monotonically increasing, logP(Y|X) will also reach its maximum value, so maximizing P(Y|X) after adding a negative sign in front is equivalent to minimizing L.';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_HELPURL = 'https://www.cnblogs.com/guoyaohua/p/9217206.html';
+
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_MESSAGE0 = 'Optimize learning rate %1';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_MESSAGE0 = 'Create variable %1 optimize tensor %2';
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_INIT_MESSAGE0 = 'Initialization model complete ';
+Blockly.Msg.CocoRobo_NUMBER_INIT_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_INIT_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_MESSAGE0 = 'Select handwritten number set %1 number %2';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_MESSAGE0 = 'Start data stream graph session to compute session %1 picture %2 tag %3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_MESSAGE0 = 'Start data stream graph session to compute session %1 picture %2 tag %3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_MESSAGE0 = 'Prediction model %1 fit %2 session %3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_TOOLTIP = ' ';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_HELPURL = ' ';
+
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_MESSAGE0 = 'Whether each dimension of two tensors is equalx%1 y%2';
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_MESSAGE0 = 'Tensor%1 %2Compare the index that returns the maximum value';
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CAST_MESSAGE0 = 'Floating point %1';
+Blockly.Msg.CocoRobo_NUMBER_CAST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CAST_HELPURL = '';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_MESSAGE0 = 'Handwritten numeral recognition model  variable name %1 store path%2';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_TOOLTIP = 'MNIST Handwritten numeral recognition model Save the path';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_MESSAGE0 = 'Load model %1 store path%2';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_TOOLTIP = 'Load model';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAME = 'SAME';
+Blockly.Msg.CocoRoboS_NUMBER_VALID = 'VALID';
+
+Blockly.Msg.CocoRoboS_NUMBER_train = 'Train';
+Blockly.Msg.CocoRoboS_NUMBER_test = 'Test';
+
+Blockly.Msg.CocoRoboS_NUMBER_row = 'Row';
+Blockly.Msg.CocoRoboS_NUMBER_rank = 'Rank';
+
+
+//Pythons 人脸检测
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_MESSAGE0 = 'Call camera %1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_TOOLTIP = 'Call the built-in camera in the notebook, so the parameter is 0. If there are other cameras, the parameter can be adjusted to 1,2';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_MESSAGE0 = 'Off the camera';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_MESSAGE0 = 'Delete all Windows';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_MESSAGE0 = 'Load model store path%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_MESSAGE0 = 'Read the picture from the camera';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_TOOLTIP = 'Ret True if the image is read, otherwise false;The second parameter is frame, which is the image of the currently captured frame.';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_MESSAGE0 = 'Grayscale image';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_MESSAGE0 = 'Each time the face is detected, the image size is reduced proportionally%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_MESSAGE0 = 'Face area displays rectangular box  color r%1 g%2 b%3';
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_MESSAGE0 = 'Save the image location%1 ID%2 Serial number%3';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_MESSAGE0 = 'Window to display the image filename%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_MESSAGE0 = 'Exit via esc key';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_TOOLTIP = 'Use only when the window is on top';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_MESSAGE0 = 'Gets the coordinate value of the face in the image  face%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_MESSAGE0 = 'If the image is read';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_MESSAGE0 = 'Whether to turn on the camera';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_MESSAGE0 = 'Get photos and id Photo storage path%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_MESSAGE0 = 'Initialize Training model';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_MESSAGE0 = 'Start Training model';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_MESSAGE0 = '%1Training model store path%2';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_MESSAGE0 = 'Face model training number';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_MESSAGE0 = 'Window display Recognized name%1 Set font to%2 color r%3 g%4 b%5';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_MESSAGE0 = 'Window display Confidence of identification%1 Set font to%2 color r%3 g%4 b%5';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_MESSAGE0 = 'Predict human face name%1 Degree of confidence%2';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Write = 'Write';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Read = 'Read';
+
+
+
+
+
+
+Blockly.Msg.FIRST = 'First';
+Blockly.Msg.LAST = 'Last';
+
+Blockly.Msg.CocoRobo_USOCKET_BLOCK = 'Block';
+Blockly.Msg.CocoRobo_USOCKET_UNBLOCK = 'Unblock';
+
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket';
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_MESSAGE0 = 'Set socket %1 with af %2 and type %3';
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_TOOLTIP = 'Sets the value of a given socket option. The required symbolic constants are defined in the socket module (SO_*, etc.). This value can be an integer or a class byte object representing a buffer.';
+
+Blockly.Msg.CocoRobo_USOCKET_READ_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.read';
+Blockly.Msg.CocoRobo_USOCKET_READ_MESSAGE0 = 'Read %2 bytes from socket %1 and returns a byte object';
+Blockly.Msg.CocoRobo_USOCKET_READ_TOOLTIP = 'If no number of read is given, run in a mode similar to socket.readall ()';
+
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.setblocking';
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_MESSAGE0 = 'Set socket %1 as %2 mode ';
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.settimeout';
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_MESSAGE0 = 'Socket %1 sets timeout as %2 seconds';
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_MESSAGE0 = 'Socket%1 sends%2 continuously and returns the number of bytes sent';
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_TOOLTIP = 'Send all data to sockets. Sockets must be connected to remote sockets. Unlike send (), this method will attempt to send all data by sending blocks continuously.';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDS_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SENDS_MESSAGE0 = 'Socket %1 send %2 and returns the number of bytes sent';
+Blockly.Msg.CocoRobo_USOCKET_SENDS_TOOLTIP = 'Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).';
+
+Blockly.Msg.CocoRobo_USOCKET_SEND_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SEND_MESSAGE0 = 'Socket %1 send %2 and returns the number of bytes sent';
+Blockly.Msg.CocoRobo_USOCKET_SEND_TOOLTIP = 'Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).';
+
+Blockly.Msg.CocoRobo_LINE_BREAK_HELPURL = '';
+Blockly.Msg.CocoRobo_LINE_BREAK_MESSAGE0 = 'Escape character %1';
+Blockly.Msg.CocoRobo_LINE_BREAK_TOOLTIP = 'Escape character';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.sendto';
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_MESSAGE0 = 'Socket %1 send %2 to address %3';
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_TOOLTIP = 'Send data to the socket. The socket should not be connected to a remote socket, since the destination socket is specified by address.';
+
+Blockly.Msg.CocoRobo_USOCKET_RECV_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recv';
+Blockly.Msg.CocoRobo_USOCKET_RECV_MESSAGE0 = 'Socket %1 receives with maximum amount %2 and returns received data object';
+Blockly.Msg.CocoRobo_USOCKET_RECV_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TEXT_ESC_HELPURL = '';
+Blockly.Msg.CocoRobo_TEXT_ESC_MESSAGE0 = 'Text ESC %1';
+Blockly.Msg.CocoRobo_TEXT_ESC_TOOLTIP = 'Text ESC';
+
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recvfrom';
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_MESSAGE0 = 'Socket %1 receives with maximum amount %2 and returns received data tuple';
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_TOOLTIP = 'Tuple format: (bytes, address)';
+
+
+
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.connect';
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_MESSAGE0 = 'Socket %1 connect to host %2 with port %3';
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.getaddrinfo';
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_MESSAGE0 = 'Parse host %1 with port %2 and return ip';
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_TOOLTIP = 'Internet required';
+
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.accept';
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_MESSAGE0 = 'Socket %1 receive connection request and return socket tuple';
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_TOOLTIP = 'Receive connection request.Socket needs to specify an address and listen to the connection.The return value is (conn, address)\nconn: A new socket object that can be used to send and receive message\naddress: Client address connected to the server';
+
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.listen';
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_MESSAGE0 = 'Listen to socket %1 with backlog as %2';
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_TOOLTIP = 'backlog : Maximum number of accepted sockets, at least 0, default reasonable value if not specified';
+
+Blockly.Msg.CocoRobo_USOCKET_BIND_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.bind';
+Blockly.Msg.CocoRobo_USOCKET_BIND_MESSAGE0 = 'Socket %1 bind with address %2 and port %3';
+Blockly.Msg.CocoRobo_USOCKET_BIND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.close';
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_MESSAGE0 = 'Close socket %1';
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_INIT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket';
+Blockly.Msg.CocoRobo_USOCKET_INIT_MESSAGE0 = 'Create socket %1 with af %2 and type %3';
+Blockly.Msg.CocoRobo_USOCKET_INIT_TOOLTIP = 'AF_INET:=2 — TCP/IP – IPv4\nAF_INET6 :=10 — TCP/IP – IPv6\nSOCK_STREAM:=1 — TCP stream\nSOCK_DGRAM:=2 — UDP datagram\nSOCK_RAW :=3 — Original socket\nSO_REUSEADDR : =4 — Socket reusable\n';
+
+
+Blockly.Msg.CocoRobo_GET_POST_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_POST_MESSAGE0 = '%1 request url %2 submit fields %3';
+//Blockly.Msg.CocoRobo_GET_POST_TOOLTIP = '*data*(optional)List of dictionaries or tuples or byte or object of class file sent in the body of the request \n*json*(optional)The json data sent in the body of the request \n*headers*(optional)Http header Dictionary sent with request';
+Blockly.Msg.CocoRobo_GET_POST_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_HELPURL = '';
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_MESSAGE0 = '%1 request url %2 submit fields %3';
+
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_MESSAGE0 = 'Post submit file %1 request url %2 file path %3 mime type %4 fields %5';
+
+Blockly.Msg.CocoRobo_RESPONSE_HELPURL = '';
+Blockly.Msg.CocoRobo_RESPONSE_MESSAGE0 = 'Return response content as %1';
+Blockly.Msg.CocoRobo_RESPONSE_TOOLTIP = '';
+
+Blockly.Msg.STRING = 'String';
+Blockly.Msg._BYTE = 'Byte';
+Blockly.Msg.TEXT = 'Text';
+
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_HELPURL = '';
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_MESSAGE0 = 'Response attribute %1';
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_TOOLTIP = '';
+
+
+Blockly.Msg.MICROBIT_MICROBIT_SLEEP_MESSAGE0 = 'Waiting for %1 %2';
+Blockly.Msg.CocoRobo_MS = 'Millisecond(ms)';
+Blockly.Msg.CocoRobo_US = 'Microsecond(μs)';
+
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_HELPURL = '';
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_MESSAGE0 = 'Return time difference from %1 to %2';
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_TOOLTIP = 'Measure the period between successive calls to ticks_ms (), ticks_us ()';
+
+Blockly.Msg.CocoRobo_TYPE_HELPURL = '';
+Blockly.Msg.CocoRobo_TYPE_MESSAGE0 = 'Type %1';
+Blockly.Msg.CocoRobo_TYPE_TOOLTIP = 'Returns the type of the current value';
+
+Blockly.Msg.CocoRobo_TYPE_IS_HELPURL = '';
+Blockly.Msg.CocoRobo_TYPE_IS_MESSAGE0 = 'Type %1 is %2';
+Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP = 'Set the type of the current value to %2 and return the result';
+
+Blockly.Msg.CocoRobo_EVAL_HELPURL = '';
+Blockly.Msg.CocoRobo_EVAL_MESSAGE0 = 'Eval %1';
+Blockly.Msg.CocoRobo_EVAL_TOOLTIP = 'Simulate a string expression and return the result';
+
+Blockly.Msg.CocoRobo_RETURN_HELPURL = '';
+Blockly.Msg.CocoRobo_RETURN_MESSAGE0 = 'Return %1';
+Blockly.Msg.CocoRobo_RETURN_TOOLTIP = 'Return a value';
+
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_MESSAGE0 = 'I2C digital ray';
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_HELPURL = '';
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_MESSAGE0 = 'Wi-Fi configuration information';
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_TOOLTIP = 'Returns all wifi configuration information as tuples';
+
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_MESSAGE0 = 'Has connected to Wi-Fi';
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_MESSAGE0 = 'Wi-Fi Connect voice assistant Wi-Fi name%1 password%2';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_TOOLTIP = 'Control board passes WIF to voice assistant through serial port';
+
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_TOOLTIP = 'Files need to be uploaded to the board on the file system first';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_MESSAGE0 = 'Read Voice Assistant Text Files %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_MESSAGE0 = 'Digital tube display %1';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_TOOLTIP = '-999~9999';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_MESSAGE0 = 'Clear the digital tube display';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MACHINE_RESET_HELPURL = '';
+Blockly.Msg.CocoRobo_MACHINE_RESET_MESSAGE0 = 'Reset';
+Blockly.Msg.CocoRobo_MACHINE_RESET_TOOLTIP = 'Same as pressing an external reset button';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_MESSAGE0 = 'I2C RGB color %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_MESSAGE0 = 'I2C RGB color';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_TOOLTIP = 'Returns as list';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_MESSAGE0 = 'I2C HSV color %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_MESSAGE0 = 'I2C HSV color';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_MESSAGE0 = 'I2C force sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_MESSAGE0 = 'I2C current sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_MESSAGE0 = 'I2C voltage sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_MESSAGE0 = 'I2C magnetic sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_MESSAGE0 = 'I2C PH sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_MESSAGE0 = 'I2C TDS sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_MESSAGE0 = 'I2C Pressure sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_MESSAGE0 = 'I2C Photogate Timer sensor  Dial code %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_TOOLTIP = 'I2C Address Corresponds to the Requirements of Coding Switches';
+
+Blockly.Msg.CocoRobo_RED = 'Red';
+Blockly.Msg.CocoRobo_GREEN = 'Green';
+Blockly.Msg.CocoRobo_BLUE = 'Blue';
+
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6 = 'Default';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_HELPURL = '';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_TOOLTIP = "";
+
+
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_MESSAGE0 = 'Play music %1 wait %2 loop %3 Pin %4';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_TOOLTIP = 'Play the built-in music, you can set the standby mode and loop playback.';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_MESSAGE0 = 'Play tone %1 %2 delay %3 millisecond(s) at Pin %4';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_TOOLTIP = 'Plays the tone for the set length of time.';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.pitch';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_MESSAGE0 = 'At Pin %5 play note list %1 wait %2 %3 loop %4';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_TOOLTIP = 'Play a list of notes, such as C4:4, G4:8, etc., the notes are in string form, the default pin is P6 of the cocorobo board';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buzz.html';
+Blockly.Msg.MICROBIT_MUSIC_RESET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.reset';
+Blockly.Msg.MICROBIT_MUSIC_RESET_MESSAGE0 = 'Restore music settings';
+Blockly.Msg.MICROBIT_MUSIC_RESET_TOOLTIP = 'Restore all music settings (current beats, scales, and periods) to their default values.';
+Blockly.Msg.MICROBIT_MUSIC_STOP_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.stop';
+Blockly.Msg.MICROBIT_MUSIC_STOP_MESSAGE0 = 'Stop playing music at Pin %1';
+Blockly.Msg.MICROBIT_MUSIC_STOP_TOOLTIP = 'The default pin is P6 of the cocorobo board';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_MESSAGE0 = 'Set each beat equal to %1 notes, the number of beats per minute is %2';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_TOOLTIP = 'Set the playback speed (beat). A certain number of tick represents a beat, the number of beats per minute per beat (BPM beats per minute).';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_MESSAGE0 = 'Set the playback speed to %1 times';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_TOOLTIP = 'The 4th note is 1 beat, and the number of beats per minute is 120 by default, which is 1 times the playback speed.';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_MESSAGE0 = 'Current beats';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_TOOLTIP = 'Get current beats: Taps per beat, beats per minute (BPM).';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.get_tempo';
+
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_MESSAGE0 = 'I2C %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_TEMPERATURE = 'Temperature';
+Blockly.Msg.CocoRobo_BLUEBIT_HUMIDITY = 'Humidity';
+
+/*教科板 - 扩展 - Bluebit - 结束 */
+
+
+Blockly.Msg.CocoRobo_UART_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_INIT_MESSAGE0 = "Initialize serial port %4 as baudrate %1 tx %2 rx %3";
+Blockly.Msg.CocoRobo_UART_INIT_TOOLTIP = 'CocoRobo board supports 3 sets of serial ports. 0 for repl, remaining 1, 2 sets of serial ports available. All pins can be used as the input of serial port rx, except P2, p3, p4, p10 can only be used as input, and all the other pins can be used as output tx. in theory.';
+
+Blockly.Msg.CocoRobo_UART_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_DEINIT_MESSAGE0 = 'Close serial port %1';
+Blockly.Msg.CocoRobo_UART_DEINIT_TOOLTIP = 'Turn off the UART bus';
+
+Blockly.Msg.CocoRobo_UART_WRITE_STR_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0 = 'Serial port %1 write string %2 %3';
+Blockly.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP = 'Write a text to the bus. \nReturn value: The number of bytes to write or None to time out.';
+
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_MESSAGE0 = 'Serial port %1 write hex string %2 %3';
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_UART_HAS_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_HAS_DATA_MESSAGE0 = 'Serial port %1 has readable data';
+Blockly.Msg.CocoRobo_UART_HAS_DATA_TOOLTIP = 'Returns an integer that counts the number of characters that can be read without blocking. \n If there are no characters available, it will return 0, if there are characters, it will return a positive number. \n This method can return 1 even if there are multiple readable characters.';
+
+Blockly.Msg.CocoRobo_UART_READLINE_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READLINE_MESSAGE0 = 'Serial port %1 read a line of data';
+Blockly.Msg.CocoRobo_UART_READLINE_TOOLTIP = 'Read a line and end with a newline character.\nReturn value: Read row or None timeout.';
+
+Blockly.Msg.CocoRobo_UART_READ_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READ_MESSAGE0 = 'Serial port %1 read data';
+Blockly.Msg.CocoRobo_UART_READ_TOOLTIP = 'Read as much serial data as possible.\n Return value: A list of bytes containing the bytes read. Returns None if the read times out.';
+
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_MESSAGE0 = 'Serial port %1 read data with length as %2';
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_TOOLTIP = 'Read the specified length bytes data.\n Return value: A list of bytes containing the bytes read. Returns None if the read times out.';
+
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0 = 'Serial port %1 write a byte %2';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP = 'The parameter is a integer as 0~255\nWrite a byte to the bus. \nReturn value: The number of bytes to write or None to time out.';
+
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0 = 'Serial port %1 write bytes %2';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP = 'Write some bytes to the bus. \nReturn value: The number of bytes to write or None to time out.';
+
+// 格式化字符串 % 方式
+Blockly.Msg.TEXT_FORMAT_MESSAGE0 = 'Format string %1 % %2';
+Blockly.Msg.TEXT_FORMAT_TOOLTIP = 'Use "%" to format the string and return the result';
+Blockly.Msg.TEXT_FORMAT_HELPURL = '';
+
+// 格式化字符串 format 方式
+Blockly.Msg.TEXT_FORMAT2_MESSAGE0 = 'Format string %1 with %2';
+Blockly.Msg.TEXT_FORMAT2_TOOLTIP = 'Use "format" to format the string and return the result';
+Blockly.Msg.TEXT_FORMAT2_HELPURL = '';
+
+Blockly.Msg.CocoRobo_BAUDRATE_HELPURL = '';
+Blockly.Msg.CocoRobo_BAUDRATE_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_BAUDRATE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_HIGH_LOW_HELPURL = '';
+Blockly.Msg.CocoRobo_HIGH_LOW_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_HIGH_LOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL = '';
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0 = "Decimal int num %1 converted to %2 string";
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP = 'Convert a decimal integer to a %2 string and return the result';
+
+Blockly.Msg.CocoRobo_BIN = 'BIN';
+Blockly.Msg.CocoRobo_OCT = 'OCT';
+Blockly.Msg.CocoRobo_HEX = 'HEX';
+
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL = '';
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0 = "%1 string %2 converted to decimal int num";
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP = 'Convert a %2 string to a decimal integer and return the result';
+
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL = '';
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0 = "Decimal int num %2 converted to %1 bytes";
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP = 'Convert a decimal integer to %1 bytes and return the result';
+
+Blockly.Msg.CocoRobo_INT_TO_CHR_HELPURL = '';
+Blockly.Msg.CocoRobo_INT_TO_CHR_MESSAGE0 = 'Shaping number %1 converted to character in ASCII';
+Blockly.Msg.CocoRobo_INT_TO_CHR_TOOLTIP = 'ASCII is a computer coding system based on the Latin alphabet, mainly used to display modern English and other Western European languages';
+
+Blockly.Msg.CocoRobo_STR_TO_HEX_HELPURL = '';
+Blockly.Msg.CocoRobo_STR_TO_HEX_MESSAGE0 = 'String %1 converted to hex bytes';
+Blockly.Msg.CocoRobo_STR_TO_HEX_TOOLTIP = 'Returns two hexadecimal numbers separated by spaces in the result';
+
+Blockly.Msg.CocoRobo_CHR_TO_INT_HELPURL = '';
+Blockly.Msg.CocoRobo_CHR_TO_INT_MESSAGE0 = 'Character in ASCII %1 converted to shaping number';
+Blockly.Msg.CocoRobo_CHR_TO_INT_TOOLTIP = 'ASCII is a computer coding system based on the Latin alphabet, mainly used to display modern English and other Western European languages';
+
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL = '';
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0 = 'Hex string %1 converted to bin bytes';
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP = 'Convert hexadecimal string to binary byte and return the result';
+
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_HELPURL = '';
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0 = 'Encoding data %1 in base64 and return byte object';
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP = 'Base64 encoding is a process from binary to character';
+
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0 = 'Decoding base64 data %1 and return byte object';
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP = 'Base64 encoding is a process from binary to character';
+
+Blockly.Msg.CocoRobo_UJSON_DUMPS_HELPURL = '';
+Blockly.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0 = '%1 converted to json string';
+Blockly.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP = 'Key in json format must be a string, and value can be a legitimate json data type (string, number, object, array, Boolean, or none';
+
+Blockly.Msg.CocoRobo_UJSON_LOADS_HELPURL = '';
+Blockly.Msg.CocoRobo_UJSON_LOADS_MESSAGE0 = 'Parse json string %1 and return the object';
+Blockly.Msg.CocoRobo_UJSON_LOADS_TOOLTIP = 'Key in json format must be a string, and value can be a legitimate json data type (string, number, object, array, Boolean, or none';
+
+Blockly.Msg.CocoRobo_code_annotation_HELPURL = '';
+Blockly.Msg.CocoRobo_code_annotation_MESSAGE0 = 'Comment # %1';
+Blockly.Msg.CocoRobo_code_annotation_TOOLTIP = 'Generate code comments';
+
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/board/hardware.html#CocoRobopindesc';
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP = 'Right-click help to view the pin declaration';
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0 = 'Set pin %1 as %2 mode %3 and set the value to %4';
+
+Blockly.Msg.CocoRobo_SET_PIN_IN = 'Input';
+Blockly.Msg.CocoRobo_SET_PIN_PUSH_PULL_OUT = 'Push-pull output';
+Blockly.Msg.CocoRobo_SET_PIN_LEAKY_OUT = 'Leaky output';
+
+Blockly.Msg.CocoRobo_SET_PIN_NO_PULL = 'No pull';
+Blockly.Msg.CocoRobo_SET_PIN_DOWN_PULL = 'Ppull down';
+Blockly.Msg.CocoRobo_SET_PIN_UP_PULL = 'Pull up';
+
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL = '';
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0 = "Thread lock object %1 requests lock";
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_START_NEW_THREAD_HELPURL = '';
+Blockly.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0 = "Thread %1";
+Blockly.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP = '';
+
+
+
+/* 教科板_物联网 */
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0 = "Custom terminal widget on virtual pin V %1";
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_MESSAGE0 = "Synchronizing the status of virtual pin V %1";
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_MESSAGE0 = "When Blynk disconnected";
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_MESSAGE0 = "When Blynk connected";
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_MESSAGE0 = "Run the BlynkTimer processes";
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_TOOLTIP = 'It is recommended to put this block in \'repeat forever\' block';
+
+Blockly.Msg.CocoRobo_BLYNK_RUN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_RUN_MESSAGE0 = "Run the Blynk processes";
+Blockly.Msg.CocoRobo_BLYNK_RUN_TOOLTIP = 'It is recommended to put this block in \'repeat forever\' block';
+
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_MESSAGE0 = "Blynk APP notifies %1";
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNKTIMER_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNKTIMER_MESSAGE0 = "BlynkTimer number %1 mode %2 period %3 seconds";
+Blockly.Msg.CocoRobo_BLYNKTIMER_TOOLTIP = 'Note:\nthe serial number of the timer is automatically obtained, from top to bottom, starting from 0 and continuous, don`t do this"timer 0, timer 2", the exposed serial number parameter is convenient to view here!\nParameter:\nno_timers_err=False - disable exception raise if all all timers were stopped';
+
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_MESSAGE0 = 'Stop Blynk timer %1';
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_TOOLTIP =
+    'Note:\nthe serial number of the timer is automatically obtained, from top to bottom, starting from 0 and continuous, don`t do this"timer 0, timer 2", the exposed serial number parameter is convenient to view here!\nParameter:\nno_timers_err=False - disable exception raise if all all timers were stopped';
+
+Blockly.Msg.CocoRobo_UART_INPUT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_INPUT_MESSAGE0 = 'Get input text from serial port, title %1';
+Blockly.Msg.CocoRobo_UART_INPUT_TOOLTIP = ''
+
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_MESSAGE0 = 'Set property %1 and value %2 to virtual pin';
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_TOOLTIP = "Placed in a read or write event, the virtual pin is determined by the event,the component bound to the pin will have the added property";
+
+
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_MESSAGE0 = 'Email to pre-set email address with %1 subject %2 body %3';
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_MESSAGE0 = 'Available Blynk timers';
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0 = "Send data %1 to Blynk APP's virtual pin V %2";
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP = 'Virtual pin: V0 ~ V255';
+
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_MESSAGE0 = 'When received value %2 of virtual pin V %1 from Blynk APP';
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_TOOLTIP = 'Virtual pin: V0 ~ V255';
+
+Blockly.Msg.CocoRobo_BLYNK_SETUP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SETUP_MESSAGE0 = 'Blynk Settings %1 server %2 port %3 authorization code %4';
+Blockly.Msg.CocoRobo_BLYNK_SETUP_TOOLTIP = 'The server can be set to "blynk-cloud.com" or "blynk.cocorobo.cn"\n The default port is 8080\n Note: The mobile APP access port is 9443.';
+
+Blockly.Msg.INT_TO_CHR_HELPURL = ''
+Blockly.Msg.INT_TO_CHR_MESSAGE0 = 'Int %1 to ASCII single character';
+Blockly.Msg.INT_TO_CHR_TOOLTIP = ''
+
+Blockly.Msg.a123_HELPURL = ''
+Blockly.Msg.a123_MESSAGE0 = '新 %1'
+Blockly.Msg.a123_TOOLTIP = ""
+
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_MESSAGE0 = 'Disconnect from OneNET';
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_RECV_MESSAGE0 = 'When received message %1 from OneNET';
+Blockly.Msg.CocoRobo_ONENET_RECV_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_MESSAGE0 = 'When received specific message %1 from OneNET';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_MESSAGE0 = 'Publish data to OneNET, name %1 value %2';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_MESSAGE0 = 'Publish data to OneNET %1';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0 = '%1 hcsr04 untrasonic distance, unit %2';
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP = ''
+
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0 = '%1 hcsr04 untrasonic(mm)';
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP = ''
+
+Blockly.Msg.CocoRobo_HCSR04_OBJ_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0 = 'Hcsr04 ultrasonic initialize name %1 trigger %2 echo %3';
+Blockly.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP = ''
+
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_HELPURL = ''
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0 = 'RX pin %1 Number of particles with diameter of %2 in 0.1 liter air';
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP = ''
+
+Blockly.Msg.CocoRobo_PM2_5_MIC_HELPURL = ''
+Blockly.Msg.CocoRobo_PM2_5_MIC_MESSAGE0 = 'RX pin %1 PM value concentration %2';
+Blockly.Msg.CocoRobo_PM2_5_MIC_TOOLTIP = ''
+
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_MESSAGE0 = 'Infrared receive %1 callback address %2 callback command %3';
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_MESSAGE0 = 'Infrared send %1 address %2 command %3';
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_MESSAGE0 = 'Publish data to Wechat app, name %1 value %2';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_ACCEPT_MESSAGE = 'If received message';
+Blockly.Msg.CocoRobo_ONENET = 'OneNET settings';
+Blockly.Msg.CocoRobo_ONENET_WECHAT_APP = 'Wechat app settings';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS = 'Optional cocorobo boards';
+Blockly.Msg.CocoRobo_ONENET_TITLE = 'OneNET';
+Blockly.Msg.CocoRobo_SERVER = 'Server';
+Blockly.Msg.CocoRobo_DEVICE_ID = 'Device_id';
+Blockly.Msg.CocoRobo_PRODUCT_ID = 'Product_id';
+Blockly.Msg.CocoRobo_API_KEY = 'Product_APIKey';
+Blockly.Msg.CocoRobo_TOPIC = 'Topic';
+Blockly.Msg.CocoRobo_ONENET_CALLBACK = 'Callback function';
+Blockly.Msg.CocoRobo_ONENET_CALLBACK_TITLE = "OneNET callback";
+
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_MESSAGE0 = 'Choose cocorobo App %1 in WeChat App';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_TOOLTIP = '';
+
+// text转字节
+Blockly.Msg.TEXT_TO_BYTE_MESSAGE0 = 'Convert %1 to bytes';
+Blockly.Msg.TEXT_TO_BYTE_TOOLTIP = 'Supported data type as string';
+Blockly.Msg.TEXT_TO_BYTE_HELPURL = '';
+// 非文本转字节
+Blockly.Msg.OTHER_TO_BYTE_MESSAGE0 = 'Convert Non-text %1 to bytes';
+Blockly.Msg.OTHER_TO_BYTE_TOOLTIP = '';
+Blockly.Msg.OTHER_TO_BYTE_HELPURL = '';
+
+
+Blockly.Msg.CocoRobo_BYTES_DECODE_HELPURL = '';
+Blockly.Msg.CocoRobo_BYTES_DECODE_MESSAGE0 = 'Convert bytes %1 to string';
+Blockly.Msg.CocoRobo_BYTES_DECODE_TOOLTIP = 'Return the result of the specified byte to string'
+
+
+
+Blockly.Msg.CocoRobo_ONENET_TOOLTIP = 'Create a OneNET connection';
+
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_MESSAGE0 = 'IoT  make sure to connect to Wi-Fi with SSID %1 & Password %2';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_TOOLTIP = 'Let the board access the Wi-Fi environment';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_MESSAGE0 = 'When receives %1 and %2 from WeChat App';
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_TOOLTIP = '';
+
+/* 教科板_物联网 */
+
+
+/* 教科板start */
+Blockly.Msg.CocoRobo_MAC_ADDRESS_HELPURL = '';
+Blockly.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0 = 'MAC Address';
+Blockly.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_RADIO_REC_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_REC_MESSAGE0 = 'Radio received';
+Blockly.Msg.CocoRobo_RADIO_REC_TOOLTIP = 'Received data is bytes';
+
+Blockly.Msg.CocoRobo_RADIO_SEND_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_SEND_MESSAGE0 = 'Radio sends %1';
+Blockly.Msg.CocoRobo_RADIO_SEND_TOOLTIP = 'Channel: 1~13';
+
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_MESSAGE0 = 'Set radio channel %1';
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_TOOLTIP = 'Channel: 1~13';
+
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_MESSAGE0 = '%1 radio';
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_TOOLTIP = 'Channel: 1~13';
+
+Blockly.Msg.CocoRobo_RADIO_RECV_MESSAGE0 = 'When receiving broadcast message %1 from Radio';
+Blockly.Msg.CocoRobo_RADIO_RECV_TOOLTIP = 'Channel: 1~13';
+Blockly.Msg.CocoRobo_RADIO_RECV_HELPURL = '';
+
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_MESSAGE0 = 'When receiving specific broadcast message %1 from Radio';
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_TOOLTIP = 'Channel: 1~13';
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_1 = 'Normal';
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_2 = 'Rev';
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_3 = 'Trans';
+
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_MESSAGE0 = 'TTS play text %1';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_TOOLTIP = 'The "Online Speech Synthesis" service needs to be enabled on the "Xunfei Open Platform" www.xfyun.cn';
+
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/extboard/tutorials/tutorials_parrot.html#id3';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_MESSAGE0 = 'TTS config APPID %1 APIKey %2';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_TOOLTIP = 'Enter the APPID and APIKey obtained on the "Xunfei Open Platform" www.xfyun.cn\nNote: To set the IP whitelist';
+
+Blockly.Msg.CocoRobo_AUDIO_PLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_PLAY_MESSAGE0 = 'Audio play %1';
+Blockly.Msg.CocoRobo_AUDIO_PLAY_TOOLTIP = "Need active speakers\nP8 left channel\nP9 right channel\nGND ground\nparameter: \n the url of the network mp3, or the mp3 that has been uploaded to the cocorobo board, e.g 'music_1.mp3'";
+
+
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_MESSAGE0 = 'Deinit Audio';
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_TOOLTIP = 'Create a cache for controlling the audio decoding';
+
+Blockly.Msg.CocoRobo_AUDIO_CMD_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_CMD_MESSAGE0 = 'Audio %1';
+Blockly.Msg.CocoRobo_AUDIO_CMD_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AUDIO_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_INIT_MESSAGE0 = 'Initialize Audio';
+Blockly.Msg.CocoRobo_AUDIO_INIT_TOOLTIP = 'Create a cache for controlling the audio decoding';
+
+Blockly.Msg.CocoRobo_RECORD_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_INIT_MESSAGE0 = 'Testing -- initialize Recording';
+Blockly.Msg.CocoRobo_RECORD_INIT_TOOLTIP = 'Recording initialization.\nThis block is in the test, need cocorobo board v1.1 or above hardware version.';
+
+Blockly.Msg.CocoRobo_RECORD_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_DEINIT_MESSAGE0 = 'Testing -- release cache of Recording';
+Blockly.Msg.CocoRobo_RECORD_DEINIT_TOOLTIP = 'Release the cache after the recording ends.\nThis block is in the test, need cocorobo board v1.1 or above hardware version.';
+
+Blockly.Msg.CocoRobo_RECORD_WAV_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_WAV_MESSAGE0 = 'Testing -- record audio with storage path %1 and duration %2 second(s)';
+Blockly.Msg.CocoRobo_RECORD_WAV_TOOLTIP = 'Record audio and store it in *.wav format.\nThis block is in the test, need cocorobo board v1.1 or above hardware version.';
+
+Blockly.Msg.CocoRobo_ASR_HELPURL = '';
+Blockly.Msg.CocoRobo_ASR_MESSAGE0 = 'Testing -- return the result of speech recognition';
+Blockly.Msg.CocoRobo_ASR_TOOLTIP = 'Speech command need to be completed in 2 seconds.\nThis block is in the test, need cocorobo board v1.1 or above hardware version.';
+
+Blockly.Msg.CocoRobo_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_button_A = 'P5 (button A)';
+Blockly.Msg.CocoRobo_button_B = 'P11 (button B)';
+Blockly.Msg.CocoRobo_PIN7_RGB = 'P7 (Onboard RGB)';
+
+Blockly.Msg.CocoRobo_PWM_PIN_P7 = 'P7 (cocorobo board)';
+Blockly.Msg.CocoRobo_PWM_PIN_P9 = 'P9 (cocorobo box)';
+
+Blockly.Msg.CocoRobo_tem = 'Temperature';
+Blockly.Msg.CocoRobo_hum = 'Humidity';
+Blockly.Msg.CocoRobo_pre = 'Air pressure';
+Blockly.Msg.CocoRobo_left_right = 'Left-right';
+Blockly.Msg.CocoRobo_front_back = 'Front-back';
+Blockly.Msg.CocoRobo_vertical = 'Vertical';
+Blockly.Msg.CocoRobo_horizontal = 'Horizontal';
+Blockly.Msg.CocoRobo_run_in_back = 'Background';
+Blockly.Msg.CocoRobo_run_in_front = 'Foreground';
+Blockly.Msg.CocoRobo_draw = 'Draw';
+Blockly.Msg.CocoRobo_clear = 'Clear';
+Blockly.Msg.CocoRobo_s = 'Second';
+Blockly.Msg.CocoRobo_ms = 'Millisecond';
+Blockly.Msg.CocoRobo_us = 'Microsecond';
+Blockly.Msg.CocoRobo_year = 'Year';
+Blockly.Msg.CocoRobo_month = 'Month';
+Blockly.Msg.CocoRobo_date = 'Day';
+Blockly.Msg.CocoRobo_hour = 'Hour';
+Blockly.Msg.CocoRobo_minute = 'Minute';
+Blockly.Msg.CocoRobo_week = 'Week number';
+Blockly.Msg.CocoRobo_days = 'Days number';
+
+Blockly.Msg.CocoRobo_ORDER = '#';
+Blockly.Msg.CocoRobo_REVERSE_ORDER = 'Countdown #';
+
+Blockly.Msg.MATH_RANDOM_RANDRANGE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP = 'Returns a random number in the specified incremental cardinality set, the base value defaults to 1';
+Blockly.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0 = 'Random number increments from increment interval [%1 , %2) by step %3';
+
+Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL = '';
+Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP = 'Returns the result of the specified value keeping the decimal point';
+Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0 = '%1 keep %2 decimal places';
+
+Blockly.Msg.CocoRobo_MIN = 'Min value';
+Blockly.Msg.CocoRobo_MAX = 'Max value';
+Blockly.Msg.CocoRobo_LENTH = 'length';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP = 'Return %2 of tuple';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0 = 'Tuple %1 %2';
+
+Blockly.Msg.TUPLE_ITEM_EXIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_ITEM_EXIST_TOOLTIP = 'Determine whether the specified value is included, and return True or False';
+Blockly.Msg.TUPLE_ITEM_EXIST_MESSAGE0 = 'Tuple %1 include %2';
+
+Blockly.Msg.LIST_ITEM_EXIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LIST_ITEM_EXIST_TOOLTIP = 'The list contains a specific string';
+Blockly.Msg.LIST_ITEM_EXIST_MESSAGE0 = 'List %1 include %2';
+
+Blockly.Msg.PARTS_OF_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_TUPLE_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
+Blockly.Msg.PARTS_OF_TUPLE_MESSAGE0 = 'Return tuple %1 from the %2 to the last item';
+
+Blockly.Msg.PARTS_OF_TUPLE2_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_TUPLE2_TOOLTIP = 'Incremental order fetching \n Example: \n reciprocal number 5 to reciprocal number 2; \n 0th to 5th';
+Blockly.Msg.PARTS_OF_TUPLE2_MESSAGE0 = 'Return tuple %1 takes %2 %3 items to %4 %5 items';
+
+Blockly.Msg.PARTS_OF_LIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_LIST_TOOLTIP = 'Incremental order fetching \n Example: \n reciprocal number 5 to reciprocal number 2; \n 0th to 5th';
+Blockly.Msg.PARTS_OF_LIST_MESSAGE0 = 'Return list %1 takes %2 %3 items to %4 %5 items';
+
+Blockly.Msg.LIST_TO_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LIST_TO_TUPLE_TOOLTIP = 'List conversion to tuple';
+Blockly.Msg.LIST_TO_TUPLE_MESSAGE0 = 'List %1 conversion to tuple';
+
+
+Blockly.Msg.tuple_create_with_MESSAGE0 = 'Define tuple %1 = %2 ';
+Blockly.Msg.tuple_create_with_TOOLTIP = 'When you only have one element, you need to add a comma after the element';
+Blockly.Msg.tuple_create_with_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.tuple_order_item_MESSAGE0 = 'Tuple %1 %2 %3 item';
+Blockly.Msg.tuple_order_item_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
+Blockly.Msg.tuple_order_item_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.LIST_ORDER_ITEM_MESSAGE0 = 'List %1 %2 %3 item';
+Blockly.Msg.LIST_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
+Blockly.Msg.LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.SET_LIST_ORDER_ITEM_MESSAGE0 = 'Set list %1 %2 %3 item as %4';
+Blockly.Msg.SET_LIST_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
+Blockly.Msg.SET_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0 = 'Insert list %1 %2 %3 item as %4';
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_MESSAGE0 = 'Set tuple %1 %2 %3 item as %4';
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+
+Blockly.Msg.DICT_CREATE_WITH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_CREATE_WITH_TOOLTIP = 'Define a dictionary';
+Blockly.Msg.DICT_CREATE_WITH_MESSAGE0 = 'Define dictionary %1 = %2';
+
+Blockly.Msg.SET_CREATE_WITH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_CREATE_WITH_TOOLTIP = 'Define collection';
+Blockly.Msg.SET_CREATE_WITH_MESSAGE0 = 'Define set %1 = %2';
+
+Blockly.Msg.SET_UPDATE_WITH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_UPDATE_WITH_TOOLTIP = 'Add parameters as strings, lists, tuples, sets, dictionaries (add only key). For existing elements, do not do anything';
+Blockly.Msg.SET_UPDATE_WITH_MESSAGE0 = 'Update set %1 with %2';
+
+Blockly.Msg.INTERSECTION_OF_SETS_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP = 'Return %1 of both collection';
+Blockly.Msg.INTERSECTION_OF_SETS_MESSAGE0 = '%1 of set %2 and set %3';
+Blockly.Msg.CocoRobo_INTERSECTION = 'Intersection';
+Blockly.Msg.CocoRobo_UNION = 'Union';
+Blockly.Msg.CocoRobo_DIFFERENCE = 'Difference';
+Blockly.Msg.SETS_UPDATE_WAYS_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP = 'The collection is updated to the %3 of the specified collection';
+Blockly.Msg.SETS_UPDATE_WAYS_MESSAGE0 = 'Update set %1  as the %3 with set %2';
+Blockly.Msg.SUBSET_SUPERSET_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SUBSET_SUPERSET_TOOLTIP = 'Collection is %3 of collection';
+Blockly.Msg.SUBSET_SUPERSET_MESSAGE0 = 'Set %1 is %3 of set %2';
+Blockly.Msg.CocoRobo_SUBSET = 'Subset';
+Blockly.Msg.CocoRobo_SUPERSET = 'Superset';
+
+Blockly.Msg.GET_SETS_POP_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.GET_SETS_POP_TOOLTIP = 'Return the collection with random items removed';
+Blockly.Msg.GET_SETS_POP_MESSAGE0 = 'Return a random item from the set %1, and remove it';
+
+Blockly.Msg.LEN_OF_SETS_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LEN_OF_SETS_TOOLTIP = 'Returns the length of the specified collection';
+Blockly.Msg.LEN_OF_SETS_MESSAGE0 = 'Length of set %1';
+
+Blockly.Msg.CREATE_EMPTY_SET_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CREATE_EMPTY_SET_TOOLTIP = '';
+Blockly.Msg.CREATE_EMPTY_SET_MESSAGE0 = 'Create empty sets %1';
+
+Blockly.Msg.BIT_INVERSION_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.BIT_INVERSION_TOOLTIP = 'Reverse each binary bit of data';
+Blockly.Msg.BIT_INVERSION_MESSAGE0 = 'Invert each binary bit of the data %1';
+
+Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
+
+Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_TOOLTIP = 'Items can be strings, assigned variables, tuples';
+
+Blockly.Msg.DICT_CREATE_WITH_ITEMS_INSERT_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_CREATE_WITH_ITEMS_INSERT_TOOLTIP = 'Initialize the dictionary';
+
+
+Blockly.Msg.DICT_KEY_VALUE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_VALUE_TOOLTIP = 'Returns the value of the specified key of the dictionary';
+Blockly.Msg.DICT_KEY_VALUE_MESSAGE0 = 'Value of the key %2 in dictionary %1';
+
+Blockly.Msg.ADD_DICT_KEY_VALUE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.ADD_DICT_KEY_VALUE_TOOLTIP = 'Update the key if the key already exists';
+Blockly.Msg.ADD_DICT_KEY_VALUE_MESSAGE0 = 'Add key %2 & value %3 to dictionary %1';
+
+Blockly.Msg.DICT_LENGTH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_LENGTH_TOOLTIP = 'Returns the length of the dictionary';
+Blockly.Msg.DICT_LENGTH_MESSAGE0 = 'Length of dictionary %1';
+
+Blockly.Msg.DICT_KEY_EXIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_EXIST_TOOLTIP = 'Determine whether the dictionary contains the specified key, and return True or False';
+Blockly.Msg.DICT_KEY_EXIST_MESSAGE0 = 'Dictionary %1 include key %2';
+
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP = 'Return list of %2 in dictionary';
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0 = 'List of %2 in dictionary %1';
+Blockly.Msg.DICT_KEYS = 'KEY';
+Blockly.Msg.DICT_VALUES = 'VALUE';
+
+
+Blockly.Msg.CocoRobo_lists_append_MESSAGE0 = 'Add item %2 at the end of list %1';
+Blockly.Msg.CocoRobo_lists_append_TOOLTIP = 'Add item to the end of the list';
+Blockly.Msg.CocoRobo_lists_append_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_lists_extend_MESSAGE0 = 'List %1 append list %2';
+Blockly.Msg.CocoRobo_lists_extend_TOOLTIP = 'Append list to list';
+Blockly.Msg.CocoRobo_lists_extend_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+// Blockly.Msg.CocoRobo_lists_remove_MESSAGE0 = '列表%1 移除第%2 项';
+// Blockly.Msg.CocoRobo_lists_remove_TOOLTIP = '从第0项开始';
+// Blockly.Msg.CocoRobo_lists_remove_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_lists_clear_MESSAGE0 = 'Clear list %1';
+Blockly.Msg.CocoRobo_lists_clear_TOOLTIP = 'Clear the list';
+Blockly.Msg.CocoRobo_lists_clear_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+
+Blockly.Msg.CocoRobo_Timer_value_MESSAGE0 = 'Timer %1 count value';
+Blockly.Msg.CocoRobo_Timer_value_TOOLTIP = 'Get and return the current count value of the timer';
+
+Blockly.Msg.CocoRobo_Timer_deinit_MESSAGE0 = 'Clear timer / event %1';
+Blockly.Msg.CocoRobo_Timer_deinit_TOOLTIP = 'Cancel the initialization of the timer. Stop timer and disable timer peripherals';
+
+Blockly.Msg.CocoRobo_Interrupt_AB_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buttons.html#id3';
+Blockly.Msg.CocoRobo_Interrupt_AB_TOOLTIP = '';
+Blockly.Msg.CocoRobo_Interrupt_AB_MESSAGE0 = 'When the button %1 is %2';
+
+Blockly.Msg.CocoRobo_Interrupt_pin_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/io/digital_io.html#id3';
+Blockly.Msg.CocoRobo_Interrupt_pin_TOOLTIP = 'Rising edge trigger: from low level to high level; falling edge trigger: from high level to low level';
+Blockly.Msg.CocoRobo_Interrupt_pin_MESSAGE0 = 'When pin %1 level is from %2';
+Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_FALLING = '↘ high to low';
+Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_RISING = '↗ low to high';
+
+Blockly.Msg.CocoRobo_IRQ_FALLING = 'Pressed';
+Blockly.Msg.CocoRobo_IRQ_RISING = 'Released';
+Blockly.Msg.CocoRobo_PERIODIC = 'Repeated mode';
+Blockly.Msg.CocoRobo_ONE_SHOT = 'Delayed mode';
+
+Blockly.Msg.CocoRobo_IS_SHAKED_MESSAGE0 = 'The board %1';
+Blockly.Msg.CocoRobo_IS_SHAKED_HELPURL = '';
+Blockly.Msg.CocoRobo_IS_SHAKED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IS_SHAKED = 'Was shaked';
+Blockly.Msg.CocoRobo_IS_THROWN = 'Was thrown';
+
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_MESSAGE0 = 'When the board %1';
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_HELPURL = '';
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IS_TILTED_MESSAGE0 = 'The board is %1';
+Blockly.Msg.CocoRobo_IS_TILTED_HELPURL = '';
+Blockly.Msg.CocoRobo_IS_TILTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TILT_DETECTOR_MESSAGE0 = 'When the board is %1';
+Blockly.Msg.CocoRobo_TILT_DETECTOR_HELPURL = '';
+Blockly.Msg.CocoRobo_TILT_DETECTOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DIRECTION_FORWARD = 'Tilt forward';
+Blockly.Msg.CocoRobo_DIRECTION_BACK = 'Tilt back';
+Blockly.Msg.CocoRobo_DIRECTION_RIGHT = 'Tilt right';
+Blockly.Msg.CocoRobo_DIRECTION_LEFT = 'Tilt left';
+Blockly.Msg.CocoRobo_DIRECTION_NONE = 'Flat';
+
+Blockly.Msg.CocoRobo_TOUCH_EVENT_MESSAGE0 = 'When the touchpad %1 is %2';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_HELPURL = '';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TOUCH_EVENT_PRESSED = 'Pressed';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_UNPRESSED = 'Unpressed';
+
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_MESSAGE0 = 'Event %1 : when %2';
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_HELPURL = '';
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_TOOLTIP = 'Custom events use port 1/2/4/7/8/9/10, shared with Timers, cannot access one port at the same time.\nMax up to 4 events/timers at the same time.\nIf there is conflict, try changing the number.';
+
+Blockly.Msg.CocoRobo_music_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_music_range_pitch_TOOLTIP = 'Duration is the length of a single frequency';
+Blockly.Msg.CocoRobo_music_range_pitch_MESSAGE0 = 'Play tone from %1 to %2 step %3 duration %4 ms  Pin %5';
+
+Blockly.Msg.CocoRobo_neopixel_init_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_neopixel_init_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_init_MESSAGE0 = 'Initialize light strip with Name %1 Pin %2 Quantity %3';
+
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_MESSAGE0 = 'Define rainbow effect of light strip with Name %1 Quantity %2 bright %3 offset %4';
+
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/micropython/neopixel.html#NeoPixel.brightness';
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_TOOLTIP = 'Adjust the brightness range of 0 to 100';
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_MESSAGE0 = 'Light strip %1 set brightness as %2';
+
+Blockly.Msg.CocoRobo_neopixel_single_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_single_MESSAGE0 = 'Light strip %1 # %2 R %3 G %4 B %5';
+
+Blockly.Msg.CocoRobo_neopixel_single_gui_MESSAGE0 = 'Light strip %1 # %2 color as %3';
+Blockly.Msg.CocoRobo_neopixel_single_gui_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_neopixel_show_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_show_MESSAGE0 = 'Light strip %1 setting take effect';
+
+Blockly.Msg.CocoRobo_neopixel_off_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_off_MESSAGE0 = 'Light strip %1 off';
+
+Blockly.Msg.CocoRobo_neopixel_all_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_all_MESSAGE0 = 'Light strip %1 full bright R %2 G %3 B %4';
+
+Blockly.Msg.CocoRobo_neopixel_all_gui_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_all_gui_MESSAGE0 = 'Light strip %1 full bright with color %2';
+
+//Blockly.Msg.CocoRobo_image_to_lcd_MESSAGE0 ='open image %1 width %2 height %3';
+//Blockly.Msg.CocoRobo_image_to_lcd_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_time_localtime_MESSAGE0 = 'Local time %1';
+Blockly.Msg.CocoRobo_time_localtime_TOOLTIP = 'Week number: return 0 to 6, Monday is 0, Sunday is 6\nDays number: return the position of the day in the year\nIt is recommended to connect wifi and get network time first.';
+
+Blockly.Msg.CocoRobo_WiFi_config_MESSAGE0 = 'Wi-Fi configuration information %1';
+Blockly.Msg.CocoRobo_WiFi_config_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_time_ticks_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_time_ticks_MESSAGE0 = 'Run time %1';
+Blockly.Msg.CocoRobo_time_ticks_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_Timer_MESSAGE0 = 'Set timer %1 %2 , cycle %3 millisecond(s)';
+Blockly.Msg.CocoRobo_Timer_TOOLTIP = 'Create timer n, n=1-14.\nMax up to 4 timers at the same time.\nIf there is conflict, try changing the number.\n3 for internal program,\n5/6 for servo system and ADC,\n11 is used for shaked event,\n12 is used for touchpad event,\n13 is used for Radio or DHT11/DHT22 timing value,\n14 is used for OneNET or tilt detection,\nothers ports are shared with custom events.';
+Blockly.Msg.CocoRobo_Timer_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/blocks/index.html';
+
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0 = 'BME280 %1';
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP = 'Air pressure unit is \'Pa\', temperature unit is \'Celsius\', ambient humidity unit is \'%\'';
+
+//Blockly.Msg.CocoRobo_sway_xyz_MESSAGE0 ='%1 摇晃教科板';
+//Blockly.Msg.CocoRobo_sway_xyz_TOOLTIP = "教科板正面朝上,触摸键 'python' 靠近使用者,开始左右或前后摇晃教科板";
+
+Blockly.Msg.CocoRobo_init_bluetooth_MESSAGE0 = 'Initialize Bluetooth Name %1';
+Blockly.Msg.CocoRobo_init_bluetooth_TOOLTIP = 'Initialize Bluetooth Name';
+
+Blockly.Msg.CocoRobo_OnOff_bluetooth_MESSAGE0 = 'Bluetooth device %1 broadcasting';
+Blockly.Msg.CocoRobo_OnOff_bluetooth_TOOLTIP = 'Bluetooth devices turn on or off broadcasting';
+
+Blockly.Msg.CocoRobo_HID_consumer_bluetooth_MESSAGE0 = 'HID Consumption Equipment%1 Status%2';
+Blockly.Msg.CocoRobo_HID_consumer_bluetooth_TOOLTIP = 'Controllers that simulate HID consumer devices, such as Bluetooth remote controls';
+
+Blockly.Msg.CocoRobo_HID_mouse_bluetooth_MESSAGE0 = 'HID Mouse button%1';
+Blockly.Msg.CocoRobo_HID_mouse_bluetooth_TOOLTIP = 'HID Mouse button';
+
+Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_MESSAGE0 = 'Mouse pointer movement x%2 y%1';
+Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_TOOLTIP = 'Relative Displacement of Mouse Pointer Coordinates X and Y,Range -1023 ~ 1023';
+
+Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_MESSAGE0 = 'Mouse Release Key';
+Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_TOOLTIP = 'Mouse device';
+
+Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_MESSAGE0 = 'HID Keyboard device keys%1';
+Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_TOOLTIP = 'HID keyboard equipment';
+
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0 = 'HID device keys%1 combination keys%2';
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP = 'If you want to use multiple keystrokes to combine instructions, you can use "|" or arithmetic';
+
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_MESSAGE0 = 'HID Device combination key%1';
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_TOOLTIP = 'If you want to use multiple key combinations of instructions, you can use "|" or operation';
+
+Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_MESSAGE0 = 'Keyboard Release Key';
+Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_TOOLTIP = 'Keyboard equipment';
+
+Blockly.Msg.CocoRobo_init_wifi_MESSAGE0 = 'Connect to Wi-Fi with SSID %1 & Password %2';
+Blockly.Msg.CocoRobo_init_wifi_TOOLTIP = 'Let the board access the Wi-Fi environment';
+
+Blockly.Msg.CocoRobo_dis_WiFi_MESSAGE0 = 'Disconnect Wi-Fi connection';
+Blockly.Msg.CocoRobo_dis_WiFi_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/basics/network/network_basics.html#ap';
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_TOOLTIP = 'The password can be empty or alphanumeric with more than 8 digits.\nAP mode is only used for communication between the control boards. It cannot be used as a hotspot to make other devices access the Internet.';
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_MESSAGE0 = 'Open AP mode with SSID %1 & Password %2 Channel %3';
+
+Blockly.Msg.CocoRobo_disable_APWiFi_MESSAGE0 = 'Close AP mode';
+Blockly.Msg.CocoRobo_disable_APWiFi_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ntptime_settime_MESSAGE0 = 'Synchronize network time';
+Blockly.Msg.CocoRobo_ntptime_settime_TOOLTIP = 'NTP time synchronization is a time synchronization network technology';
+
+Blockly.Msg.CocoRobo_ntptime_timezone_E1 = "UTC+1";
+Blockly.Msg.CocoRobo_ntptime_timezone_E2 = "UTC+2";
+Blockly.Msg.CocoRobo_ntptime_timezone_E3 = "UTC+3";
+Blockly.Msg.CocoRobo_ntptime_timezone_E4 = "UTC+4";
+Blockly.Msg.CocoRobo_ntptime_timezone_E5 = "UTC+5";
+Blockly.Msg.CocoRobo_ntptime_timezone_E6 = "UTC+6";
+Blockly.Msg.CocoRobo_ntptime_timezone_E7 = "UTC+7";
+Blockly.Msg.CocoRobo_ntptime_timezone_E8 = "UTC+8";
+Blockly.Msg.CocoRobo_ntptime_timezone_E9 = "UTC+9";
+Blockly.Msg.CocoRobo_ntptime_timezone_E10 = "UTC+10";
+Blockly.Msg.CocoRobo_ntptime_timezone_E11 = "UTC+11";
+Blockly.Msg.CocoRobo_ntptime_timezone_E12 = "UTC+12";
+Blockly.Msg.CocoRobo_ntptime_timezone_0 = "UTC";
+Blockly.Msg.CocoRobo_ntptime_timezone_W1 = "UTC-1";
+Blockly.Msg.CocoRobo_ntptime_timezone_W2 = "UTC-2";
+Blockly.Msg.CocoRobo_ntptime_timezone_W3 = "UTC-3";
+Blockly.Msg.CocoRobo_ntptime_timezone_W4 = "UTC-4";
+Blockly.Msg.CocoRobo_ntptime_timezone_W5 = "UTC-5";
+Blockly.Msg.CocoRobo_ntptime_timezone_W6 = "UTC-6";
+Blockly.Msg.CocoRobo_ntptime_timezone_W7 = "UTC-7";
+Blockly.Msg.CocoRobo_ntptime_timezone_W8 = "UTC-8";
+Blockly.Msg.CocoRobo_ntptime_timezone_W9 = "UTC-9";
+Blockly.Msg.CocoRobo_ntptime_timezone_W10 = "UTC-10";
+Blockly.Msg.CocoRobo_ntptime_timezone_W11 = "UTC-11";
+Blockly.Msg.CocoRobo_ntptime_timezone_W12 = "UTC-12";
+
+Blockly.Msg.FILE_TO_LIST_HELPURL = '';
+Blockly.Msg.FILE_TO_LIST_TOOLTIP = 'Read the text file content of the specified path (only in UTF-8 format) and converts it to a list format, separated by the selected separator.';
+Blockly.Msg.FILE_TO_LIST_MESSAGE0 = 'Convert the text file %1 to a list separated by %2';
+
+Blockly.Msg.FILE_TO_BIN_HELPURL = '';
+Blockly.Msg.FILE_TO_BIN_TOOLTIP = 'Reads the contents of the file in the specified path in binary format.';
+Blockly.Msg.FILE_TO_BIN_MESSAGE0 = 'Read the binary content of file %1';
+
+Blockly.Msg.CocoRobo_INIT_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_FILE_TOOLTIP = 'Initializes a text file, creates a file if it does not exist, and clears the content if it exists.';
+Blockly.Msg.CocoRobo_INIT_FILE_MESSAGE0 = 'initialize text file %1';
+
+Blockly.Msg.CocoRobo_WRITE_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_WRITE_FILE_TOOLTIP = 'Writes content to a text file of the specified path, and creates a file if the file does not exist.';
+Blockly.Msg.CocoRobo_WRITE_FILE_MESSAGE0 = 'Write content %2 to the text file %1 separated by %3';
+
+Blockly.Msg.CocoRobo_SDCARD_INIT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard';
+Blockly.Msg.CocoRobo_SDCARD_INIT_TOOLTIP = 'Sck: P13\nmosi: P15\nmiso: P14\nsdcard: P16\nMake sure that the pins of the SPI bus are connected to the micro SD card which is formatted by using the FAT or FAT32 file system.';
+Blockly.Msg.CocoRobo_SDCARD_INIT_MESSAGE0 = 'Initialize SD card';
+
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard';
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_TOOLTIP = 'Mount the SD card to the specified path.';
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_MESSAGE0 = 'Mount SD card to path %1';
+
+Blockly.Msg.CocoRobo_ENTER = 'Rnter';
+Blockly.Msg.CocoRobo_COMMA = 'Comma';
+Blockly.Msg.CocoRobo_SEMICOLON = 'Semicolon';
+Blockly.Msg.CocoRobo_SPACE = 'Space';
+
+//Blockly.Msg.CocoRobo_wifi_clock_MESSAGE0 ='Wi-Fi 模拟时钟 x %1 y %2 半径 %3';
+//Blockly.Msg.CocoRobo_wifi_clock_TOOLTIP = '需连接 Wi-Fi 使用';
+
+Blockly.Msg.CocoRobo_def_clock_MESSAGE0 = 'Initialize clock %1 x %2 y %3 radius %4';
+Blockly.Msg.CocoRobo_def_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_settime_clock_MESSAGE0 = 'Clock %1 read time';
+Blockly.Msg.CocoRobo_settime_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_draw_clear_clock_MESSAGE0 = '%1 clock %2';
+Blockly.Msg.CocoRobo_draw_clear_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_tinywebio_start_MESSAGE0 = 'Start TinyWebIO service, run in %1';
+Blockly.Msg.CocoRobo_tinywebio_start_TOOLTIP = 'Wi-Fi is required to start the service, and the TinyWebIO service provides a remote control interface for the App Inventor application.';
+
+Blockly.Msg.CocoRobo_tinywebio_client_setup_HELPURL = '';
+Blockly.Msg.CocoRobo_tinywebio_client_setup_TOOLTIP = 'Items send to the server (separated by comma)\nbuttona/b Button status\ntouchpadp/y/t/h/o/n Touch button value \nlight Light value\nsound Sound value\naccelerometer Triaxial acceleration value\nid the board identification \ntime timestamp \npind<n> digital IO pin \npina<n> analog IO pin\n----------\nItems read from the server (separated by comma)\nrgb0/ 1/2 RGB lamp bead \noled LCD display \nmusic music \nservo<n> steering gear \npind<n> digital IO pin \npina<n> analog IO pin';
+Blockly.Msg.CocoRobo_tinywebio_client_setup_MESSAGE0 = 'Setup TinyWebIO client params %1 TinyWebDB server address %2 items send to the server %3 items read from the server %4 access server time interval(ms) %5';
+
+Blockly.Msg.CocoRobo_tinywebio_client_action_HELPURL = '';
+Blockly.Msg.CocoRobo_tinywebio_client_action_TOOLTIP = '';
+Blockly.Msg.CocoRobo_tinywebio_client_action_MESSAGE0 = '%1 TinyWebIO client';
+
+Blockly.Msg.CocoRobo_tinywebio_client_action_start = 'Start';
+Blockly.Msg.CocoRobo_tinywebio_client_action_stop = 'Stop';
+
+Blockly.Msg.CocoRobo_CUSTOM_CODE_HELPURL = '';
+Blockly.Msg.CocoRobo_CUSTOM_CODE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_CUSTOM_CODE_MESSAGE0 = '%1 custom code %2 %3';
+
+Blockly.Msg.CocoRobo_CUSTOM_TYPE_IMPORT = 'Topping';
+Blockly.Msg.CocoRobo_CUSTOM_TYPE_NORMAL = 'Normal';
+
+Blockly.Msg.CocoRobo_servo_angle0_MESSAGE0 = 'Set the servo %1 angle as %2';
+Blockly.Msg.CocoRobo_servo_angle_MESSAGE0 = 'Set the servo %1 angle as %2 pulse width from %3 us to %4 us actuation range as %5';
+Blockly.Msg.CocoRobo_servo_angle_TOOLTIP = 'Power cable Vcc (red) connected to expansion-board power port V, ground line GND (brown) connected to expansion-board ground port G, control signal line (orange) connected to selected expansion-board pins';
+
+Blockly.Msg.CocoRobo_dh11_hum_tem_MESSAGE0 = 'DHT11 %1 %2';
+Blockly.Msg.CocoRobo_dh11_hum_tem_TOOLTIP = '"+" on the DHT11 connects the power port of the expansion-board V, "-" connects the ground port of the expansion-board G, "out" connects the pin0 of the expansion-board';
+
+
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_MESSAGE0 = 'DHT22 %1 %2';
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT';
+
+Blockly.Msg.CocoRobo_music_note_MESSAGE0 = 'Note %1 %2 : %3';
+Blockly.Msg.CocoRobo_music_note_TOOLTIP = 'Note, such as C4:4';
+
+Blockly.Msg.CocoRobo_return_list_MESSAGE0 = 'Define list %1 = %2';
+Blockly.Msg.CocoRobo_return_list_TOOLTIP = 'Define a list';
+
+Blockly.Msg.CocoRobo_display_Show_MESSAGE0 = 'LCD setting take effect';
+Blockly.Msg.CocoRobo_display_Show_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_DispChar_MESSAGE0 = 'Display text %3 at x %1 y %2 text mode %4';
+Blockly.Msg.CocoRobo_display_DispChar_TOOLTIP = 'LCD resolution 128x64';
+Blockly.Msg.CocoRobo_display_DispChar_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/CocoRobo.html?highlight=lcd#lcd.DispChar';
+
+Blockly.Msg.CocoRobo_display_DispChar_5lines_MESSAGE0 = 'LCD line %1 shows %2 text mode %3';
+Blockly.Msg.CocoRobo_display_DispChar_5lines_TOOLTIP = 'LCD resolution 128x64';
+Blockly.Msg.CocoRobo_line1 = '1';
+Blockly.Msg.CocoRobo_line2 = '2';
+Blockly.Msg.CocoRobo_line3 = '3';
+Blockly.Msg.CocoRobo_line4 = '4';
+Blockly.Msg.CocoRobo_line5 = '5';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_MESSAGE0 = 'LCD clear line %1';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_TOOLTIP = 'LCD resolution 128x64';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_HELPURL = '';
+Blockly.Msg.CocoRobo_display_fill_O = "initialize";
+Blockly.Msg.CocoRobo_display_fill_0 = 'Clear';
+Blockly.Msg.CocoRobo_display_fill_1 = 'Full bright';
+Blockly.Msg.CocoRobo_display_invert_0 = 'Black background';
+Blockly.Msg.CocoRobo_display_invert_1 = 'White background';
+Blockly.Msg.CocoRobo_display_show = 'Show';
+Blockly.Msg.CocoRobo_display_fill_MESSAGE0 = 'LCD display initialize';
+
+Blockly.Msg.GLCDD = 'Get LCD display\'s %1';
+
+
+
+Blockly.Msg.CocoRobo_display_fill_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_pixel_0 = 'Dark';
+Blockly.Msg.CocoRobo_display_pixel_1 = 'Bright';
+Blockly.Msg.CocoRobo_display_pixel_MESSAGE0 = 'Draw a point x %1 y %2 as %3';
+Blockly.Msg.CocoRobo_display_pixel_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_hline_0 = 'Erase';
+Blockly.Msg.CocoRobo_display_hline_1 = 'Draw';
+Blockly.Msg.CocoRobo_display_hline_MESSAGE0 = '%1 horizontal line %2 x %3 y %4 length %5';
+Blockly.Msg.CocoRobo_display_hline_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ProgressBar_MESSAGE0 = 'Progress bar %1 x %2 y %3 width %4 height %5 progress %6';
+Blockly.Msg.CocoRobo_ProgressBar_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_stripBar_MESSAGE0 = 'Column bar %1 x %2 y %3 width %4 height %5 progress %6';
+Blockly.Msg.CocoRobo_stripBar_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_QR_CODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#gui.UI.qr_code';
+Blockly.Msg.CocoRobo_QR_CODE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_QR_CODE_MESSAGE0 = 'Display QR code %3 at x %1 y %2 with size %4';
+
+Blockly.Msg.CocoRobo_DISPLAY_MODE_0 = 'Erase';
+Blockly.Msg.CocoRobo_DISPLAY_MODE_1 = 'Draw';
+
+Blockly.Msg.CocoRobo_DISPLAY_HOLLOW = 'Hollow';
+Blockly.Msg.CocoRobo_DISPLAY_SOLID = 'Solid';
+
+Blockly.Msg.CocoRobo_DISPLAY_HVLINE_MESSAGE0 = '%1 %2 line %3 x %4 y %5 length %6';
+Blockly.Msg.CocoRobo_DISPLAY_HVLINE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_MESSAGE0 = '%1 %2 rectangle %3 x %4 y %5 width %6 height %7';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_MESSAGE0 = '%1 %2 circle %3 x %4 y %5 radius %6';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_MESSAGE0 = '%1 %2 triangle %3 x1 %4 y1 %5 x2 %6 y2 %7 x3 %8 y3 %9';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_RGB_0 = '0 #';
+Blockly.Msg.CocoRobo_RGB_1 = '1 #';
+Blockly.Msg.CocoRobo_RGB_2 = '2 #';
+Blockly.Msg.CocoRobo_RGB_ALL = 'all';
+
+Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_MESSAGE0 = 'Set %1 RGB light(s) color to %2';
+Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_TOOLTIP = '1/30 of the original brightness can better display the color difference';
+
+Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_MESSAGE0 = 'Set %1 RGB light(s) color to R%2 G%3 B%4';
+Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_TOOLTIP = '1/30 of the original brightness can better display the color difference';
+
+Blockly.Msg.CocoRobo_OFF_RGB_LIST_MESSAGE0 = 'Turn off %1 RGB light(s)';
+Blockly.Msg.CocoRobo_OFF_RGB_LIST_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MUSIC_PLAY_MESSAGE0 = 'Play music %1 Pin %2';
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TOOLTIP = 'Play the built-in music';
+
+Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_MESSAGE0 = 'Play music %1 until end, Pin %2';
+Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_TOOLTIP = 'Play the built-in music';
+
+Blockly.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO = 'GE_CHANG_ZU_GUO';
+Blockly.Msg.CocoRobo_MUSIC_DONG_FANG_HONG = 'DONG_FANG_HONG';
+Blockly.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE = 'CAI_YUN_ZHUI_YUE';
+Blockly.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI = 'ZOU_JIN_XIN_SHI_DAI';
+Blockly.Msg.CocoRobo_MUSIC_MO_LI_HUA = 'MO_LI_HUA';
+Blockly.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO = 'YI_MENG_SHAN_XIAO_DIAO';
+
+Blockly.Msg.CocoRobo_display_vline_MESSAGE0 = '%1 vertical line %2 x %3 y %4 length %5';
+Blockly.Msg.CocoRobo_display_vline_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_line_MESSAGE0 = '%1 line %2 x1 %3 y1 %4 to x2 %5 y2 %6';
+Blockly.Msg.CocoRobo_display_line_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_rect_MESSAGE0 = '%1 border %2 x %3 y %4 width %5 height %6';
+Blockly.Msg.CocoRobo_display_rect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_RoundRect_MESSAGE0 = '%1 arc border %2 x %3 y %4 width %5 height %6 radius %7';
+Blockly.Msg.CocoRobo_display_RoundRect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_rect_MESSAGE0 = '%1 rectangle %2 x %3 y %4 width %5 height %6';
+Blockly.Msg.CocoRobo_display_fill_rect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_circle_MESSAGE0 = '%1 solid circle %2 x %3 y %4 radius %5';
+Blockly.Msg.CocoRobo_display_fill_circle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_circle_MESSAGE0 = '%1 hollow circle %2 x %3 y %4 radius %5';
+Blockly.Msg.CocoRobo_display_circle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_triangle_MESSAGE0 = '%1 hollow triangle %2 x %3 y %4 x2 %5 y2 %6 x3 %7 y3 %8';
+Blockly.Msg.CocoRobo_display_triangle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_triangle_MESSAGE0 = '%1 solid triangle %2 x %3 y %4 x2 %5 y2 %6 x3 %7 y3 %8';
+Blockly.Msg.CocoRobo_display_fill_triangle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_Bitmap_MESSAGE0 = '%1 pattern x %2 y %3 width %4 height %5 with hex image data %6';
+Blockly.Msg.CocoRobo_display_Bitmap_TOOLTIP = 'Display hex image data at a specified position on the LCD screen';
+
+Blockly.Msg.CocoRobo_GET_PBM_DATA_MESSAGE0 = 'Get inner image %1 Pattern %2';
+Blockly.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP = 'Supports * .PBM or * .PBM format monochrome image files, retrieves image file data of specified path, and returns a tuple object';
+Blockly.Msg.CocoRobo_GET_PBM_DATA_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image';
+
+Blockly.Msg.CocoRobo_GET_PBM_DATA_CUSTOM_MESSAGE0 = 'Get custom image%1 mode%2';
+
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_MESSAGE0 = 'Display image at x %1 y %2 with data %3';
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_TOOLTIP = 'Monochromatic image files supporting * .PBM or * .PBM formats';
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image';
+
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_MESSAGE0 = 'Display image at x %1 y %2 with data %5 width %3 height %4';
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_horizontal = 'Horizontal';
+Blockly.Msg.CocoRobo_vertical = 'Vertical';
+Blockly.Msg.CocoRobo_front = 'Front';
+Blockly.Msg.CocoRobo_reverse = 'Reverse';
+/*
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_MESSAGE0 = "display text %3 at x %1 y %2 , using Digiface font, size %4";
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_TOOLTIP = "";
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_HELPURL = "";
+*/
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_11 = 'Digiface 11px';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_16 = 'Digiface 16px';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_21 = 'Digiface 21px';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_30 = 'Digiface 30px';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_44 = 'Digiface 44px';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_30 = 'Digiface Italic 30px';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_42 = 'Digiface Italic 42px';
+Blockly.Msg.CocoRobo_FONT_DVSM_12 = 'DejaVu Sans Mono 12px';
+Blockly.Msg.CocoRobo_FONT_DVSM_16 = 'DejaVu Sans Mono 16px';
+Blockly.Msg.CocoRobo_FONT_DVSM_21 = 'DejaVu Sans Mono 21px';
+Blockly.Msg.CocoRobo_FONT_DVSMB_12 = 'DejaVu Sans Mono Bold 12px';
+Blockly.Msg.CocoRobo_FONT_DVSMB_16 = 'DejaVu Sans Mono Bold 16px';
+Blockly.Msg.CocoRobo_FONT_DVSMB_21 = 'DejaVu Sans Mono Bold 21px';
+
+Blockly.Msg.CocoRobo_FONT_WRAP = 'Auto wrap';
+Blockly.Msg.CocoRobo_FONT_NO_WRAP = 'No wrap';
+
+Blockly.Msg.CocoRobo_FACE_1 = 'Heart';
+Blockly.Msg.CocoRobo_FACE_2 = 'Small heart';
+Blockly.Msg.CocoRobo_FACE_3 = 'Happy';
+Blockly.Msg.CocoRobo_FACE_4 = 'Smile';
+Blockly.Msg.CocoRobo_FACE_5 = 'Sad';
+Blockly.Msg.CocoRobo_FACE_6 = 'Confused';
+Blockly.Msg.CocoRobo_FACE_7 = 'Angry';
+Blockly.Msg.CocoRobo_FACE_8 = 'Sleep';
+Blockly.Msg.CocoRobo_FACE_9 = 'Surprise';
+Blockly.Msg.CocoRobo_FACE_10 = 'Silly';
+Blockly.Msg.CocoRobo_FACE_11 = 'Wonderful';
+Blockly.Msg.CocoRobo_FACE_12 = 'Bored';
+Blockly.Msg.CocoRobo_FACE_ROCK = 'Rock';
+Blockly.Msg.CocoRobo_FACE_PAPER = 'Paper';
+Blockly.Msg.CocoRobo_FACE_SCISSORS = 'Scissors';
+Blockly.Msg.CocoRobo_FACE_ROCK_S = 'Small rock';
+Blockly.Msg.CocoRobo_FACE_PAPER_S = 'Small paper';
+Blockly.Msg.CocoRobo_FACE_SCISSORS_S = 'Small scissors';
+
+Blockly.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0 = 'Display text %3 at x %1 y %2, using %4 font with %5';
+Blockly.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DISPLAY_FONT_HELPURL = '';
+
+//Blockly.Msg.CocoRobo_display_FrameBuffer_MESSAGE0 ='build frame list %1 length %2 width %3 scan mode %4';
+//Blockly.Msg.CocoRobo_display_FrameBuffer_TOOLTIP = 'Create a 128x64 frame buffer with a list of data after image modulo to store the picture frame';
+
+//Blockly.Msg.CocoRobo_display_blit_MESSAGE0 ='display frame coordinates x %1 y %2';
+//Blockly.Msg.CocoRobo_display_blit_TOOLTIP = '';
+
+//Blockly.Msg.CocoRobo_front_reverse_MESSAGE0 = 'pixel bit %1';
+//Blockly.Msg.CocoRobo_front_reverse_TOOLTIP  = 'Used for display before';
+
+//Blockly.Msg.CocoRobo_images_append_MESSAGE0 ='动图显示 帧数%1  周期%2 长%3 宽%4';
+//Blockly.Msg.CocoRobo_images_append_TOOLTIP = '上传至教科板的pbm图片需命名为IMAGE.数字,后缀为pbm。如:IMAGE.1.pbm。帧数为7则数字为1至7';
+
+Blockly.Msg.CocoRobo_button_is_pressed_MESSAGE0 = 'Button %1 is pressed';
+Blockly.Msg.CocoRobo_button_is_pressed_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_touchPad_value_MESSAGE0 = 'Button %1 is touched';
+Blockly.Msg.CocoRobo_touchPad_value_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_touchPad_value_num_MESSAGE0 = 'Button %1 touch value';
+Blockly.Msg.CocoRobo_touchPad_value_num_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_digital_MESSAGE0 = 'Pin %1 digital value';
+Blockly.Msg.CocoRobo_read_digital_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_DS18B20_MESSAGE0 = 'DS18B20 waterproof temperature sensor at pin %1';
+Blockly.Msg.CocoRobo_read_DS18B20_TOOLTIP = '';
+Blockly.Msg.CocoRobo_read_DS18B20_HELPURL = 'http://docs.micropython.org/en/latest/esp32/quickref.html?highlight=onewire#onewire-driver';
+
+Blockly.Msg.CocoRobo_set_digital_MESSAGE0 = 'Set pin %2 digital value to %1';
+Blockly.Msg.CocoRobo_set_digital_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_analog_MESSAGE0 = 'Pin %1 analog value';
+Blockly.Msg.CocoRobo_read_analog_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_set_analog_MESSAGE0 = 'Set pin %2 analog value (PWM) to %1';
+Blockly.Msg.CocoRobo_set_analog_TOOLTIP = 'The analog output is a pulse width modulated signal output through the IO pin, which outputs a specified voltage value, referred to as PWM.';
+
+Blockly.Msg.CocoRobo_set_RGB_MESSAGE0 = 'Set %1 RGB light color to R %2 G %3 B %4';
+Blockly.Msg.CocoRobo_set_RGB_TOOLTIP = '1/30 of the original brightness can better display the color difference';
+
+Blockly.Msg.CocoRobo_set_RGB_color_MESSAGE0 = 'Set %1 RGB light color to %2';
+Blockly.Msg.CocoRobo_set_RGB_color_TOOLTIP = '1/30 of the original brightness can better display the color difference';
+
+Blockly.Msg.CocoRobo_set_RGB_all_MESSAGE0 = 'Set all RGB lights color to R %1 G %2 B %3';
+Blockly.Msg.CocoRobo_set_RGB_all_TOOLTIP = '1/30 of the original brightness can better display the color difference';
+
+Blockly.Msg.CocoRobo_set_RGB_color_all_MESSAGE0 = 'Set all RGB lights color to %1';
+Blockly.Msg.CocoRobo_set_RGB_color_all_TOOLTIP = '1/30 of the original brightness can better display the color difference';
+
+Blockly.Msg.CocoRobo_fresh_RGB_MESSAGE0 = 'RGB lights settings take effect';
+Blockly.Msg.CocoRobo_fresh_RGB_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_off_RGB_MESSAGE0 = 'Turn off all RGB lights';
+Blockly.Msg.CocoRobo_off_RGB_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_state_MESSAGE0 = 'Stop playing music';
+Blockly.Msg.CocoRobo_buzz_state_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_freq_MESSAGE0 = 'Play continuous tone %1 at Pin %2';
+Blockly.Msg.CocoRobo_buzz_freq_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_tone_MESSAGE0 = 'Play tone %1';
+Blockly.Msg.CocoRobo_buzz_tone_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_HELPURL = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_TOOLTIP = 'The default pin is P6 of the cocorobo board';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_MESSAGE0 = 'play musical note %1 at Pin %2';
+
+Blockly.Msg.CocoRobo_MUSIC_TONE_HELPURL = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_MESSAGE0 = 'Tone %1';
+
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_HELPURL = '';
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_MESSAGE0 = 'Note %1 beat %2';
+
+Blockly.Msg.CocoRobo_MUSIC_TICK_HELPURL = '';
+Blockly.Msg.CocoRobo_MUSIC_TICK_TOOLTIP = '';
+// Blockly.Msg.CocoRobo_MUSIC_TICK_MESSAGE0 = 'tick %1';
+Blockly.Msg.CocoRobo_MUSIC_TICK_MESSAGE0 = 'Beat %1';
+
+Blockly.Msg.CocoRobo_4_LINES_HELPURL = '';
+Blockly.Msg.CocoRobo_4_LINES_TOOLTIP = '';
+Blockly.Msg.CocoRobo_4_LINES_MESSAGE0 = '%1';
+
+Blockly.Msg.NUMBER_1 = '1';
+Blockly.Msg.NUMBER_1_2 = '1/2';
+Blockly.Msg.NUMBER_1_4 = '1/4';
+Blockly.Msg.NUMBER_2 = '2';
+Blockly.Msg.NUMBER_4 = '4';
+
+
+Blockly.Msg.CocoRobo_read_sound_MESSAGE0 = 'Sound value';
+Blockly.Msg.CocoRobo_read_sound_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_light_MESSAGE0 = 'Light value';
+Blockly.Msg.CocoRobo_read_light_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_accelerometer_get_MESSAGE0 = '%1 axis acceleration';
+Blockly.Msg.CocoRobo_accelerometer_get_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_2G = '±2g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_4G = '±4g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_8G = '±8g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_16G = '±16g';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_10_BIT = '10bits';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_12_BIT = '12bits';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_14_BIT = '14bits';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_TOOLTIP = 'Set the acceleration range, the default is ±2g。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_MESSAGE0 = 'Set acceleration range to %1';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_TOOLTIP = 'Set the acceleration resolution, the default is 10bits。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_MESSAGE0 = 'seSett acceleration resolution to %1';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_TOOLTIP = 'Calibrate the acceleration value deviation of the three axes (x, y, z) of the accelerometer.\nIn general, calibration is not required, and calibration is only required when the acceleration deviation is large.\nx , y , z are the adjustment deviation values, and the correction range is ±1g.\nNote: Calibration data will not be saved after power off.';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_MESSAGE0 = 'Calibration acceleration value with  %1 X axis deviation %2 Y axis deviation %3 Z axis deviation %4';
+
+Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_TOOLTIP = 'Only applicable to cocorobo board 2.0 and above';
+Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_MESSAGE0 = 'Magnetic force of %1 axis';
+
+Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_TOOLTIP = 'Only applicable to cocorobo board 2.0 and above';
+Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_MESSAGE0 = 'Compass direction';
+
+Blockly.Msg.CocoRobo_TILT_ANGLE_HELPURL = '';
+Blockly.Msg.CocoRobo_TILT_ANGLE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_TILT_ANGLE_MESSAGE0 = '%1 axis tilt angle';
+
+Blockly.Msg.CocoRobo_random_choice_MESSAGE0 = 'Random item %1';
+Blockly.Msg.CocoRobo_random_choice_TOOLTIP = 'Return a random item in a list or string in String format';
+
+Blockly.Msg.CocoRobo_i2c_init_MESSAGE0 = 'Initialize I2C with baudrate %1';
+Blockly.Msg.CocoRobo_i2c_init_TOOLTIP = 'SCL pin 19, SDA pin 20, sharing I2C bus with internal LCD and accelerometer';
+
+Blockly.Msg.CocoRobo_dev_i2c_init_MESSAGE0 = 'Initialize I2C SCL %2 SDA %3 baudrate %1';
+Blockly.Msg.CocoRobo_dev_i2c_init_TOOLTIP = '';
+Blockly.Msg.CocoRobo_dev_i2c_init_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.I2C.html#machine.I2C';
+
+
+Blockly.Msg.MACHINE_TIME_PULSE_US_HELPURL =
+    'https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.html?highlight=machine.time_pulse_us#machine.time_pulse_us';
+Blockly.Msg.MACHINE_TIME_PULSE_US_MESSAGE0 = 'Duration(us) of external %2 pulse level at %1';
+Blockly.Msg.MACHINE_TIME_PULSE_US_TOOLTIP = ''
+
+Blockly.Msg.BYTES = 'Bytes';
+
+
+
+Blockly.Msg.CocoRobo_i2c_read_write_MESSAGE0 = 'I2C address %1 is written to %2';
+Blockly.Msg.CocoRobo_i2c_read_write_TOOLTIP = 'Address format: [Number]\n Written format: [Number, String]';
+
+Blockly.Msg.CocoRobo_i2c_readfrom_MESSAGE0 = 'I2C address %1 read bytes number %2';
+Blockly.Msg.CocoRobo_i2c_readfrom_TOOLTIP = 'Address format: Number\n Return: a string of bytes objects that read data';
+
+Blockly.Msg.AUTH = "Please authorize this app to enable your work to be saved and to allow it to be shared by you.";
+Blockly.Msg.CHAT = "Chat with your collaborator by typing in this box!";
+Blockly.Msg.TRY_EXCEPT_FINALLY = "Finally";
+Blockly.Msg.TRY_EXCEPT_FINALLY_TOOLTIP = "";
+Blockly.Msg.TRY_EXCEPT_EXCEPT = "Except";
+Blockly.Msg.TRY_EXCEPT_EXCEPT_TOOLTIP = "";
+Blockly.Msg.TRY_EXCEPT_TRY = "Try";
+Blockly.Msg.TRY_EXCEPT_TRY_TOOLTIP = "";
+Blockly.Msg.TRY_EXCEPT_HELPURL = "https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";
+Blockly.Msg.LISTS_POP_HELPURL = "";
+Blockly.Msg.LISTS_POP_TOOLTIP = "";
+Blockly.Msg.LISTS_POP_MESSAGE0 = "Remove %2 item in list %1";
+Blockly.Msg.MATH_CONVERT_HELPURL = "";
+Blockly.Msg.MATH_CONVERT_MESSAGE0 = "%1 %2";
+Blockly.Msg.MATH_CONVERT_TOOLTIP = "Conversion data type";
+Blockly.Msg.MATH_DIVISION_CONSULT_HELPURL = "";
+Blockly.Msg.MATH_DIVISION_CONSULT_TITLE = "The integer part of the quotient %1 ÷ %2";
+Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP = "Returns the integer part of the quotient of two numbers";
+Blockly.Msg.MATH_NUMBER_BITS_OPS_HELPURL = "";
+Blockly.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0 = "%1 %2 %3";
+Blockly.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP = "Bitwise operations on numbers";
+Blockly.Msg.ME = "Me";
+
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_TOOLTIP = "";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_EMPTY_TITLE = "Print data to chart";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_INPUT_WITH = "Print data to chart";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TITLE = "Data";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TOOLTIP = "";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TITLE_ADD = "Data content";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_INIT_CHART_TOOLTIP = "";
+Blockly.Msg.CocoRobo_INIT_CHART_EMPTY_TITLE = "Init chart column headers";
+Blockly.Msg.CocoRobo_INIT_CHART_INPUT_WITH = "Init chart column headers";
+Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TITLE = "Header";
+Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TOOLTIP = "";
+Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TITLE_ADD = "Column header";
+Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TOOLTIP = "";
+
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_MESSAGE0 = 'Create image %1 line 1 %2 line 2 %3 line 3 %4 line 4 %5 line 5 %6';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_TOOLTIP = 'Create new image.';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_HELPURL = '';
+
+
+/* 以下是原生blockly翻译不要修改 */
+
+Blockly.Msg.ADD_COMMENT = "Add Comment";
+Blockly.Msg.CHANGE_VALUE_TITLE = "Change value:";
+Blockly.Msg.COLLAPSE_ALL = "Collapse Blocks";
+Blockly.Msg.COLLAPSE_BLOCK = "Collapse Block";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "Colour 1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "Colour 2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";
+Blockly.Msg.COLOUR_BLEND_RATIO = "Ratio";
+Blockly.Msg.COLOUR_BLEND_TITLE = "Blend";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Blends two colours together with a given ratio (0.0 - 1.0).";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://en.wikipedia.org/wiki/Color";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Choose a colour from the palette.";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";
+Blockly.Msg.COLOUR_RANDOM_TITLE = "Random colour";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "Choose a colour at random.";
+Blockly.Msg.COLOUR_RGB_BLUE = "Blue";
+Blockly.Msg.COLOUR_RGB_GREEN = "Green";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";
+Blockly.Msg.COLOUR_RGB_RED = "Red";
+Blockly.Msg.COLOUR_RGB_TITLE = "Colour with";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "Break out of loop";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "Continue with next iteration of loop";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "Break out of the containing loop.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Skip the rest of this loop, and continue with the next iteration.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Warning: This block may only be used within a loop.";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "For each item %1 in list %2";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "For each item in a list, set the variable '%1' to the item, and then do some statements.";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";
+Blockly.Msg.CONTROLS_FOR_TITLE = "Count with %1 from %2 to %3 by %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Add a condition to the if block.";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Add a final, catch-all condition to the if block.";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "Add, remove, or reorder sections to reconfigure this if block.";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "Else";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "Else if";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "If";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "If a value is true, then do some statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "Do";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "Repeat %1 times";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Do some statements several times.";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "Repeat until";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "Repeat while";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "While a value is false, then do some statements.";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "While a value is true, then do some statements.";
+Blockly.Msg.DELETE_BLOCK = "Delete Block";
+Blockly.Msg.DELETE_X_BLOCKS = "Delete %1 Blocks";
+Blockly.Msg.DISABLE_BLOCK = "Disable Block";
+Blockly.Msg.DUPLICATE_BLOCK = "Duplicate";
+Blockly.Msg.ENABLE_BLOCK = "Enable Block";
+Blockly.Msg.EXPAND_ALL = "Expand Blocks";
+Blockly.Msg.EXPAND_BLOCK = "Expand Block";
+Blockly.Msg.EXTERNAL_INPUTS = "External Inputs";
+Blockly.Msg.HELP = "Help";
+Blockly.Msg.INLINE_INPUTS = "Inline Inputs";
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "Create empty list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Returns a list, of length 0, containing no data records";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "List";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this list block.";
+Blockly.Msg.SET_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this set block.";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "Create list with";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the list.";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Create a list with any number of items.";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "First";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# from end";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_GET = "Get";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "Get and remove";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "Last";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "Random";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "Remove";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Returns the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Returns the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Returns the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Returns the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Returns a random item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Removes and returns the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END = "Removes and returns the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START = "Removes and returns the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Removes and returns the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Removes and returns a random item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Removes the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END = "Removes the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START = "Removes the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Removes the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Removes a random item in a list.";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "To # from end";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "To #";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "To last";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "Get sub-list from first";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "Get sub-list from # from end";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "Get sub-list from #";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list.";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "Find first occurrence of item";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";
+Blockly.Msg.LISTS_INDEX_OF_LAST = "Find last occurrence of item";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Returns the index of the first/last occurrence of the item in the list. Returns 0 if text is not found.";
+Blockly.Msg.LISTS_INLIST = "In list";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 is empty";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "Returns true if the list is empty.";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";
+Blockly.Msg.LISTS_LENGTH_TITLE = "Length of %1";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "Returns the length of a list.";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_REPEAT_TITLE = "Create list with item %1 repeated %2 times";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "Creates a list consisting of the given value repeated the specified number of times.";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "As";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "Insert at";
+Blockly.Msg.LISTS_SET_INDEX_SET = "Set";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserts the item at the start of a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END = "Inserts the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START = "Inserts the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Append the item to the end of a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserts the item randomly in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Sets the first item in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END = "Sets the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START = "Sets the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Sets the last item in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Sets a random item in a list.";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "Make list from text";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "Make text from list";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter.";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter.";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "With delimiter";
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "False";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Returns either true or false.";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "True";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Return true if both inputs equal each other.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Return true if the first input is greater than the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Return true if the first input is greater than or equal to the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "Return true if the first input is smaller than the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "Return true if the first input is smaller than or equal to the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "Return true if both inputs are not equal to each other.";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "Not %1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "Returns true if the input is false. Returns false if the input is true.";
+Blockly.Msg.LOGIC_NULL = "Null";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "Returns null.";
+Blockly.Msg.LOGIC_OPERATION_AND = "And";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";
+Blockly.Msg.LOGIC_OPERATION_OR = "Or";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "Return true if both inputs are true.";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "Return true if at least one of the inputs is true.";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "Test";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "If false";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "If true";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+";
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Arithmetic";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "Return the sum of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Return the quotient of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Return the difference of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Return the product of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Return the first number raised to the power of the second number.";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
+Blockly.Msg.MATH_CHANGE_TITLE = "Change %1 by %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "Add a number to variable '%1'.";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "Constrain %1 low %2 high %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "Constrain a number to be between the specified limits (inclusive).";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "Is divisible by";
+Blockly.Msg.MATH_IS_EVEN = "Is even";
+Blockly.Msg.MATH_IS_NEGATIVE = "Is negative";
+Blockly.Msg.MATH_IS_ODD = "Is odd";
+Blockly.Msg.MATH_IS_POSITIVE = "Is positive";
+Blockly.Msg.MATH_IS_PRIME = "Is prime";
+Blockly.Msg.MATH_IS_TOOLTIP = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";
+Blockly.Msg.MATH_IS_WHOLE = "Is whole";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation";
+Blockly.Msg.MATH_MODULO_TITLE = "Remainder of %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two numbers.";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "A number.";
+Blockly.Msg.MATH_ONLIST_HELPURL = "";
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "Average of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "Max of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "Median of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "Min of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "Modes of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "Random item of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "Standard deviation of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "Sum of list";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "Return the average (arithmetic mean) of the numeric values in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "Return the largest number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Return the median number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "Return the smallest number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "Return a list of the most common item(s) in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Return a random element from the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Return the sum of all the numbers in the list.";
+Blockly.Msg.MATH_POWER_SYMBOL = "**";
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "random fraction";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "random integer from %1 to %2";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Return a random integer between the two specified limits, inclusive.";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "Round";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "Round down";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "Round up";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "Round a number up or down.";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "Absolute";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "Square root";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "Return the absolute value of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "Return e to the power of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "Return the natural logarithm of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "Return the base 10 logarithm of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "Return the negation of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "Return 10 to the power of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "Return the square root of a number.";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";
+Blockly.Msg.MATH_TRIG_ACOS = "Acos";
+Blockly.Msg.MATH_TRIG_ASIN = "Asin";
+Blockly.Msg.MATH_TRIG_ATAN = "Atan";
+Blockly.Msg.MATH_TRIG_COS = "Cos";
+Blockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions";
+Blockly.Msg.MATH_TRIG_SIN = "Sin";
+Blockly.Msg.MATH_TRIG_TAN = "Tan";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "Return the arccosine of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "Return the arcsine of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "Return the arctangent of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "Return the cosine of a degree (not radian).";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Return the sine of a degree (not radian).";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Return the tangent of a degree (not radian).";
+Blockly.Msg.NEW_VARIABLE = "New variable...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "New variable name:";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "";
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "Allow statements";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "With:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_CALL = "";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function '%1'.";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Run the user-defined function '%1' and use its output.";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "With:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "Create '%1'";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "My_func";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "To";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Creates a function with no output.";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "Return";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "Creates a function with an output.";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "Warning: This function has duplicate parameters.";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "Highlight function definition";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "If a value is true, then return a second value.";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "Warning: This block may be used only within a function definition.";
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "Input name:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "Add an input to the function.";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "Inputs";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Add, remove, or reorder inputs to this function.";
+Blockly.Msg.REMOVE_COMMENT = "Remove Comment";
+Blockly.Msg.RENAME_VARIABLE = "Rename variable...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "Rename all '%1' variables to:";
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "append text";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg.TEXT_APPEND_TO = "To";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "Append some text to variable '%1'.";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "To lower case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "To Title Case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "To UPPER CASE";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "Return a copy of the text in a different case.";
+Blockly.Msg.TEXT_CHARAT_FIRST = "Get first letter";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "Get letter # from end";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "Get letter #";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "In text";
+Blockly.Msg.TEXT_CHARAT_LAST = "Get last letter";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "Get random letter";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position.";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text.";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "Join";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Add, remove, or reorder sections to reconfigure this text block.";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "To letter # from end";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "To letter #";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "To last letter";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "in text";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "Get substring from first letter";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "Get substring from letter # from end";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "Get substring from letter #";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text.";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "In text";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "Find first occurrence of text";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "Find last occurrence of text";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of first text in the second text. Returns 0 if text is not found.";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty.";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "Create text with";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "Create a piece of text by joining together any number of items.";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg.TEXT_LENGTH_TITLE = "Length of %1";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Returns the number of letters (including spaces) in the provided text.";
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";
+Blockly.Msg.TEXT_PRINT_TITLE = "Print %1";
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "Print the specified text, number or other value.";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Prompt for user for a number.";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Prompt for user for some text.";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "Prompt for number with message";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "Prompt for text with message";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text.";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "Trim spaces from both sides of";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "Trim spaces from left side of";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "Trim spaces from right side of";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends.";
+Blockly.Msg.TODAY = "Today";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "Item";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "Create 'set %1'";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "Returns the value of this variable.";
+Blockly.Msg.VARIABLES_SET = "Set %1 to %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "Create 'get %1'";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "Sets this variable to be equal to the input.";
+
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_CALLRETURN_CALL = Blockly.Msg.PROCEDURES_CALLNORETURN_CALL;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.DICT_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.SET_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+
+Blockly.Msg.LABPLUS_USB_SWITCH_ON = 'Turn on';
+Blockly.Msg.LABPLUS_USB_SWITCH_OFF = 'Turn off';
+Blockly.Msg.LABPLUS_MOTOR_ON_ANTICLOCKWISE = 'Toggle';
+
+
+
+//新tts
+Blockly.Msg.XUNFEI_SPEECH_TTS_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_TTS_TOOLTIP = 'The synthesized audio file format can only be "*.pcm"';
+Blockly.Msg.XUNFEI_SPEECH_TTS_MESSAGE0 = '[iFLYTEK] synthetic audio %1 APPID %2 APISecret %3 APIKey %4 text %5 transfer to audio file %6';
+
+Blockly.Msg.XUNFEI_SPEECH_IAT_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_TOOLTIP = 'The audio formats that can be recognized are "*.pcm" and "*.wav"';
+Blockly.Msg.XUNFEI_SPEECH_IAT_MESSAGE0 = '[iFLYTEK] identify audio %1 APPID %2 APISecret %3 APIKey %4 audio file to be identified %5';
+
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_TOOLTIP = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_MESSAGE0 = '[iFLYTEK] identify result';
+
+//声明python 运行环境
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_HELPURL = '';
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_MESSAGE0 = 'Declared python runtime environment';
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_TOOLTIP = '';
+
+//lark
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_MESSAGE0 = 'LARK I2C RGB color';
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_TOOLTIP = 'Returns as list';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_MESSAGE0 = 'LARK I2C RGB color %1';
+Blockly.Msg.CocoRobo_lARK_RED = 'RED';
+Blockly.Msg.CocoRobo__LARK_GREEN = 'GREEN';
+Blockly.Msg.CocoRobo__LARK_BLUE = 'BLUE';
+
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARKT_GET_ALL_COLOR_HSV_MESSAGE0 = 'LARK I2C HSV color';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_HSV_MESSAGE0 = 'LARK I2C HSV color %1';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_STRING_MESSAGE0 = 'LARK GET COLOR';
+
+Blockly.Msg.CocoRobo_LARK_DISCERN_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_DISCERN_COLOR_MESSAGE0 = 'LARK GET COLOR %1';
+Blockly.Msg.CocoRobo_LARK_RED = 'RED';
+Blockly.Msg.CocoRobo_LARK_GREEN = 'GREEN';
+Blockly.Msg.CocoRobo_LARK_BLUE = 'BLUE';
+Blockly.Msg.CocoRobo_LARK_ORANGE = 'ORANGE';
+Blockly.Msg.CocoRobo_LARK_YELLOW = 'YELLOW';
+Blockly.Msg.CocoRobo_LARK_PURPLE = 'PURPLE';
+Blockly.Msg.CocoRobo_LARK_CYAN = 'CYAN';
+Blockly.Msg.CocoRobo_LARK_NONE = 'NO COLOR';
+Blockly.Msg.CocoRobo_LARK_NULL = 'FAIL THE COLOR';
+
+Blockly.Msg.CocoRobo_LARK_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_ULTRASONIC_MESSAGE0 = 'LARK I2C ultrasonic value';
+
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0 = 'LARK I2C SET MOTOR %1 SPEED %2';
+
+Blockly.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_MESSAGE0 = 'LARK I2C GET %1 VALUE';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_RIGHT_ON_I2C = 'RIGHT';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_LEFT_ON_I2C = 'LEFT';
+
+Blockly.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_MESSAGE0 = 'LARK I2C SEARCH TOUCH LINE %1';
+Blockly.Msg.CocoRobo_LARK_SEARCH_LEFT = 'LEFT';
+Blockly.Msg.CocoRobo_LARK_SEARCH_RIGHT = 'RIGHT';
+Blockly.Msg.CocoRobo_LARK_SEARCH_BOTH = 'ALL';
+Blockly.Msg.CocoRobo_LARK_SEARCH_NONE = 'NOT';
+
+
+///lark千里马
+Blockly.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_TOOLTIP = 'Returns as list';
+Blockly.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_MESSAGE0 = 'HORSE GET COLOR';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_MESSAGE0 = 'HORSE GET COLOR %1';
+Blockly.Msg.CocoRobo_lARK_CAR_RED = 'RED';
+Blockly.Msg.CocoRobo__LARK_CAR_GREEN = 'GREEN';
+Blockly.Msg.CocoRobo__LARK_CAR_BLUE = 'BLUE';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_ALL_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARKT_CAR_GET_ALL_COLOR_HSV_MESSAGE0 = 'HORSE I2C HSV color';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_MESSAGE0 = 'HORSE I2C HSV %1';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_MESSAGE0 = 'HORSE GET COLOR';
+
+Blockly.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_MESSAGE0 = 'HORSE GET %1';
+Blockly.Msg.CocoRobo_LARK_CAR_RED = 'RED';
+Blockly.Msg.CocoRobo_LARK_CAR_GREEN = 'Green';
+Blockly.Msg.CocoRobo_LARK_CAR_BLUE = 'Blue';
+Blockly.Msg.CocoRobo_LARK_CAR_ORANGE = 'Orange';
+Blockly.Msg.CocoRobo_LARK_CAR_YELLOW = 'Yellow';
+Blockly.Msg.CocoRobo_LARK_CAR_PURPLE = 'Purple';
+Blockly.Msg.CocoRobo_LARK_CAR_CYAN = 'Cyan';
+Blockly.Msg.CocoRobo_LARK_CAR_NONE = 'None';
+Blockly.Msg.CocoRobo_LARK_CAR_NULL = 'Null';
+
+Blockly.Msg.CocoRobo_LARK_CAR_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_ULTRASONIC_MESSAGE0 = 'Horse Get Ultrasoinc';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_MESSAGE0 = 'HORSE GET %1 LINE VALUE';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_RIGHT_ON_I2C = 'RIGHT';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_LEFT_ON_I2C = 'LEFT';
+
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_MESSAGE0 = 'HORSE I2C SEARCH TOUCH LINE %1';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LEFT = 'LEFT TOUCHED';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_RIGHT = 'RIGHT TOUCHED';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_BOTH = 'BOTH TOUCHED';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_NONE = 'NOT TOUCHED';
+
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0 = 'HOSRE MOTION %1  SPEED %2';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_LEFT = 'Trun Left';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_RIGHT = 'Trun Right';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_FORWARD = 'forward';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_BACKWARD = 'Backward';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_STOP = 'Stop';
+
+Blockly.Msg.Math_Degrad_RAD_TOOLTIP = "Returns the result of converting the degrees to radians";
+Blockly.Msg.Math_Degrad_DEG_TOOLTIP = "Returns the result of converting radians to degrees";
+
+Blockly.Msg.Text_Split_String_By_Delimiter_TOOLTIP = "Split the string with delimiters and generate a list ";
+
+Blockly.Msg.Text_List_TOOLTIP = "Initialization list [0,0,0]";
+Blockly.Msg.Text_Dict_TOOLTIP = "Initialize the dictionary";
+Blockly.Msg.Text_Tuple_TOOLTIP = "Initialize the tuple";
+Blockly.Msg.Text_Set_TOOLTIP = "Initialize the collection";
+Blockly.Msg.Iot_System_Run_TOOLTIP = "Run the program file in the specified path";
+Blockly.Msg.Esp32_Main_Controller_Io_From_Digital_Pin_TOOLTIP = "Return %1 to get the digital signal value of a specific pin";
+Blockly.Msg.Esp32_Main_Controller_Io_Set_Digital_Pin_TOOLTIP = "%1 set a specific pin to a specified level";
+Blockly.Msg.Esp32_Main_Controller_Io_Set_Analog_Pin_TOOLTIP = "IoT module sets pins and controls the analog output of %1";
+Blockly.Msg.Ai_Main_Controller_Io_Set_Analog_Pin_TOOLTIP = "A.I. module sets pins and controls the analog output of %1";
+Blockly.Msg.Esp32_Main_Controller_Io_From_Analog_Pin_TOOLTIP = "The IoT module obtains the analog signal value of a specific pin";
+Blockly.Msg.Esp32_Main_Controller_Io_High_Low_TOOLTIP = "Return %1";
+Blockly.Msg.esp32_main_controller_io_analog_pin_1_TOOLTIP = "Return A.I. Module GPIO #%1";
+Blockly.Msg.esp32_main_controller_io_analog_pin_2_TOOLTIP = "Return IoT Module GPIO #%1";
+Blockly.Msg.Iot_System_Create_TOOLTIP = "Create a text file with the specified name";
+Blockly.Msg.Iot_System_Write_TOOLTIP = "Create a text file with the specified name and write the content, with %1 as the separator";
+Blockly.Msg.Iot_System_Input_TOOLTIP = "Read the text file with the specified name as a list, with %1 as the separator";
+Blockly.Msg.Esp32_Get_Current_Date_TOOLTIP = "Get %1 of local time";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Init_TOOLTIP = "%1 initialize timer";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Get_Current_TOOLTIP = "%1 get timer elapsed time";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Clear_TOOLTIP = "%1 clear timer";
+Blockly.Msg.Esp32_Main_Controller_Time_Period_Timer_TOOLTIP = "%1 enables the periodic repetition timer and runs the specified conditions at regular intervals";
+Blockly.Msg.Esp32_Main_Controller_Time_Period_Timer_Clear_TOOLTIP = "%1 clear cycle repeat timer";
+Blockly.Msg.serial_Comm_Print_TOOLTIP = "Serial printing";
+Blockly.Msg.Serial_Write_Data_TOOLTIP = "Use %1 to send data to other devices through the serial port";
+Blockly.Msg.Serial_Read_Data_Setup_TOOLTIP = "Use %1 to obtain data sent by other devices through the serial port to initialize";
+Blockly.Msg.Serial_Read_Data_TOOLTIP = "Get a certain bit of data in the received serial port data from serial_data";
+Blockly.Msg.Serial_Read_Data_all_TOOLTIP = "Get the data of the serial port and save it to serial_data";
+Blockly.Msg.Serial_Send_Data_To_Microbit_TOOLTIP = "Send data to Microbit on %1 module";
+Blockly.Msg.Trd_Party_Sensor_Hcsr04_TOOLTIP = "Initialize ultrasonic sensor %1";
+Blockly.Msg.Trd_Party_Sensor_Hcsr04_Read_TOOLTIP = "Read the distance detection value from a specific ultrasonic sensor and return";
+Blockly.Msg.Esp32_Main_Controller_Led_Strip_Setup_TOOLTIP = "%1 Initialize the LED strip";
+Blockly.Msg.Esp32_Main_Controller_Led_strip_set_bright_TOOLTIP = "Set the brightness of the LED strip";
+Blockly.Msg.Iot_Led_Matrix_Color_Picker_TOOLTIP = "Convert hexadecimal color code to RGB color value and return";
+Blockly.Msg.Led_Strip_Color_Rgb_TOOLTIP = "Return RGB color value";
+Blockly.Msg.Esp32_Main_Controller_Led_Strip_Set_TOOLTIP = "%1 lights up the LED strip";
+Blockly.Msg.Led_Strip_Show_Above_TOOLTIP = "%1 makes the light strip show the above effect";
+
+// IoT
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Pressed_TOOLTIP = "When button %1 is pressed";
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Released_TOOLTIP = "When button %1 is released";
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Value_TOOLTIP = "Read the level state of button %1";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Touched_TOOLTIP = "When touch area %1 is touched";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Untouched_TOOLTIP = "When touch area %1 is not touched";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Value_TOOLTIP = "Get the capacitance change value of the touch area %1";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Turnon_TOOLTIP = "Set to light up the specified LED light";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Turnoff_TOOLTIP = "Set to turn off the specified LED light";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_On_TOOLTIP = "Light up the specified LED light";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_Off_TOOLTIP = "Turn off the specified LED light";
+Blockly.Msg.Esp32_Main_Controller_Set_Buzzer_TOOLTIP = "Buzzer set tone frequency";
+Blockly.Msg.Esp32_Main_Controller_Turn_Off_Buzzer_TOOLTIP = "Turn off the buzzer";
+Blockly.Msg.Esp32_Main_Controller_Get_Environmental_Value_TOOLTIP = "Get %1 value(Take longer than 1 second to get the value)";
+Blockly.Msg.Esp32_Main_Controller_Motion_When_Shaking_STATEMENT_TOOLTIP = "Perform operation when module %1 is shaking";
+Blockly.Msg.Esp32_Main_Controller_Motion_When_Tilting_STATEMENT_TOOLTIP= "Perform operation when module %1 is tilted";
+Blockly.Msg.Esp32_Main_Controller_Motion_Acceleration_TOOLTIP= "Get the acceleration of the %1 axis";
+Blockly.Msg.Esp32_Main_Controller_Motion_Rotation_Measurement_TOOLTIP = "Get the rotation measurement of the %1 axis";
+Blockly.Msg.Esp32_Main_Controller_Motion_Tilt_Angle_TOOLTIP= "Get the tilt angle of the %1 axis";
+Blockly.Msg.Esp32_Main_Controller_Get_Light_TOOLTIP= "Get light value";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Connect_Internet_TOOLTIP= "Connect to WiFi network";
+Blockly.Msg.Esp32_Main_Controller_Get_Wifi_Connection_Status_TOOLTIP= "Get WiFi connection status";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Get_Info_TOOLTIP= "Get WiFi configuration information %1";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Ntptime_TOOLTIP= "Synchronize network time";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Disconnect_TOOLTIP= "Disconnect WiFi connection";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Enable_Hotspot_Mode_TOOLTIP= "Create WiFi hotspot";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Acquiring_Equipment_TOOLTIP= "Get the list of currently connected devices";
+Blockly.Msg.Esp32_Main_Controller_Get_Wifi_Devices_Number_TOOLTIP= "Get the number of currently connected devices";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Close_TOOLTIP= "Turn off WiFi hotspot";
+Blockly.Msg.Esp32_Network_Http_Get_TOOLTIP= "Send http get request";
+Blockly.Msg.Esp32_Network_Http_Post_TOOLTIP= "Send http post request";
+Blockly.Msg.CocoRobo_get_TOOLTIP= "Get %1 of HTTP response content";
+Blockly.Msg.Esp32_Network_Http_Get_Data_From_Local_Server_TOOLTIP= "Get the data requested from the local HTTP server, the data type is %1";
+Blockly.Msg.Esp32_Network_Http_Server_Setup_TOOLTIP= "HTTP server initialization";
+Blockly.Msg.Esp32_Network_Http_Server_Route_TOOLTIP= "When the specified path is requested, set the request attribute to %1 request and perform the operation";
+Blockly.Msg.Esp32_Network_Http_Server_Route_Respond_TOOLTIP= "The HTTP server sets the response content and sets the return data type to %1";
+Blockly.Msg.Esp32_Network_Http_Server_Get_Data_TOOLTIP= "The HTTP server gets the data received from the client, the type is %1";
+Blockly.Msg.Esp32_Web_Ws_Setup_Send_TOOLTIP= "Real-time communication sender initialization";
+Blockly.Msg.Esp32_Web_Ws_Send_TOOLTIP= "Send messages via real-time communication";
+Blockly.Msg.Esp32_Web_Ws_Setup_Receive_TOOLTIP= "Real-time communication receiver initialization";
+Blockly.Msg.Esp32_Web_Ws_Receive_Statement_TOOLTIP= "When real-time communication receives a message, run the operation";
+Blockly.Msg.Esp32_Web_Ws_Receive_Get_Data_TOOLTIP= "Get the message received from real-time communication, the type is %1";
+Blockly.Msg.Iot_Service_Cococloud_TOOLTIP= "Send data to CocoCloud specified event";
+Blockly.Msg.Iot_Service_Cococloud_Read_TOOLTIP= "Get the data in the specified event of CocoCloud";
+Blockly.Msg.Iot_Service_Cococloud_Read_Data_TOOLTIP= "Get the data of the specified attribute in the CocoCloud event";
+Blockly.Msg.Esp32_Main_Controller_Ifttt_Send_Data_TOOLTIP= "Send data to IFTTT Webhooks event";
+Blockly.Msg.Esp32_Main_Controller_Ifttt_Touched_TOOLTIP= "Trigger the specified IFTTT event";
+Blockly.Msg.Iot_Service_Thingspeak_TOOLTIP= "Send data to the specified ThingSpeak channel";
+Blockly.Msg.Iot_Service_Thingspeak_Read_TOOLTIP= "Find the data of ThingSpeak specified channel";
+Blockly.Msg.Iot_Service_Thingspeak_Read_Total_TOOLTIP= "Get the total amount of data in the ThingSpeak channel";
+Blockly.Msg.Iot_Service_Thingspeak_Read_Specific_TOOLTIP= "Get the value of the specified Field of the specified data in the ThingSpeak channel";
+Blockly.Msg.Iot_System_Restart_TOOLTIP= "Reboot the system";
+Blockly.Msg.Iot_System_Get_TOOLTIP= "Get the remaining space in the module";
+Blockly.Msg.Iot_System_Mac_TOOLTIP= "Get the MAC address of the module";
+Blockly.Msg.Iot_System_Get_Cocorobo_Id_TOOLTIP= "Get the IoT device ID";
+Blockly.Msg.iot_system_get_cocorobo_firmware_version_TOOLTIP= "Get the IoT Current firmware version number";
+Blockly.Msg.iot_system_delete_TOOLTIP = "Delete file with the specified name";
+Blockly.Msg.ai_system_get_cocorobo_firmware_version_TOOLTIP= "Get the AI Current firmware version number";
+Blockly.Msg.ai_System_Get_TOOLTIP= "Get the Remaining Space in Memory";
+Blockly.Msg.ai_System_sd_Get_TOOLTIP = "Get the Remaining Space in SD card";
+Blockly.Msg.ai_system_thread_TOOLTIP = "Enable multithreading to perform related operations";
+Blockly.Msg.Iot_Lcd_Screeninit_TOOLTIP= "LCD screen initialization";
+Blockly.Msg.Iot_Lcd_Screen_TOOLTIP= "Fill the LCD screen with color %1";
+Blockly.Msg.Iot_Lcd_Fill_Screen_With_Rgb_TOOLTIP= "Fill the LCD screen with the specified color";
+Blockly.Msg.Iot_Lcd_Set_Color_TOOLTIP= "Convert hexadecimal color code to RGB color value and return";
+Blockly.Msg.Iot_Lcd_Rgb_Value_Input_TOOLTIP= "Return the specified rgb value";
+Blockly.Msg.Iot_Lcd_Drawpixel_TOOLTIP= "Draw pixel on the screen";
+Blockly.Msg.Iot_Lcd_Linecarvas_TOOLTIP= "Draw line on the screen";
+Blockly.Msg.Iot_Lcd_Ractanglecarvas_TOOLTIP= "Draw %1 rectangle on the screen";
+Blockly.Msg.Iot_Lcd_Textcarvas_TOOLTIP= "Draw text on screen";
+Blockly.Msg.Iot_Lcd_Draw_ZedGraph_TOOLTIP= "Draw %1 statistical chart on the screen";
+Blockly.Msg.iot_lcd_clear_screen_TOOLTIP = "Clear LCD Screen";
+Blockly.Msg.Iot_Led_Matrix_Setup_TOOLTIP= "IoT module initialization LED light screen";
+Blockly.Msg.Iot_Led_Matrix_Set_Bright_TOOLTIP= "Set the brightness of the light screen";
+Blockly.Msg.Iot_Led_Matrix_xy_TOOLTIP= "Set ranks";
+Blockly.Msg.Iot_Led_Matrix_wh_TOOLTIP= "Set width and height";
+Blockly.Msg.Iot_Led_Matrix_Rgb_Value_Input_TOOLTIP= "Return the specified rgb value";
+Blockly.Msg.Iot_Led_Matrix_Draw_Pixel_TOOLTIP= "IoT module LED light screen drawing pixel";
+Blockly.Msg.Iot_Led_Matrix_Draw_Rectangle_TOOLTIP= "IoT module LED light screen drawing rectangle";
+Blockly.Msg.Iot_Led_Matrix_Show_Above_TOOLTIP= "The IoT module LED light screen display takes effect";
+Blockly.Msg.Esp32_Motor_Setup_TOOLTIP= "IoT module motor driver initialization";
+Blockly.Msg.Esp32_Motor_Run_TOOLTIP= "The IoT module sets the specified motor to rotate in the specified direction at the specified speed";
+Blockly.Msg.Esp32_Main_Controller_Servo_Setup_TOOLTIP= "IoT module servo initialization";
+Blockly.Msg.Esp32_Main_Controller_Servo_Set_TOOLTIP= "The IoT module sets the servo at the specified pin to rotate to the specified angle";
+
+Blockly.Msg.x_iot_read_gamepad_button_pressed_TOOLTIP= "When the button %1 on the gamepad is pressed";
+Blockly.Msg.x_iot_read_gamepad_button_released_TOOLTIP= "When the button %1 on the gamepad is released";
+Blockly.Msg.x_iot_read_gamepad_button_xr_TOOLTIP= "Get the level value of the button %1 on the gamepad";
+Blockly.Msg.x_iot_read_gamepad_joystick_check_TOOLTIP= "When Game Pad Joystick is %1";
+Blockly.Msg.x_iot_read_gamepad_joystick_TOOLTIP= "Get the analog value of the joystick %1 on the gamepad";
+Blockly.Msg.esp32_nbiot_setup_TOOLTIP= "Initialize NB-IoT module communication on %1 module";
+Blockly.Msg.esp32_nbiot_get_power_status_TOOLTIP= "Get the NB-IoT module activation status";
+Blockly.Msg.esp32_nbiot_get_network_status_TOOLTIP= "Get the NB-IoT module network connection status";
+Blockly.Msg.esp32_nbiot_get_network_ip_TOOLTIP= "Obtain the NB-IoT module network IP address";
+Blockly.Msg.iot_service_nbiot_cococloud_TOOLTIP= "NB-IoT module sends data to CocoCloud";
+Blockly.Msg.esp32_nbiot_onenet_init_TOOLTIP= "NB-IoT module connected to OneNET";
+Blockly.Msg.esp32_nbiot_onenet_connection_status_TOOLTIP= "NB-IoT module obtains OneNET connection status";
+Blockly.Msg.iot_service_nbiot_onenet_TOOLTIP= "NB-IoT module sends data to OneNET";
+Blockly.Msg.esp32_nbiot_onenet_read_value_TOOLTIP= "Get the instructions sent by the NB-IoT module from OneNET";
+Blockly.Msg.iot_service_nbiot_onenet_read_TOOLTIP= "When the NB-IoT module receives a message from OneNET, run the operation";
+Blockly.Msg.esp32_ble_setup_sender_TOOLTIP= "BLE (Bluetooth Low Energy) sender initialized";
+Blockly.Msg.esp32_ble_send_data_TOOLTIP= "BLE sends the specified data";
+Blockly.Msg.esp32_ble_setup_receiver_TOOLTIP= "BLE (Bluetooth Low Energy) Receiver initialized";
+Blockly.Msg.esp32_ble_get_data_TOOLTIP= "Returns data received by BLE";
+Blockly.Msg.esp32_ble_sender_connected_TOOLTIP= "Sender is Connected";
+Blockly.Msg.esp32_ble_receiver_connected_TOOLTIP= "Receiver is Connected";
+
+// ai
+Blockly.Msg.ai_k210_button_read_pressed_TOOLTIP= "When button %1 is pressed";
+Blockly.Msg.ai_k210_button_read_released_TOOLTIP= "When button %1 is released";
+Blockly.Msg.ai_k210_led_light_up_TOOLTIP= "Set %1 to light up";
+Blockly.Msg.ai_basic_light_up_led_analog_TOOLTIP= "Set the light brightness of %1";
+Blockly.Msg.ai_k210_led_light_off_TOOLTIP= "Set %1 turn off";
+Blockly.Msg.ai_system_restart_TOOLTIP= "Reboot the system";
+Blockly.Msg.ai_system_off_TOOLTIP= "To turn it off";
+Blockly.Msg.ai_system_refresh_TOOLTIP= "Refreshing a file directory";
+Blockly.Msg.ai_system_run_TOOLTIP= "Run the Python program in the specified path";
+
+Blockly.Msg.ai_mphone_init_TOOLTIP= "Microphone initialization";
+Blockly.Msg.mphone_audio_spectrum_init_TOOLTIP= "Start reading the audio spectrum";
+Blockly.Msg.ai_mphone_read_sound_sensitivity_TOOLTIP= "Get the audio spectrum collected by the microphone";
+Blockly.Msg.ai_mphone_Record_audio_init_TOOLTIP = "Microphone recording audio initialization";
+Blockly.Msg.ai_mphone_Record_audio_start_TOOLTIP = "Start recording and saving the audio";
+Blockly.Msg.ai_audio_stop_recording_TOOLTIP = "Stop recording audio";
+
+Blockly.Msg.ai_img_save_TOOLTIP= "Save the canvas locally and set the image compression quality";
+Blockly.Msg.ai_lcd_invert_color_TOOLTIP = "Invert the color of the canvas";
+Blockly.Msg.ai_lcd_resizecanvas_TOOLTIP = "Adjust the canvas to the specified size";
+Blockly.Msg.ai_lcd_color_scheme_TOOLTIP = "Convert the canvas to %1";
+Blockly.Msg.ai_lcd_img_cut_TOOLTIP = "The canvas is clipped as specified";
+Blockly.Msg.ai_vision_color_analyze_TOOLTIP = "Gets the color analysis result for the specified area of the canvas";
+Blockly.Msg.ai_vision_find_blobs_TOOLTIP = "Searches the canvas for the specified color palette";
+Blockly.Msg.ai_vision_get_threshold_default_TOOLTIP = "Sets the default color for color tracing to %1";
+Blockly.Msg.ai_vision_get_blobs_TOOLTIP = "Gets the recognition result for tracing the specified color";
+Blockly.Msg.ai_vision_get_statistics_TOOLTIP = "Obtain the results of color channel information analysis on canvas";
+Blockly.Msg.ai_vision_get_histogram_TOOLTIP = "Gets the result of a standardized histogram operation from the canvas";
+Blockly.Msg.ai_vision_get_histogram_percentile_TOOLTIP = "The CDF value of the histogram channel is obtained from the histogram calculation results";
+Blockly.Msg.ai_vision_get_histogram_percentile_detail_TOOLTIP = "%1 of the percentage value obtained from the histogram calculation results";
+Blockly.Msg.ai_vision_lab_rgb_conversion_TOOLTIP = "Run the color conversion %1";
+Blockly.Msg.ai_vision_rgb_grayscale_conversion_TOOLTIP = "Run the color conversion %1";
+Blockly.Msg.ai_vision_find_qrcode_TOOLTIP = "Get the detection result of QR code in canvas";
+Blockly.Msg.ai_vision_qrcode_get_info_TOOLTIP = "Gets %1 of the detected QR code from the variable";
+Blockly.Msg.ai_vision_find_apriltag_TOOLTIP = "Get the detection result of AprilTag in the canvas";
+Blockly.Msg.ai_vision_apriltag_get_info_TOOLTIP = "Gets %1 for detecting AprilTag from the variable";
+Blockly.Msg.ai_vision_find_datamatrices_TOOLTIP = "Gets the detection result of the data matrix in the canvas";
+Blockly.Msg.ai_vision_datamatrices_get_info_TOOLTIP = "Gets %1 of the detection data matrix from the variable";
+Blockly.Msg.ai_vision_find_barcodes_TOOLTIP = "Gets the detection result of the bar code in the canvas";
+Blockly.Msg.ai_vision_barcodes_get_info_TOOLTIP = "Gets %1 of the detected bar code from the variable";
+Blockly.Msg.ai_vision_find_circles_TOOLTIP = "Look for the circle on the canvas";
+Blockly.Msg.ai_vision_get_circles_TOOLTIP = "Gets the result of looking for a circle";
+Blockly.Msg.ai_vision_find_rects_TOOLTIP = "Look for the rectangular on the canvas";
+Blockly.Msg.ai_vision_get_rects_TOOLTIP = "Gets the result of looking for a rectangular";
+Blockly.Msg.ai_vision_find_lines_TOOLTIP = "Look for the straight line on the canvas";
+Blockly.Msg.ai_vision_get_lines_TOOLTIP = "Gets the result of looking for a straight line";
+
+// ai_video
+Blockly.Msg.ai_video_set_TOOLTIP = "Video playback requirements:Video file format——AVI,Video coding format——MJPG,Audio coding format——PCM";
+Blockly.Msg.ai_video_status_TOOLTIP = "Get the status of video playback";
+Blockly.Msg.ai_video_stop_play_TOOLTIP = "End video file playback";
+
+// ai_audio
+Blockly.Msg.speech_recognition_new_setup_TOOLTIP = "Speech recognition initialization";
+Blockly.Msg.speech_recognition_new_recording_sample_start_TOOLTIP = "Start recording voice clips";
+Blockly.Msg.speech_recognition_new_start_recognition_TOOLTIP = "Start doing speech recognition";
+Blockly.Msg.speech_recognition_new_recognition_get_result_TOOLTIP = "The result of speech recognition is the specified fragment";
+Blockly.Msg.speech_recognition_new_recognition_get_any_result_TOOLTIP = "When speech recognition gets any result, do the following";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_setup_TOOLTIP = "Phonetic to Pinyin initialization";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result_TOOLTIP = "Get the result of speech to pinyin";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_TOOLTIP = "Set phonetic recognition parameters";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_start_recognition_TOOLTIP = "Speech Recognition: Start Phonetic Recognition";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition_TOOLTIP = "Speech Recognition: End Phonetic Recognition";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition_TOOLTIP = "Speech Recognition: Pause Phonetic Recognition";
+
+// ai_models
+Blockly.Msg.ai_model_allinit_TOOLTIP = "Initialize the %1";
+Blockly.Msg.ai_model_allload_TOOLTIP = "Load the %1";
+Blockly.Msg.ai_model_index_mnist_TOOLTIP = "Get the detection result of handwritten digit detection model";
+Blockly.Msg.ai_model_get_TOOLTIP = "Gets %1 of the tested objects detected from the variable";
+Blockly.Msg.ai_model_look_TOOLTIP = "Any tested objects detected";
+Blockly.Msg.ai_model_look_attribute_TOOLTIP = "Tested Objects attribute";
+Blockly.Msg.ai_model_xy_TOOLTIP = "Gets %1 of the detected face from the variable";
+Blockly.Msg.ai_model_human_xy_TOOLTIP = "Gets %1 of the detected human body from the variable";
+Blockly.Msg.ai_model_face_TOOLTIP = "Recognized Any Human Face";
+Blockly.Msg.ai_model_face_attribute_TOOLTIP = "Face attribute";
+Blockly.Msg.ai_model_customized_init_setup_definition_TOOLTIP = "Before the program of the custom model runs, release the memory";
+Blockly.Msg.ai_model_customized_init_setup_TOOLTIP = "Initializes the custom model";
+Blockly.Msg.ai_model_customized_load_setup_TOOLTIP = "Loads the custom model";
+Blockly.Msg.ai_model_customized_if_got_TOOLTIP = "The object for the custom model has been identified";
+Blockly.Msg.ai_model_customized_attribute_TOOLTIP = "Custom model object attribute";
+Blockly.Msg.ai_model_customized_get_result_TOOLTIP = "Gets %1 from the variable from the recognition to the custom model result";
+
+Blockly.Msg.ai_model_face_setup_TOOLTIP = "Initializing customized Face Recognition";
+Blockly.Msg.ai_model_face_init_TOOLTIP = "Custom initializes the face recognition model";
+Blockly.Msg.ai_face_detection_model_TOOLTIP = "Initialize face detection model";
+Blockly.Msg.ai_face_point_detection_model_TOOLTIP = "Initialization of face 5-point key point detection model";
+Blockly.Msg.ai_face_Vitter_eigenvalue_model_TOOLTIP = "Initialization of face 196 Vitter eigenvalue model";
+Blockly.Msg.ai_model_face_load_point_detection_model_TOOLTIP = "Loading face 5-point key point detection model,and make certain settings";
+Blockly.Msg.ai_model_Calculation_of_196_eigenvalues_TOOLTIP = "Calculate 196 dimension eigenvalues of running face feature model";
+Blockly.Msg.ai_model_class_TOOLTIP = "Custom Initializing class recognition model";
+Blockly.Msg.ai_model_getface_TOOLTIP = "Custom Recognized face from customized model";
+Blockly.Msg.ai_model_getclass_TOOLTIP = "Recognized object from customized model";
+
+Blockly.Msg.ai_model_face_start_recognition_TOOLTIP = "Loading face detection model, and set the image source";
+Blockly.Msg.ai_model_face_model_load_finish_TOOLTIP = "Face detection model loading completed";
+Blockly.Msg.ai_model_face_gather_TOOLTIP = "Gather new face data and save face data";
+Blockly.Msg.ai_model_face_data_load_TOOLTIP = "Load saved face data";
+Blockly.Msg.ai_model_face_gather_num_judge_TOOLTIP = "Completed the face acquisition";
+Blockly.Msg.ai_model_face_model_list_TOOLTIP = "Face detection attribute";
+Blockly.Msg.ai_model_face_recognition_TOOLTIP = "Gather or load face data and carry out face recognition";
+Blockly.Msg.ai_model_face_recognition_get_result_TOOLTIP = "Face recognition gets arbitrary results";
+Blockly.Msg.ai_model_show_face_TOOLTIP = "Image processing and display";
+
+Blockly.Msg.ai_model_class_setup_TOOLTIP = "Initializing customized Class Recognition";
+Blockly.Msg.ai_class_model_TOOLTIP = "Initialize custom object feature extraction model";
+Blockly.Msg.ai_class_model_cluster_TOOLTIP = "Initialize custom object clustering parameters";
+Blockly.Msg.ai_model_class_start_load_TOOLTIP = "Set the image source and process the image";
+Blockly.Msg.ai_model_class_gather_TOOLTIP = "Start gathering class";
+Blockly.Msg.ai_model_class_data_load_TOOLTIP = "Loading class data";
+Blockly.Msg.ai_model_class_gather_load_finish_TOOLTIP = "Collect or load object data";
+Blockly.Msg.ai_model_class_cluster_train_TOOLTIP = "Start extract object features, and then cluster training";
+Blockly.Msg.ai_model_class_recognition_TOOLTIP = "Start object recognition";
+
+// ai_wifi
+Blockly.Msg.k210_wifi_enable_disable_TOOLTIP = "Set the Wi-Fi to %1";
+Blockly.Msg.k210_wifi_scan_TOOLTIP = "Start scanning nearby Wi-Fi hotspots";
+Blockly.Msg.k210_wifi_scan_get_TOOLTIP = "Get the results of the Wi-Fi scan as a list";
+Blockly.Msg.k210_wifi_connect_hotspot_TOOLTIP = "Connect to the specified Wi-Fi network";
+Blockly.Msg.k210_wifi_get_connection_status_TOOLTIP = "Gets the status of your Wi-Fi connection";
+Blockly.Msg.k210_wifi_get_config_TOOLTIP = "Gets the device specification information for a Wi-Fi connection";
+
+// ai_lcd
+Blockly.Msg.ai_lcd_screeninit_TOOLTIP = "LCD screen initialization";
+Blockly.Msg.ai_lcd_rotation_TOOLTIP = "Turns the LCD screen direction by the specified Angle";
+Blockly.Msg.ai_lcd_filp_TOOLTIP = "Whether to mirror the LCD screen";
+Blockly.Msg.ai_lcd_screen_TOOLTIP = "Fill the LCD screen with %1 color";
+Blockly.Msg.ai_lcd_fill_screen_with_rgb_TOOLTIP = "Fills the LCD screen with the specified RGB value";
+Blockly.Msg.ai_lcd_clear_TOOLTIP = "Clear the screen";
+Blockly.Msg.ai_lcd_rgb_value_input_TOOLTIP = "Returns the specified RGB value";
+Blockly.Msg.ai_lcd_XY_TOOLTIP = "Returns the specified x and y";
+Blockly.Msg.ai_lcd_WH_TOOLTIP = "Returns the specified width and height";
+Blockly.Msg.ai_lcd_createnonecarvas_TOOLTIP = "Creates a blank canvas of the specified size";
+Blockly.Msg.ai_lcd_fillcanvas_TOOLTIP = "Fills the canvas with the specified color";
+Blockly.Msg.ai_lcd_createcarvas_TOOLTIP = "Create an image canvas";
+Blockly.Msg.ai_lcd_showcarvas_set_cord_TOOLTIP = "Sets the starting point coordinates of the canvas";
+Blockly.Msg.ai_lcd_textcarvas_TOOLTIP = "Draw text on the canvas";
+Blockly.Msg.ai_lcd_characterscarvas_TOOLTIP = "Draw Hanzi characters on the canvas";
+Blockly.Msg.ai_lcd_linecarvas_TOOLTIP = "Draw a straight line on the canvas";
+Blockly.Msg.ai_lcd_ractanglecarvas_TOOLTIP = "Draws %1 rectangle on the canvas";
+Blockly.Msg.ai_lcd_drawcirclecarvas_TOOLTIP = "Draw the %1 circle on the canvas";
+Blockly.Msg.ai_lcd_draw_cross_sign_TOOLTIP = "Draw a cross symbol on the canvas";
+Blockly.Msg.ai_lcd_draw_arrow_sign_TOOLTIP = "Draw the arrow on the canvas";
+Blockly.Msg.ai_lcd_draw_image_on_canvas_TOOLTIP = "Draw the picture on the canvas";
+Blockly.Msg.ai_lcd_draw_sensor_image_on_canvas_TOOLTIP = "Draw the Image Captured from Camera on the canvas";
+Blockly.Msg.ai_lcd_showcarvas_set_display_TOOLTIP = "Show canvas";
+Blockly.Msg.ai_lcd_clearcanvas_TOOLTIP = "Clear everything in the canvas";
+Blockly.Msg.ai_lcd_qrcode_TOOLTIP = "Draw QR code on the canvas";
+
+// ai_led
+Blockly.Msg.ai_led_matrix_setup_TOOLTIP= "A.I. module initialization LED light screen";
+Blockly.Msg.ai_led_matrix_set_bright_TOOLTIP= "Set the brightness of the light screen";
+Blockly.Msg.ai_led_matrix_xy_TOOLTIP= "Set ranks";
+Blockly.Msg.ai_led_matrix_wh_TOOLTIP= "Set width and height";
+Blockly.Msg.ai_led_matrix_rgb_value_input_TOOLTIP= "Return the specified rgb value";
+Blockly.Msg.ai_led_matrix_draw_pixel_TOOLTIP= "A.I. module LED light screen drawing pixel";
+Blockly.Msg.ai_led_matrix_draw_rectangle_TOOLTIP= "A.I. module LED light screen drawing rectangle";
+Blockly.Msg.ai_led_matrix_show_above_TOOLTIP= "Show pattern";
+Blockly.Msg.ai_led_matrix_clear_screen_TOOLTIP= "Clear light screen";
+
+// ai_speaker
+Blockly.Msg.ai_audio_init_speaker_TOOLTIP = "Horn initialization";
+Blockly.Msg.ai_audio_play_song_speaker_TOOLTIP = "Play audio files(Single tune circulation)";
+Blockly.Msg.ai_audio_play_song_speaker_list_loop_TOOLTIP = "Play audio files(Sequential play)";
+Blockly.Msg.ai_audio_play_music_file_list_random_TOOLTIP = "Play audio files(Random play)";
+Blockly.Msg.ai_audio_play_state_speaker_TOOLTIP = "Get the play state of playing file";
+Blockly.Msg.ai_audio_play_finish_speaker_TOOLTIP = "End audio playing";
+Blockly.Msg.ai_audio_set_speaker_TOOLTIP = "Set Playing Volume";
+Blockly.Msg.ai_audio_files_list_TOOLTIP = "Get the list of audio files in the current path";
+
+// ai_camera
+Blockly.Msg.ai_camera_init_TOOLTIP = "Camera Initialization";
+Blockly.Msg.ai_camera_fit_to_screen_size_TOOLTIP = "Set the size of the camera's capture image";
+Blockly.Msg.ai_camera_windows_TOOLTIP = "Adjust the size of the image captured by the camera";
+Blockly.Msg.ai_camera_snapshot_TOOLTIP = "Gets the image captured by the camera";
+Blockly.Msg.ai_camera_lens_corr_TOOLTIP = "GCorrect wide Angle lens screen";
+Blockly.Msg.ai_camera_image_property_change_TOOLTIP = "Set the state of the camera image %1";
+Blockly.Msg.ai_camera_bcs_operation_TOOLTIP = "Set %1 of the camera image";
+Blockly.Msg.ai_video_record_setup_TOOLTIP = "Start recording and saving the video";
+Blockly.Msg.ai_video_get_TOOLTIP = "Record the canvas";
+Blockly.Msg.ai_video_stop_TOOLTIP = "Stop recording video";
+
+// ai_motor
+Blockly.Msg.ai_motor_setup_TOOLTIP = "A.I. module motor driver initialization";
+Blockly.Msg.ai_motor_run_TOOLTIP = "The A.I. module sets the specified motor to rotate in the specified direction at the specified speed";
+
+// ai_EFSG
+Blockly.Msg.extension_servo_setup_on_ai_TOOLTIP = "module servo initialization";
+Blockly.Msg.extension_servo_write_on_ai_TOOLTIP = "module sets the servo at the specified pin to rotate to the specified angle";
+
+// ai_EFGH
+Blockly.Msg.x_ai_read_gamepad_button_pressed_TOOLTIP= "When the button %1 on the gamepad is pressed";
+Blockly.Msg.x_ai_read_gamepad_button_released_TOOLTIP= "When the button %1 on the gamepad is released";
+Blockly.Msg.x_ai_read_gamepad_button_xr_TOOLTIP= "Get the level value of the button %1 on the gamepad";
+Blockly.Msg.x_ai_read_gamepad_joystick_check_TOOLTIP= "When Game Pad Joystick is %1";
+Blockly.Msg.x_ai_read_gamepad_joystick_TOOLTIP= "Get the analog value of the joystick %1 on the gamepad";
+
+Blockly.Msg.CocoRobo_try_except_TOOLTIP= "Detect errors in the try statement block so that the except statement catches exception information and handles it";
+Blockly.Msg.CocoRobo_try_except_finally_TOOLTIP= "Detect errors in the try block so that the except statement catches exception information and handles it, and the finally statement executes regardless of whether an exception is generated";
+
+Blockly.Msg.Pedometer_Init_TOOLTIP="Initialize Pedometer";
+Blockly.Msg.Pedometer_Run_TOOLTIP="Run Pedometer";
+Blockly.Msg.Pedometer_Get_TOOLTIP="Get Count";
+
+Blockly.Msg.ai_vision_canvas_area_tuple_TOOLTIP = "Create area tuple";
+Blockly.Msg.ai_vision_lane_tracking_setup_TOOLTIP = "Initialization of road tracking recognition";
+Blockly.Msg.ai_vision_from_canvas_TOOLTIP = "Run road tracking recognition";
+Blockly.Msg.ai_vision_lane_tracking_run_get_TOOLTIP = "Obtain the result of road tracking recognition";
+
+/* mlx90614 */
+Blockly.Msg.MLX90614_SETUP_TOOLTIP = "%1 MLX90614 sensor initialization";
+Blockly.Msg.MLX90614_READ_AMBIENT_TOOLTIP = "Get Current Ambient Temperature";
+Blockly.Msg.MLX90614_READ_OBJECT_TOOLTIP = "Get Targeted Object's Temperature";
+
+/* DHT11 or DHT22 */
+Blockly.Msg.DHT_SETUP_TOOLTIP = "%1 DHT sensor initialization";
+
+/* PM2.5 */
+Blockly.Msg.PM25_SETUP_TOOLTIP = "%1 PM2.5 sensor initialization";
+Blockly.Msg.PM25_REDD_DATA_TOOLTIP = "Get PM2.5 value";
+
+/* RTC */
+Blockly.Msg.RTC_setup_TOOLTIP = "RTC Module initialization";
+Blockly.Msg.RTC_setDateTime_TOOLTIP = "Set Date,Time and Week";
+Blockly.Msg.RTC_GETDATE_TOOLTIP = "Get Current Date %1";
+Blockly.Msg.RTC_GETTIME_TOOLTIP = "Get Current Time %1";
+Blockly.Msg.RTC_getWeek_TOOLTIP = "Get Current Week";
+Blockly.Msg.RTC_SETDATE_TOOLTIP = "Set Current Date %1 to a specific value";
+Blockly.Msg.RTC_SETTIME_TOOLTIP = "Set Current Time %1 to a specific value";
+Blockly.Msg.RTC_setWeek_TOOLTIP = "Set Current Week to a specific value";
+Blockly.Msg.RTC_getDateTime_TOOLTIP = "Get Date,Time and Week";
+
+/* robot dog */
+Blockly.Msg.robot_dog_movement_action_TOOLTIP = "Speech control robot dog initialization";
+Blockly.Msg.robot_dog_phonetic_to_pinyin_get_result_TOOLTIP = "Get the result of speech recognition";
+Blockly.Msg.robot_dog_setup_TOOLTIP = "Robot dog initialization";
+Blockly.Msg.robot_dog_action_TOOLTIP = "The robot dog executes the %1 instruction";
+Blockly.Msg.robot_dog_servo_movement_TOOLTIP = "Set a specific leg specific joint servo to rotate to a specific degree";
+Blockly.Msg.robot_dog_servo_speed_TOOLTIP = "Set the specific speed to %1";
+Blockly.Msg.robot_dog_servo_movement_location_TOOLTIP = "Set the position of the toe of a specific leg in a specific direction to a specific value";
+Blockly.Msg.robot_dog_open_gyroscope_TOOLTIP = "%1 Gyroscope";
+Blockly.Msg.robot_dog_open_performance_mode_TOOLTIP = "%1 Performance mode of Robot dog";
+Blockly.Msg.robot_dog_open_calibration_mode_TOOLTIP = "%1 Robot dog calibration mode";
+Blockly.Msg.robot_dog_get_power_TOOLTIP = "Get the current power of the robot dog";
+Blockly.Msg.robot_dog_servo_movement_distance_TOOLTIP = "Set the step size of the robot dog to execute the translation movement in %1 direction to a specific value";
+Blockly.Msg.robot_dog_servo_movement_rotate_TOOLTIP = "Set the rotation speed of the robot dog in %1 direction to a specific value";
+Blockly.Msg.robot_dog_servo_movement_standing_still_TOOLTIP = "Set the robot dog to perform standing still at a fixed frequency with a specific leg lifting height";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_TOOLTIP = "Set the step size of the robot dog to execute the translation movement in %1 direction to a specific value for a specific second";
+Blockly.Msg.robot_dog_servo_movement_rotate_cycle_TOOLTIP = "Set the rotation speed of the robot dog in %1 direction to a specific value for a specific second";
+Blockly.Msg.robot_dog_servo_movement_standing_still_cycle_TOOLTIP = "Set the robot dog to perform standing still at a fixed frequency with a specific leg lifting height for a specific second";
+Blockly.Msg.robot_dog_servo_movement_distance_still_TOOLTIP = "Set the robot dog %1 direction translation specific millimeter";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_TOOLTIP = "Set the robot dog to translate %1 in a specific cycle";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_TOOLTIP = "Set a specific value for the dog to rotate around the %1 axis";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_TOOLTIP = "Set the robot dog to rotate around the %1 axis at a specific cycle";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_stop_TOOLTIP = "Stop the cycle translation of the robot dog towards %1";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_stop_TOOLTIP = "Stop the cycle of the robot dog around the %1 axis";
+Blockly.Msg.robot_dog_get_servo_angle_TOOLTIP = "Gets the angle of the steering gear for a specific leg joint";
+Blockly.Msg.robot_dog_get_rotate_angle_TOOLTIP = "Gets the angle of gyro about %1 axis";
+
+/* uav */
+Blockly.Msg.Take_off_TOOLTIP = "Set the takeoff altitude of the UAV with the specified number to the specified cm";
+Blockly.Msg.uav_fly_mode_TOOLTIP = "Set the specified number UAV to switch the specified flight mode";
+Blockly.Msg.xy_speed_TOOLTIP = "Set the horizontal speed of the UAV with the specified number to the specified value";
+Blockly.Msg.z_speed_TOOLTIP = "Set the vertical speed of the UAV with the specified number to the specified value";
+Blockly.Msg.follow_line_TOOLTIP = "Set the specified number of UAV to patrol the line in the specified direction";
+Blockly.Msg.mobile_distance_TOOLTIP = "Set the specified number UAV to fly the specified distance in the specified direction";
+Blockly.Msg.move_search_dot_TOOLTIP = " and look for small black pieces";
+Blockly.Msg.move_search_tag_TOOLTIP = " and find the specified label";
+Blockly.Msg.move_search_blob_TOOLTIP = " and find the specified color block";
+Blockly.Msg.go_to_TOOLTIP = "Set the specified number UAV direct to the specified label";
+Blockly.Msg.go_to_tag_TOOLTIP = " and set the specified height";
+Blockly.Msg.uav_rotation_TOOLTIP = "Set the specified number UAV rotation angle";
+Blockly.Msg.uav_fly_height_TOOLTIP = "Sets the height of the UAV with the specified number";
+Blockly.Msg.filp_ctrl_TOOLTIP = "Set the specified number of revolutions of UAV in the specified direction";
+Blockly.Msg.led_ctrl_TOOLTIP = "Sets the light color of the specified number UAV";
+Blockly.Msg.off_led_ctrl_TOOLTIP = "Set the specified number UAV to turn off the light";
+Blockly.Msg.uav_detection_TOOLTIP = "Set the specified number and UAV detects the specified object";
+Blockly.Msg.mangne_ctrl_TOOLTIP = "Set the specified number of UAV operation electromagnets";
+Blockly.Msg.servo_ctrl_TOOLTIP = "Set the steering gear angle of the UAV with the specified number as the specified value";
+Blockly.Msg.role_ctrl_TOOLTIP = "Set the command of the UAV with the specified number as the specified command";
+Blockly.Msg.lock_dir_TOOLTIP = "Set the specified number UAV management head direction";
+Blockly.Msg.shoot_crtl_TOOLTIP = "Set the specified number of UAV to emit laser";
+Blockly.Msg.switch_crtl_TOOLTIP = "Sets the status of the UAV of the specified number to on or off";
+Blockly.Msg.ai_crtl_TOOLTIP = "Set the specified number, and the UAV AI switches to the specified mode";
+Blockly.Msg.ai_learing_TOOLTIP = "Set the ID of UAV learning of the specified number as the specified value";
+Blockly.Msg.ai_forget_TOOLTIP = "Set the specified number, and the UAV forgets all the learned data";
+Blockly.Msg.ai_set_name_TOOLTIP = "Set the name of the specified ID of the specified number UAV as the specified value";
+Blockly.Msg.ai_save_img_TOOLTIP = "Set the specified number and save the photos taken or screenshots of UAV to SD card";
+Blockly.Msg.fly_ctrl_TOOLTIP = "Set the status of the UAV with the specified number";
+Blockly.Msg.uav_detection_if_TOOLTIP = "The specified number UAV detects the specified object";
+Blockly.Msg.uav_detection_if_line_TOOLTIP = "The specified number UAV detects the specified direction wire";
+Blockly.Msg.uav_get_distance_of_obstacles_TOOLTIP = "Gets the obstacle distance of the specified number UAV in the specified direction";
+Blockly.Msg.uav_get_value_TOOLTIP = "Gets the specified value of the specified number UAV";
+Blockly.Msg.uav_get_AI_value_TOOLTIP = "Gets AI recognition results of UAV with specified number";
+Blockly.Msg.uav_get_electronic_balance_value_TOOLTIP = "Gets the scale reading of the UAV with the specified number";
+Blockly.Msg.uav_get_shooting_value_TOOLTIP = "Gets firing data of UAV with specified number";
+Blockly.Msg.uav_get_msg_value_TOOLTIP = "Get the message data of UAV with specified number";
+
+/* expand */
+Blockly.Msg.esp32_expand_io_from_digital_pin_TOOLTIP = "Get the digital signal value of GPIO # %1";
+Blockly.Msg.esp32_expand_io_set_digital_pin_TOOLTIP = "Set the GPIO # %1 to the specified level";
+Blockly.Msg.esp32_expand_io_set_analog_pin_TOOLTIP = "Set GPIO # %1 PWM Output to the specified value";
+
+/* KUJU */
+Blockly.Msg.iot_service_KUJU_setup_TOOLTIP = "Connect to KUJU through account and password";
+Blockly.Msg.iot_service_KUJU_controll_TOOLTIP = "Send data to KUJU control Smart Plug";
+Blockly.Msg.iot_service_KUJU_get_temperature_humidity_data_TOOLTIP = "Obtain the specific value of the temperature sensor";
+Blockly.Msg.iot_service_KUJU_get_motion_data_TOOLTIP = "Obtain the specific value of the motion sensor";
+Blockly.Msg.iot_service_KUJU_get_sensor_data_TOOLTIP = "Obtain the specific value of the specific sensor";
+
+// Wetech
+Blockly.Msg.wifiServices_WeTech_setup_TOOLTIP = "Connect specific gateway of specific account under WeTech";
+Blockly.Msg.wifiServices_WeTech_controll_derail_TOOLTIP = "Send data to WeTech to control the on and off of specific three-way lamp surface switch";
+Blockly.Msg.wifiServices_WeTech_controll_derail_second_way_TOOLTIP = "Send data to WeTech to control the on and off of specific Second-way lamp surface switch";
+Blockly.Msg.wifiServices_WeTech_controll_derail_curtain_sensor_TOOLTIP = "Send data to WeTech to control the specific Curtain Sensor's (for projector Screen) status";
+Blockly.Msg.wifiServices_WeTech_controll_derail_air_conditioning_mode_TOOLTIP = "Send data to WeTech to control the specific Air Conditioner's pattern";
+Blockly.Msg.wifiServices_WeTech_controll_derail_wind_speed_mode_TOOLTIP = "Send data to WeTech to control the specific Air Conditioner's wind speed";
+Blockly.Msg.wifiServices_WeTech_controll_derail_temp_TOOLTIP = "Send data to WeTech to control the specific Air Conditioner's temperature";
+Blockly.Msg.wifiServices_WeTech_controll_derail_all_mode_TOOLTIP = "Send data to WeTech to control the specific Air Conditioner";
+Blockly.Msg.wifiServices_WeTech_controll_derail_IR_TOOLTIP = "Send data to WeTech to control the specific TV IR (for TV and Projector)";
+Blockly.Msg.wifiServices_WeTech_controll_derail_get_power_meter_TOOLTIP = "Get the Power Meter's value";
+Blockly.Msg.wifiServices_WeTech_controll_derail_get_sensor_number_TOOLTIP = "Get the %1 value";
+
+// tuya
+Blockly.Msg.iot_service_tuya_TOOLTIP = "Connect to Tuya through Access ID and Access Secret";
+Blockly.Msg.iot_service_tuya_setToken_TOOLTIP = "When gets the access token by connecting tuya, do the following";
+Blockly.Msg.iot_service_tuya_controll_light_belt_TOOLTIP = "Control the intelligent light belt to a specific state";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_TOOLTIP = "Control the color of the intelligent light belt to a specific value";
+
+// turtle
+Blockly.Msg.TURTLE_CREATE_NE_TURTLE_TLTLE_TOOLTIP = "Creates a new turtle";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_TOOLTIP = "Let the turtle move forward to the specified value";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_TOOLTIP = "Let the turtle go back to the specified value";
+Blockly.Msg.TURTLE_MAKE_TURN_LEFT_TOOLTIP = "Make the turtle turn left at the specified angle";
+Blockly.Msg.TURTLE_MAKE_TURN_RIGHT_TOOLTIP = "Make the turtle turn right at the specified angle";
+Blockly.Msg.TURTLE_MAKE_TURRLE_COLOR_TOOLTIP = "Set the color of the turtle brush";
+Blockly.Msg.TURTLE_MAKE_TURRLE_PEN_TOOLTIP = "Let the turtle paint %1";
+Blockly.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X_TOOLTIP = "Let the turtle go to the designated location";
+Blockly.Msg.TURTLE_MAKE_TURTLE_SET_POSITION_TOOLTIP = "Set the position of the turtle brush";
+Blockly.Msg.TURTLE_MAKE_SET_HEADING_TOOLTIP = "Rotate the turtle to the specified angle";
+Blockly.Msg.TURTLE_RESET_TOOLTIP = "Reset the position of the brush";
+Blockly.Msg.TURTLE_CLEAR_TOOLTIP = "Clear everything";
+
+Blockly.Msg.ADD_COMMENT = "Add Comment";
+Blockly.Msg.ARD_ANALOGREAD = "Read analog pin#";
+Blockly.Msg.ARD_ANALOGREAD_TIP = "Return value between 0 and 1024";
+Blockly.Msg.ARD_ANALOGWRITE = "Set analog pin#";
+Blockly.Msg.ARD_ANALOGWRITE_TIP = "Write analog value between 0 and 255 to a specific PWM Port";
+Blockly.Msg.ARD_BUILTIN_LED = "Set built-in LED";
+Blockly.Msg.ARD_BUILTIN_LED_TIP = "Light on or off for the built-in LED of the Arduino";
+Blockly.Msg.ARD_COMPONENT_WARN1 = "A %1 configuration block with the same %2 name must be added to use this block!";
+Blockly.Msg.ARD_DEFINE = "Define";
+Blockly.Msg.ARD_DIGITALREAD = "Read digital pin#";
+Blockly.Msg.ARD_DIGITALREAD_TIP = "Read digital value on a pin: HIGH or LOW";
+Blockly.Msg.ARD_DIGITALWRITE = "Set digital pin#";
+Blockly.Msg.ARD_DIGITALWRITE_TIP = "Write digital value HIGH or LOW to a specific Port";
+Blockly.Msg.ARD_FUN_RUN_LOOP = "CocoBlockly V loop forever:";
+Blockly.Msg.ARD_FUN_RUN_SETUP = "CocoBlockly V run first:";
+Blockly.Msg.ARD_FUN_RUN_TIP = "Defines the Arduino setup() and loop() functions.";
+Blockly.Msg.ARD_HIGH = "HIGH";
+Blockly.Msg.ARD_HIGHLOW_TIP = "Set a pin state logic High or Low.";
+Blockly.Msg.ARD_LOW = "LOW";
+Blockly.Msg.ARD_MAP = "Map";
+Blockly.Msg.ARD_MAP_TIP = "Re-maps a number from [0-1024] to another.";
+Blockly.Msg.ARD_MAP_VAL = "Value to [0-";
+Blockly.Msg.ARD_NOTONE_PIN = "No tone";
+Blockly.Msg.ARD_NOTONE_PIN_TIP = "Stop generating a tone on a pin";
+Blockly.Msg.ARD_PIN_WARN1 = "Pin %1 is needed for %2 as pin %3. Already used as %4.";
+Blockly.Msg.ARD_PULSEON = "Pulse on pin #";
+Blockly.Msg.ARD_PULSEREAD = "Read";
+Blockly.Msg.ARD_PULSETIMEOUT = "Timeout after";
+Blockly.Msg.ARD_PULSETIMEOUT_MS = "";
+Blockly.Msg.ARD_PULSETIMEOUT_TIP = "Measure the duration of the selected interface pulse and check if it falls within the timeout period.";
+Blockly.Msg.ARD_PULSE_TIP = "Measures the duration of a pulse on the selected pin.";
+Blockly.Msg.ARD_PWMWRITE = "Set pwm pin#";
+Blockly.Msg.ARD_SERIAL_AVAILABLE = "Avalible";
+Blockly.Msg.ARD_SERIAL_BPS = "Bps";
+Blockly.Msg.ARD_SERIAL_PRINT = "Print";
+Blockly.Msg.ARD_SERIAL_PRINT_NEWLINE = "Add new line";
+Blockly.Msg.ARD_SERIAL_PRINT_TIP = "Print the data in readable ASCII text format to the console or serial port.";
+Blockly.Msg.ARD_SERIAL_PRINT_WARN = "Serial-related initialization blocks need to be added.";
+Blockly.Msg.ARD_SERIAL_READ = "Read";
+Blockly.Msg.ARD_SERIAL_SETUP = "Setup";
+Blockly.Msg.ARD_SERIAL_SETUP_TIP = "Selects the speed for a specific Serial peripheral";
+Blockly.Msg.ARD_SERIAL_SPEED = ":  speed to";
+Blockly.Msg.ARD_SERIAL_WRITE = "Write";
+Blockly.Msg.ARD_SERVO_READ = "Read SERVO from PIN#";
+Blockly.Msg.ARD_SERVO_READ_TIP = "Read a Servo angle";
+Blockly.Msg.ARD_SERVO_SETUP = "Servo Setup";
+Blockly.Msg.ARD_SERVO_WRITE = "Set SERVO from Pin";
+Blockly.Msg.ARD_SERVO_WRITE_DEG_180 = "Degrees (0~180)";
+Blockly.Msg.ARD_SERVO_WRITE_TIP = "Set a Servo to an specified angle";
+Blockly.Msg.ARD_SERVO_WRITE_TO = "To";
+Blockly.Msg.ARD_SPI_SETUP = "Setup";
+Blockly.Msg.ARD_SPI_SETUP_CONF = "Configuration:";
+Blockly.Msg.ARD_SPI_SETUP_DIVIDE = "Clock divide";
+Blockly.Msg.ARD_SPI_SETUP_LSBFIRST = "LSBFIRST";
+Blockly.Msg.ARD_SPI_SETUP_MODE = "SPI mode (idle - edge)";
+Blockly.Msg.ARD_SPI_SETUP_MODE0 = "0 (Low - Falling)";
+Blockly.Msg.ARD_SPI_SETUP_MODE1 = "1 (Low - Rising)";
+Blockly.Msg.ARD_SPI_SETUP_MODE2 = "2 (High - Falling)";
+Blockly.Msg.ARD_SPI_SETUP_MODE3 = "3 (High - Rising)";
+Blockly.Msg.ARD_SPI_SETUP_MSBFIRST = "MSBFIRST";
+Blockly.Msg.ARD_SPI_SETUP_SHIFT = "Data shift";
+Blockly.Msg.ARD_SPI_SETUP_TIP = "Configures the SPI peripheral.";
+Blockly.Msg.ARD_SPI_TRANSRETURN_TIP = "Send a SPI message to an specified slave device and get data back.";
+Blockly.Msg.ARD_SPI_TRANS_NONE = "None";
+Blockly.Msg.ARD_SPI_TRANS_SLAVE = "To slave pin";
+Blockly.Msg.ARD_SPI_TRANS_TIP = "Send a SPI message to an specified slave device.";
+Blockly.Msg.ARD_SPI_TRANS_VAL = "Transfer";
+Blockly.Msg.ARD_SPI_TRANS_WARN1 = "A setup block for %1 must be added to the workspace to use this block!";
+Blockly.Msg.ARD_SPI_TRANS_WARN2 = "Old pin value %1 is no longer available.";
+Blockly.Msg.ARD_STEPPER_COMPONENT = "Stepper";
+Blockly.Msg.ARD_STEPPER_DEFAULT_NAME = "MyStepper";
+Blockly.Msg.ARD_STEPPER_MOTOR = "Stepper motor:";
+Blockly.Msg.ARD_STEPPER_PIN1 = "Pin1#";
+Blockly.Msg.ARD_STEPPER_PIN2 = "Pin2#";
+Blockly.Msg.ARD_STEPPER_REVOLVS = "How many steps per revolution";
+Blockly.Msg.ARD_STEPPER_SETUP = "Setup stepper motor";
+Blockly.Msg.ARD_STEPPER_SETUP_TIP = "Configuring stepper motor interface alignment and other settings.";
+Blockly.Msg.ARD_STEPPER_SPEED = "Set speed (rpm) to";
+Blockly.Msg.ARD_STEPPER_STEP = "Move stepper";
+Blockly.Msg.ARD_STEPPER_STEPS = "Steps";
+Blockly.Msg.ARD_STEPPER_STEP_TIP = "Turns the stepper motor a specific number of steps.";
+Blockly.Msg.ARD_TIME_CHRONO_CHECK = "Stopwatch has passed";
+Blockly.Msg.ARD_TIME_CHRONO_CHECK1 = "Ms";
+Blockly.Msg.ARD_TIME_CHRONO_ELAPSED = "Stopwatch elapsed";
+Blockly.Msg.ARD_TIME_CHRONO_RESET = "Reset Stopwatch";
+Blockly.Msg.ARD_TIME_CHRONO_SETUP = "Stopwatch Setup";
+Blockly.Msg.ARD_TIME_DELAY = "Wait";
+Blockly.Msg.ARD_TIME_DELAY_MICROS = "Microseconds";
+Blockly.Msg.ARD_TIME_DELAY_MICRO_TIP = "Wait for a certain amount of time (in microseconds)";
+Blockly.Msg.ARD_TIME_DELAY_TIP = "Wait for a certain amount of time (in milliseconds)";
+Blockly.Msg.ARD_TIME_DELAY_seconds_TIP = "Wait for a certain amount of time (in seconds)";
+Blockly.Msg.ARD_TIME_DELAY_seconds = "Seconds";
+Blockly.Msg.ARD_TIME_DO = "Do";
+Blockly.Msg.ARD_TIME_DO_MS = "Do";
+Blockly.Msg.ARD_TIME_EVERY = "Every";
+Blockly.Msg.ARD_TIME_EVERY_MS = "Every";
+Blockly.Msg.ARD_TIME_INF = "Wait forever (end program)";
+Blockly.Msg.ARD_TIME_INF_TIP = "Wait indefinitely, stopping the program.";
+Blockly.Msg.ARD_TIME_MICROS = "Current elapsed Time (microseconds)";
+Blockly.Msg.ARD_TIME_MICROS_TIP = "Retrieve the number of microseconds since the beginning of the program's execution on the Arduino board. It must be stored as a long integer data type.";
+Blockly.Msg.ARD_TIME_MILLIS = "Current elapsed Time (milliseconds)";
+Blockly.Msg.ARD_TIME_MILLIS_TIP = "Return the number of milliseconds since the Arduino board started executing the current program, stored as a long integer.";
+Blockly.Msg.ARD_TIME_MS = "Milliseconds";
+Blockly.Msg.ARD_TIME_SECOND = "Second(s)";
+Blockly.Msg.ARD_TIME_SECOND_MS = "Millisecond(s)";
+Blockly.Msg.ARD_TONE_FREQ = "Frequency";
+Blockly.Msg.ARD_TONE_PIN = "Tone PIN#";
+Blockly.Msg.ARD_TONE_PIN_TIP = "Generate audio tones on a pin";
+Blockly.Msg.ARD_TYPE_ARRAY = "Array";
+Blockly.Msg.ARD_TYPE_BOOL = "Boolean";
+Blockly.Msg.ARD_TYPE_CHAR = "Character";
+Blockly.Msg.ARD_TYPE_CHILDBLOCKMISSING = "ChildBlockMissing";
+Blockly.Msg.ARD_TYPE_DECIMAL = "Decimal";
+Blockly.Msg.ARD_TYPE_LONG = "Large Number";
+Blockly.Msg.ARD_TYPE_NULL = "Null";
+Blockly.Msg.ARD_TYPE_NUMBER = "Number";
+Blockly.Msg.ARD_TYPE_SHORT = "Short Number";
+Blockly.Msg.ARD_TYPE_TEXT = "Text";
+Blockly.Msg.ARD_TYPE_UNDEF = "Undefined";
+Blockly.Msg.ARD_VAR_AS = "As";
+Blockly.Msg.ARD_VAR_AS_TIP = "Sets a value to a specific type";
+Blockly.Msg.ARD_WRITE_TO = "To";
+Blockly.Msg.AUTH = "Please authorize this application to save your work and share it.";
+Blockly.Msg.BASIC_AS = "As";
+Blockly.Msg.BASIC_BLACK_OUT = "Black out";
+Blockly.Msg.BASIC_BRTN = "Brightness";
+Blockly.Msg.BASIC_BUZZER_PLAY = "Buzzer plays ";
+Blockly.Msg.BASIC_BUZZER_SETUP = "Buzzer Setup";
+Blockly.Msg.BASIC_COUNTER_SETTING = "On button";
+Blockly.Msg.BASIC_COUNTER_SETUP = "Set Counter ";
+Blockly.Msg.BASIC_FOR = "For";
+Blockly.Msg.BASIC_FROM = "From";
+Blockly.Msg.BASIC_HZ = "Hz";
+Blockly.Msg.BASIC_IF_SWITCH = "If switch ";
+Blockly.Msg.BASIC_IS = " Is ";
+Blockly.Msg.BASIC_LIGHT_PIN = "Light Pin#";
+Blockly.Msg.BASIC_LIGHT_WARNING = "Brightness must be in range 0 - 255";
+Blockly.Msg.BASIC_MUTE = "Mute";
+Blockly.Msg.BASIC_NOLCD = "Turn off the light on pin# %1";
+Blockly.Msg.BASIC_NOTONE = "Turn off the tone on pin# %1";
+Blockly.Msg.BASIC_NOTONE_TIP = "Turns the tone off on the selected pin";
+Blockly.Msg.BASIC_PIN_NUM = "Pin#";
+Blockly.Msg.BASIC_READBUTTON = "Read the status of button on pin# %1";
+Blockly.Msg.BASIC_READCOUNTER = "Read the value of counter on button %1";
+Blockly.Msg.BASIC_READKNOB = "Read the value of knob on pin# %1";
+Blockly.Msg.BASIC_SET = "Set";
+Blockly.Msg.BASIC_SETANALOGLED = "Set the light on pin# %1 at brightness %2";
+Blockly.Msg.BASIC_SETDIGITALLED = "Turn on the light on pin# %1";
+Blockly.Msg.BASIC_SETTONE = "Set the tone on pin# %1 at frequency %2";
+Blockly.Msg.BASIC_SET_PIN = "Set Pin#";
+Blockly.Msg.BASIC_TO = "To";
+Blockly.Msg.BASIC_TONE_TIP = "Sets tone on pin to specified frequency within range 31 - 65535";
+Blockly.Msg.BASIC_TONE_WARNING = "Frequency must be in range 31 - 65535";
+Blockly.Msg.BLUE = "Blue";
+Blockly.Msg.BLUETOOTH_INTERACTION_SET_CONTENT = "Set the serial port baud rate to:";
+Blockly.Msg.BLUETOOTH_INTERACTION_TITLE = "Bluetooth Module Enter AT Mode";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_DATA = "Data";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG = "Receive data";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG_ISSUCCESS = "Receive data successfully";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2 = "Get data at ";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2_2 = "bit data";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE3 = "As Type";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_LINE3 = "With length of ";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SENDMSG = "Send data ";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP = "Bluetooth to Bluetooth communication.";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP1 = "For Bluetooth communication";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP2 = "Initialization";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED = "From";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED1 = "Get value at index";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED2 = "value of the bit.";
+Blockly.Msg.BLUETOOTH_NUMBER_RECEIVED = "Received number";
+Blockly.Msg.BLUETOOTH_PAIRING_BIND_ADDR = "Assign subordinate device address:";
+Blockly.Msg.BLUETOOTH_PAIRING_MASTER = "Bluetooth pairing: Host device setup";
+Blockly.Msg.BLUETOOTH_PAIRING_SETTING_BAUDRATE = "Set Baud Rate:";
+Blockly.Msg.BLUETOOTH_PAIRING_SETTING_TIMEOUT = "Set Timeout:";
+Blockly.Msg.BLUETOOTH_PAIRING_SLAVE = "Bluetooth pairing: Slave device configuration";
+Blockly.Msg.BLUETOOTH_SETUP = "When Bluetooth received";
+Blockly.Msg.BLUETOOTH_SETUP_DATA_SET = "Set";
+Blockly.Msg.BLUETOOTH_SETUP_DO = "And Do";
+Blockly.Msg.BLUETOOTH_SETUP_LIST_SETTING = "The length is";
+Blockly.Msg.BLUETOOTH_SETUP_OPT1 = "String";
+Blockly.Msg.BLUETOOTH_SETUP_OPT2 = "Number";
+Blockly.Msg.BLUETOOTH_SETUP_OPT3 = "Array";
+Blockly.Msg.BLUETOOTH_SETUP_SET = "Set Baud Rate";
+Blockly.Msg.BLUETOOTH_SETUP_TO = "To received messages";
+Blockly.Msg.BLUETOOTH_TEXT_RECEIVED = "Received Text";
+Blockly.Msg.BLYNK_AUTH = "Auth Key : ";
+Blockly.Msg.BLYNK_CONNECT = "When Blynk is connected";
+Blockly.Msg.BLYNK_CREATE_WITH_CONTAINER_TITLE_ADD = "Data";
+Blockly.Msg.BLYNK_CREATE_WITH_ITEM_TITLE = "Item";
+Blockly.Msg.BLYNK_DATA = "Data";
+Blockly.Msg.BLYNK_GET_DATANAME = "Get data from";
+Blockly.Msg.BLYNK_GET_DATANAME1 = "Obtain";
+Blockly.Msg.BLYNK_GET_DATANAME2 = "Data";
+Blockly.Msg.BLYNK_GET_INDEX = "At index";
+Blockly.Msg.BLYNK_GET_INDEX1 = "value of the bit";
+Blockly.Msg.BLYNK_GET_OF = "Obtain Data";
+Blockly.Msg.BLYNK_GET_OF1 = "Obtain";
+Blockly.Msg.BLYNK_GET_OF2 = "Data";
+Blockly.Msg.BLYNK_GPS_ALTITUDE = "Altitude";
+Blockly.Msg.BLYNK_GPS_LATITUDE = "Latitude";
+Blockly.Msg.BLYNK_GPS_LONGITUDE = "Longitude";
+Blockly.Msg.BLYNK_GPS_SPEED = "Speed";
+Blockly.Msg.BLYNK_LOG = "BLYNK_LOG";
+Blockly.Msg.BLYNK_PW = "WiFi PW: ";
+Blockly.Msg.BLYNK_READ = "When Blynk request data via";
+Blockly.Msg.BLYNK_READ1 = "Data";
+Blockly.Msg.BLYNK_SELECT = "Select";
+Blockly.Msg.BLYNK_SETUP = "BLYNK SETUP";
+Blockly.Msg.BLYNK_SSID = "WiFi SSID: ";
+Blockly.Msg.BLYNK_TIME_DO = "Do";
+Blockly.Msg.BLYNK_TIME_SECOND = "Second";
+Blockly.Msg.BLYNK_TIME_SETTING = "Set timer: every ";
+Blockly.Msg.BLYNK_VIRTUALWRITE = "Send data to Blynk via";
+Blockly.Msg.BLYNK_VIRTUALWRITE_DATA = "Data:";
+Blockly.Msg.BLYNK_WIFI = "Connect to Network";
+Blockly.Msg.BLYNK_WRITE = "Get data from";
+Blockly.Msg.BLYNK_WRITE1 = "obtain data";
+Blockly.Msg.BLYNK_WRITE_VARIABLE = "Store into";
+Blockly.Msg.BLYNK_WRITE_VARLENGTH = "Length";
+Blockly.Msg.CHANGE_VALUE_TITLE = "Change value:";
+Blockly.Msg.CHAT = "Communicate with your collaborator by entering text in this box!";
+Blockly.Msg.CLEAN_UP = "Clean up Blocks";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_CONTAINER_TITLE_ADD = "Key[]";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_INPUT_WITH = "Add";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_ITEM_TITLE = "Value";
+Blockly.Msg.CLOUDDATA_GENERATOR_DATA = "Generate data";
+Blockly.Msg.CLOUDDATA_PARSE_JSON = "From";
+Blockly.Msg.CLOUDDATA_PARSE_KEY = "Parse to obtain the variable named";
+Blockly.Msg.CLOUDDATA_PARSE_PRETTYPRINT_DISPLAY = "Get generated data";
+Blockly.Msg.CLOUDDATA_PARSE_SETUP_INIT = "data parsing initialized.";
+Blockly.Msg.CLOUDDATA_PARSE_SETUP_PAYLOAD = "Parse content";
+Blockly.Msg.CLOUDDATA_PARSE_TYPE = "As";
+Blockly.Msg.CO2SENSOR_GET_CO2 = "Get CO2 Value (ppm)";
+Blockly.Msg.CO2SENSOR_GET_TVOC = "Get TVOC Value";
+Blockly.Msg.CO2SENSOR_SETUP = "CCS811 Air Quality Sensor Setup";
+Blockly.Msg.CO2SENSOR_SETUP_SCL = "SCL Pin";
+Blockly.Msg.CO2SENSOR_SETUP_SDA = "SDA Pin:";
+Blockly.Msg.COCOCLOUD_CREATE_WITH_CONTAINER_TITLE_ADD = "LIST";
+Blockly.Msg.COCOCLOUD_CREATE_WITH_ITEM_TITLE = "Event";
+Blockly.Msg.COCOCLOUD_GET = "Get Data from Event ";
+Blockly.Msg.COCOCLOUD_GET1 = "Obtain Data";
+Blockly.Msg.COCOCLOUD_GETPAYLOAD = "Data obtained from Event";
+Blockly.Msg.COCOCLOUD_POST = "Send to Event ";
+Blockly.Msg.COCOCLOUD_POST_DATA = "Data";
+Blockly.Msg.COCOCLOUD_TIME_DAY = "Day";
+Blockly.Msg.COCOCLOUD_TIME_GETDATE = "Get";
+Blockly.Msg.COCOCLOUD_TIME_GETTIME = "Get";
+Blockly.Msg.COCOCLOUD_TIME_HOUR = "Hour";
+Blockly.Msg.COCOCLOUD_TIME_MINUTE = "Minute";
+Blockly.Msg.COCOCLOUD_TIME_MONTH = "Month";
+Blockly.Msg.COCOCLOUD_TIME_SECOND = "Second";
+Blockly.Msg.COCOCLOUD_TIME_SETUP = "The World Time";
+Blockly.Msg.COCOCLOUD_TIME_YEAR = "Year";
+Blockly.Msg.COCOCLOUD_TITLE = "Web Service CocoCloud";
+Blockly.Msg.COLLAPSE_ALL = "Collapse Blocks";
+Blockly.Msg.COLLAPSE_BLOCK = "Collapse Block";
+Blockly.Msg.COLOR = "Colour";
+Blockly.Msg.COLORANALYZER_SETUP = "Colour Analyzer Setup";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "colour 1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "colour 2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";
+Blockly.Msg.COLOUR_BLEND_RATIO = "Ratio";
+Blockly.Msg.COLOUR_BLEND_TITLE = "Blend";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Blends two colours together with a given ratio (0.0 - 1.0).";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://en.wikipedia.org/wiki/Color";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Choose a colour from the palette.";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";
+Blockly.Msg.COLOUR_RANDOM_TITLE = "Random colour";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "Randomly select a colour.";
+Blockly.Msg.COLOUR_RGB_BLUE = "Blue";
+Blockly.Msg.COLOUR_RGB_GREEN = "Green";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";
+Blockly.Msg.COLOUR_RGB_RED = "Red";
+Blockly.Msg.COLOUR_RGB_TITLE = "Colour with";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "Create a colour by specifying quantities of red, green, and blue. All values must be between 0 and 100.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "break the loop";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "Continue with next iteration of loop";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "Break out of the containing loop.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Skip the remaining part of this loop and continue with the next iteration.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Warning: This block may only be used within a loop.";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "For each item %1 in list %2";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "For each item in a list, set the variable '%1' to the item, and then do some statements.";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";
+Blockly.Msg.CONTROLS_FOR_TITLE = "Count with %1 from %2 to %3 by %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Retrieve the value of variable '%1' from the starting number to the ending number, and execute the specified block at the specified time interval.";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Add a condition to the if block.";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Add a final 'case' to the 'if' block that covers all scenarios.";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "Add, remove, or rearrange sections to reconfigure the 'if' block.";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "Else";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "Else if";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "If";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "If a value is true, then do some statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "Do";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "Repeat %1 times";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Do some statements several times.";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "Repeat until";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "Repeat while";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "While a value is false, then do some statements.";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "While a value is true, then do some statements.";
+Blockly.Msg.DELETE_ALL_BLOCKS = "Delete all %1 blocks?";
+Blockly.Msg.DELETE_BLOCK = "Delete Block";
+Blockly.Msg.DELETE_X_BLOCKS = "Delete %1 Blocks";
+Blockly.Msg.DISABLE_BLOCK = "Disable Block";
+Blockly.Msg.DUPLICATE_BLOCK = "Duplicate";
+Blockly.Msg.ENABLE_BLOCK = "Enable Block";
+Blockly.Msg.ENCODER_GETROTATIONSPEED = "Get Rotation Speed";
+Blockly.Msg.ENCODER_SETUP = "Encoder Setup";
+Blockly.Msg.ENCODER_SETUP_1 = "On Breakout Pin";
+Blockly.Msg.ENV_AS = "As";
+Blockly.Msg.ENV_BLUE_PIN = "B from PIN ";
+Blockly.Msg.ENV_BUZZER_ALARM = "Buzzer Alarm";
+Blockly.Msg.ENV_CRITICAL_VAL = "When the critical value of";
+Blockly.Msg.ENV_DO = "Do";
+Blockly.Msg.ENV_GREEN_PIN = "G from PIN ";
+Blockly.Msg.ENV_REACHES = "Reaches";
+Blockly.Msg.ENV_RED_PIN = "R from PIN ";
+Blockly.Msg.ENV_SENSOR_HUMID = "Read value of Humidity from ";
+Blockly.Msg.ENV_SENSOR_HUMIDITY = "Humidity";
+Blockly.Msg.ENV_SENSOR_LIGHT = "Read value of Light from ";
+Blockly.Msg.ENV_SENSOR_MIC = "Read value of Sound from ";
+Blockly.Msg.ENV_SENSOR_READ = "Read value of";
+Blockly.Msg.ENV_SENSOR_READTEMP = "Read value of temperature from ";
+Blockly.Msg.ENV_SENSOR_SET_RGB = "Set RGB Light";
+Blockly.Msg.ENV_SENSOR_SOUND = "Sound";
+Blockly.Msg.ENV_SENSOR_TEMPUNIT = "Set unit as";
+Blockly.Msg.ENV_SENSOR_UNITC = "Celsius";
+Blockly.Msg.ENV_SENSOR_UNITF = "Fahrenheit";
+Blockly.Msg.ENV_SET = "Set";
+Blockly.Msg.ENV_SETRGB_B = "B from PIN ";
+Blockly.Msg.ENV_SETRGB_G = "G from PIN ";
+Blockly.Msg.ENV_SETRGB_R = "R from PIN ";
+Blockly.Msg.ENV_SETUP = "Environmental Sensors Setup";
+Blockly.Msg.ENV_SET_TEMP = "Set temperature as ";
+Blockly.Msg.ENV_SET_TEMP_UNIT = "Set unit as ";
+Blockly.Msg.EXPAND_ALL = "Expand Blocks";
+Blockly.Msg.EXPAND_BLOCK = "Expand Block";
+Blockly.Msg.EXPORTPNG = "Export as PNG";
+Blockly.Msg.EXPORTXML = "Export as XML";
+Blockly.Msg.EXTERNAL_INPUTS = "External Inputs";
+Blockly.Msg.Friday = "Friday";
+Blockly.Msg.GPS_LATITUDE = "Get Latitude";
+Blockly.Msg.GPS_LONGITUDE = "Get Longitude";
+Blockly.Msg.GPS_SETUP = "GPS Setup";
+Blockly.Msg.GREEN = "Green";
+Blockly.Msg.HELP = "Help";
+Blockly.Msg.HID_KEYBOARD_PRESS = "Set Keyboard: Press";
+Blockly.Msg.HID_KEYBOARD_RELEASE = "Set Keyboard: Release";
+Blockly.Msg.HID_KEYBOARD_RELEASEALL = "Set Keyboard: Release All";
+Blockly.Msg.HID_MOUSE_CLICK = "Set Mouse: Click";
+Blockly.Msg.HID_MOUSE_CLICK_LEFT = "Left";
+Blockly.Msg.HID_MOUSE_CLICK_RIGHT = "Right";
+Blockly.Msg.HID_MOUSE_MOVE = "Set Mouse: Move";
+Blockly.Msg.HID_MOUSE_MOVE_DISTANCE = "px";
+Blockly.Msg.HID_MOUSE_MOVE_FOR = "for";
+Blockly.Msg.HID_MOUSE_PRESS = "Set Mouse: Press";
+Blockly.Msg.HID_MOUSE_RELEASE = "Set Mouse: Release";
+Blockly.Msg.HID_SETUP = "HID Setup";
+Blockly.Msg.INFRAREDRAY_RECVAL = "Signal Received";
+Blockly.Msg.INFRAREDRAY_SETUP = "IR Receiver Setup";
+Blockly.Msg.INLINE_INPUTS = "Inline Inputs";
+Blockly.Msg.ISCOLOR = "Is color";
+Blockly.Msg.JSONOBJECT_CREATE = "JSON Object";
+Blockly.Msg.JSONTOOL_ARRAY_SIZE = "Array size";
+Blockly.Msg.JSONTOOL_GENERATOR = "JSON genrator";
+Blockly.Msg.JSONTOOL_GENERATOR_ARRAY_VALUE = "JSON Array add: value";
+Blockly.Msg.JSONTOOL_GENERATOR_JSONOBJECT = "Object";
+Blockly.Msg.JSONTOOL_GENERATOR_KEY = "JSON Object add: Key ";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME = "JSONVar";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE = "Generate a JSON";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE_NAME = "Named";
+Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE = "Nested a JSON";
+Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE_NAME = "named";
+Blockly.Msg.JSONTOOL_GENERATOR_SETUP = "JSON genrator Setup";
+Blockly.Msg.JSONTOOL_GENERATOR_VALUE = "Value";
+Blockly.Msg.JSONTOOL_OBJECT_SIZE = "Object size";
+Blockly.Msg.JSONTOOL_PARSE_ARRAY = "(JSON Array)";
+Blockly.Msg.JSONTOOL_PARSE_BY = "Get item of ";
+Blockly.Msg.JSONTOOL_PARSE_EACH = "From JSON Object ";
+Blockly.Msg.JSONTOOL_PARSE_INDEX = "Index of";
+Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS = "Did the parsing succeed?";
+Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS_NAME = "Is JSON Object";
+Blockly.Msg.JSONTOOL_PARSE_JSONOBJECT = "Object";
+Blockly.Msg.JSONTOOL_PARSE_KEY = "(JSON Object) Key";
+Blockly.Msg.JSONTOOL_PARSE_KEYVALUE = "From JSON Object %1 get item of %2";
+Blockly.Msg.JSONTOOL_PARSE_NEST = "Nested with";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT = "Print JSON ";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_DISPLAY = "Pretty data";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_WAY = "In pretty way";
+Blockly.Msg.JSONTOOL_PARSE_RESPONSE = " Data";
+Blockly.Msg.JSONTOOL_PARSE_SETUP = "JSON Parser Setup";
+Blockly.Msg.JSONTOOL_PARSE_TOVAR = "Get item to";
+Blockly.Msg.JSONTOOL_PARSE_VARTYPE = "";
+Blockly.Msg.LED_BACKCOLOR = "Background";
+Blockly.Msg.LED_BRIGHTNESS_WARNING = "Brightness must be in range 0 - 255";
+Blockly.Msg.LED_BRTN = "Brightness";
+Blockly.Msg.LED_CLEAR = "Clear Screen";
+Blockly.Msg.LED_COLOR = "Color";
+
+Blockly.Msg.LED_DRAW = "Draw ";
+Blockly.Msg.LED_FONT = "Font";
+Blockly.Msg.LCD_FONT = "Font: ";
+Blockly.Msg.SUPER_LARGE = "Super Large";
+Blockly.Msg.LARGE = "Large";
+Blockly.Msg.MIDDLE = "Medium";
+Blockly.Msg.SMALL = "Small";
+Blockly.Msg.LED_FULL = "Full";
+Blockly.Msg.LED_HEIGHT = "Height";
+Blockly.Msg.LED_LINE = "Line";
+Blockly.Msg.LED_LINE_END = "To";
+Blockly.Msg.LED_LINE_START = "Start From";
+Blockly.Msg.LED_MULTICOM = "H";
+Blockly.Msg.LED_PANELHEIGHT = "Number of Matrix in Height";
+Blockly.Msg.LED_PANELWIDTH = "Number of Matrix in Width";
+Blockly.Msg.LED_PATTERN = "Pattern";
+Blockly.Msg.LED_PIN = "Pin";
+Blockly.Msg.LED_PIXEL = "Pixel";
+Blockly.Msg.LED_POSITION = "Position";
+Blockly.Msg.LED_RECTANGLE = "Rectangle";
+Blockly.Msg.LED_SCROLL = "Scrolling";
+Blockly.Msg.LED_SCROLL_NO = "No";
+Blockly.Msg.LED_SCROLL_SPEED = "Speed";
+Blockly.Msg.LED_SCROLL_YES = "Yes";
+Blockly.Msg.LED_SETUP = "LED Matrix Setup";
+Blockly.Msg.LED_SET_BRIGHTNESS = "Set brightness to";
+Blockly.Msg.LED_SET_ROTATION = "Set rotation to";
+Blockly.Msg.LED_SET_ROTATION_DEGREE = "Degree";
+Blockly.Msg.LED_SHOW_ALL = "Show Above";
+Blockly.Msg.LED_SINGLE_SETUP = "Single LED Matrix Setup";
+Blockly.Msg.LED_SIZE = "Size";
+Blockly.Msg.LED_STRIP_LOCATION = "Location";
+Blockly.Msg.LED_STRIP_PIXEL = "Draw Pixel";
+Blockly.Msg.LED_STROKED = "Stroked";
+Blockly.Msg.LED_TEXT = "Text";
+Blockly.Msg.LED_WIDTH = " Width";
+Blockly.Msg.LED_WORD = "Word";
+Blockly.Msg.LIGHT_BRIGHTNESS = "at brightness";
+Blockly.Msg.LIGHT_PIN = "Set light on";
+Blockly.Msg.LIGHT_TURNOFF = "Turn off light on";
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "Create empty list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Returns a list, of length 0, containing no data records";
+Blockly.Msg.LISTS_CREATE_LIST_WITH = "Create list with";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "List";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this list block.";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the list.";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Create a list with any number of items.";
+Blockly.Msg.LISTS_GETINDEX = "From %1 get item at %2";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "First";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# from end";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_GET = "Get";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "Get and remove";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "Last";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "Random";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "Remove";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "blank";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Returns the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "Returns the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "Returns the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Returns the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Returns a random item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Removes and returns the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END = "Removes and returns the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START = "Removes and returns the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Removes and returns the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Removes and returns a random item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Removes the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END = "Removes the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START = "Removes the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Removes the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Removes a random item in a list.";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "To # from end";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "To #";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "To last";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "Get sub-list from first";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "Get sub-list from # from end";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "Get sub-list from #";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "blank";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list.";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "Find first occurrence of item";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";
+Blockly.Msg.LISTS_INDEX_OF_LAST = "Find last occurrence of item";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Returns the index of the first/last occurrence of the item in the list. Returns 0 if item is not found.";
+Blockly.Msg.LISTS_INLIST = "In list";
+Blockly.Msg.LISTS_INT_CREATE_WITH_INPUT_WITH = "Create Number List with";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 is empty";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "Returns true if the list is empty.";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";
+Blockly.Msg.LISTS_LENGTH_TITLE = "Length of %1";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "Returns the length of a list.";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_REPEAT_TITLE = "Create list with item %1 repeated %2 times";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "Creates a list consisting of the given value repeated the specified number of times.";
+Blockly.Msg.LISTS_SETINDEX = "Set %1 at index %2 to %3";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "As";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "Insert at";
+Blockly.Msg.LISTS_SET_INDEX_SET = "Set";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserts the item at the start of a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END = "Inserts the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START = "Inserts the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Append the item to the end of a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserts the item randomly in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Sets the first item in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END = "Sets the item at the specified position in a list. #1 is the last item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START = "Sets the item at the specified position in a list. #1 is the first item.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Sets the last item in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Sets a random item in a list.";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "Ascending";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "Descending";
+Blockly.Msg.LISTS_SORT_TITLE = "Sort %1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list.";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "Sort alphabetically, disregarding case.";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "Sort by numbers";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "sort alphabetically";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "Make list from text";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "Make text from list";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter.";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter.";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "With delimiter";
+Blockly.Msg.LISTS_STRING_CREATE_WITH_INPUT_WITH = "Create String List with";
+Blockly.Msg.LISTS_THE_LENGTH_OF = "The length of %1";
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "False";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Returns either true or false.";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "True";
+Blockly.Msg.LOGIC_CASE = "Case";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Return true if both inputs equal each other.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Return true if the first input is greater than the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Return true if the first input is greater than or equal to the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "Return true if the first input is smaller than the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "Return true if the first input is smaller than or equal to the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "Return true if both inputs are not equal to each other.";
+Blockly.Msg.LOGIC_DEFAULT = "Default";
+Blockly.Msg.LOGIC_DO = "Do";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "Not %1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "Returns true if the input is false. Returns false if the input is true.";
+Blockly.Msg.LOGIC_NULL = "Null";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "Returns null.";
+Blockly.Msg.LOGIC_OPERATION_AND = "And";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";
+Blockly.Msg.LOGIC_OPERATION_OR = "Or";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "Return true if both inputs are true.";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "Return true if at least one of the inputs is true.";
+Blockly.Msg.LOGIC_SWITCH = "Switch";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "Test";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "If false";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "If true";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE = "Get Data from AI Module";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET = "From ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE2 = "Get data at ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE3 = "As Type";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE2 = "And store it to ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE3 = "With length of ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND = "Create List";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND_LINE2 = "Send data to AI Module";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND_VALUE = "Data";
+Blockly.Msg.MAINWIFI_RECEIVEMSG = "Receive data to";
+Blockly.Msg.MAINWIFI_RECEIVEMSG_ISSUCCESS = "Receive data successfully";
+Blockly.Msg.MAINWIFI_RECEIVEMSG_LENGTH = ", Data length ";
+Blockly.Msg.MAINWIFI_SENDMSG = "Send data ";
+Blockly.Msg.MAINWIFI_SENDMSG_LENGTH = ", data length ";
+Blockly.Msg.MAINWIFI_SETUP = "WiFi Data Transfer Setup";
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+";
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Arithmetic";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "Return the sum of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Return the quotient of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Return the difference of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Return the product of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Return the first number raised to the power of the second number.";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
+Blockly.Msg.MATH_CHANGE_TITLE = "Change %1 by %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "Add a number to variable '%1'.";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "Constrain %1 low %2 high %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "Restrict the number to be between two specified values.";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "Is divisible by";
+Blockly.Msg.MATH_IS_EVEN = "Is even";
+Blockly.Msg.MATH_IS_NEGATIVE = "Is negative";
+Blockly.Msg.MATH_IS_ODD = "Is odd";
+Blockly.Msg.MATH_IS_POSITIVE = "Is positive";
+Blockly.Msg.MATH_IS_PRIME = "Is prime";
+Blockly.Msg.MATH_IS_TOOLTIP = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";
+Blockly.Msg.MATH_IS_WHOLE = "Is whole";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation";
+Blockly.Msg.MATH_MODULO_TITLE = "Remainder of %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two numbers.";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "A number.";
+Blockly.Msg.MATH_ONLIST_HELPURL = "";
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "Average of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "Max of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "Median of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "Min of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "Modes of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "Random item of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "Standard deviation of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "Sum of list";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "Return the average (arithmetic mean) of the numeric values in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "Return the largest number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Return the median number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "Return the smallest number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "Return a list of the most common item(s) in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Return a random element from the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Return the sum of all the numbers in the list.";
+Blockly.Msg.MATH_POWER_SYMBOL = "^";
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "Random fraction";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "random integer from %1 to %2";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Return a random integer between the two specified limits, inclusive.";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "Round";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "Round down";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "Round up";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "Round a number up or down.";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "Absolute";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "Square root";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "Return the absolute value of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "Return e to the power of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "Return the natural logarithm of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "Return the base 10 logarithm of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "Return the negation of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "Return 10 to the power of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "Return the square root of a number.";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";
+Blockly.Msg.MATH_TRIG_ACOS = "Acos";
+Blockly.Msg.MATH_TRIG_ASIN = "Asin";
+Blockly.Msg.MATH_TRIG_ATAN = "Atan";
+Blockly.Msg.MATH_TRIG_COS = "Cos";
+Blockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions";
+Blockly.Msg.MATH_TRIG_SIN = "Sin";
+Blockly.Msg.MATH_TRIG_TAN = "Tan";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "Return the arccosine of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "Return the arcsine of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "Return the arctangent of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "Return the cosine of a degree (not radian).";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Return the sine of a degree (not radian).";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Return the tangent of a degree (not radian).";
+Blockly.Msg.MATH_DIVISION_CONSULT_TITLE = "The integer part of the quotient %1 ÷ %2";
+Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP = "Returns the integer part of the quotient of two numbers";
+Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL = '';
+Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP = 'Returns the result of the specified value keeping the decimal point';
+Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0 = '%1 keep %2 decimal places';
+Blockly.Msg.labplus_mapping_MESSAGE0 = 'Map %1 from %2 , %3 to %4 , %5'
+Blockly.Msg.labplus_mapping_TOOLTIP = 'Map 10 of 0~100 to 0~200 and return the mapped value'
+Blockly.Msg.labplus_mapping_HELPURL = ''
+Blockly.Msg.ME = "Me";
+Blockly.Msg.MOTION_GETACC = "Get Acceleration Value of";
+Blockly.Msg.MOTION_GETACC1 = "directional acceleration";
+Blockly.Msg.MOTION_GETRAWDATA = "Get rawdata";
+Blockly.Msg.MOTION_GETYPR = "Get Rotation Value of";
+Blockly.Msg.MOTION_GETYPR1 = "rotation angle";
+Blockly.Msg.MOTION_ONDIRECTION = "On Tilt Direction";
+Blockly.Msg.MOTION_ONDIRECTION1 = "deflection";
+Blockly.Msg.MOTION_ONDIRECTION_BACK = "Back";
+Blockly.Msg.MOTION_ONDIRECTION_CLOCKWISE = "Clockwise";
+Blockly.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE = "Counter-clockwise";
+Blockly.Msg.MOTION_ONDIRECTION_FRONT = "Front";
+Blockly.Msg.MOTION_ONDIRECTION_LEFT = "Left";
+Blockly.Msg.MOTION_ONDIRECTION_RIGHT = "Right";
+Blockly.Msg.MOTION_ONSHAKE = "On Shake";
+Blockly.Msg.MOTION_SETUP = "Motion Setup";
+Blockly.Msg.MOTION_TRENDENCY = "Get motion trendency";
+Blockly.Msg.MOTOR_MOVE_DIRECTION1 = "Clockwise";
+Blockly.Msg.MOTOR_MOVE_DIRECTION2 = "Counter-clockwise";
+Blockly.Msg.MOTOR_MOVE_MOTOR = "Set motor";
+Blockly.Msg.MOTOR_MOVE_MSG = "And";
+Blockly.Msg.MOTOR_SETUP = "Motor Driver Setup";
+Blockly.Msg.MOTOR_SPEED = "Speed";
+Blockly.Msg.MOTOR_STOP = "Set Motors Stop";
+Blockly.Msg.MUSIC_BEAT = "Beat";
+Blockly.Msg.MUSIC_DURATION = "For";
+Blockly.Msg.MUSIC_INSTRUMENT = "Set instrument:";
+Blockly.Msg.MUSIC_INSTRUMENT_ACCORION = "Accordion";
+Blockly.Msg.MUSIC_INSTRUMENT_BASS = "Bass";
+Blockly.Msg.MUSIC_INSTRUMENT_CELLO = "Cello";
+Blockly.Msg.MUSIC_INSTRUMENT_DRAWBARORGAN = "Drawbar Organ";
+Blockly.Msg.MUSIC_INSTRUMENT_DRUM = "Drum";
+Blockly.Msg.MUSIC_INSTRUMENT_EGUITAR = "Electric Guitar";
+Blockly.Msg.MUSIC_INSTRUMENT_EPIANO = "Electric Piano";
+Blockly.Msg.MUSIC_INSTRUMENT_FLUTE = "Flute";
+Blockly.Msg.MUSIC_INSTRUMENT_GPIANO = "Grand Piano";
+Blockly.Msg.MUSIC_INSTRUMENT_GUITAR = "Guitar";
+Blockly.Msg.MUSIC_INSTRUMENT_MUSICBOX = "Music Box";
+Blockly.Msg.MUSIC_INSTRUMENT_PICCOLO = "Piccolo";
+Blockly.Msg.MUSIC_INSTRUMENT_SAX = "Sax";
+Blockly.Msg.MUSIC_INSTRUMENT_SITAR = "Sitar";
+Blockly.Msg.MUSIC_INSTRUMENT_TRUMPET = "Trumpet";
+Blockly.Msg.MUSIC_INSTRUMENT_VIOLA = "Viola";
+Blockly.Msg.MUSIC_INSTRUMENT_VIOLIN = "Violin";
+Blockly.Msg.MUSIC_INSTRUMENT_WHISTLE = "Whistle";
+Blockly.Msg.MUSIC_INSTRUMENT_WOODBLOCK = "Woodblock";
+Blockly.Msg.MUSIC_INSTRUMENT_XYLOPHONE = "Xylophone";
+Blockly.Msg.MUSIC_MP3_CURRENTVOLUME = "Get current volume";
+Blockly.Msg.MUSIC_MP3_PLAYALL = "List Play";
+Blockly.Msg.MUSIC_MP3_PLAYALL_NAME = "Play Mode";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_LISTREPEAT = "List Repeat";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_NORMAL = "Normal";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_REPEAT = "Repeat";
+Blockly.Msg.MUSIC_MP3_PLAYONE = "Play music ";
+Blockly.Msg.MUSIC_MP3_PLAYONE_NAME = "Music:";
+Blockly.Msg.MUSIC_MP3_PLAYONE_NORMAL = "once";
+Blockly.Msg.MUSIC_MP3_PLAYONE_REPEAT = "repeat";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING = "play setting";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_NEXTSONG = "Next song";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PAUSE = "Pause";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PLAYALL = "Play all Song";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PRESONG = "Previous song";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_RESUME = "Resume";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_STOP = "Stop";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_VOLDOWN = "Volume down";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_VOLUP = "Volume up";
+Blockly.Msg.MUSIC_MP3_PLAY_NORMAL = "Normal";
+Blockly.Msg.MUSIC_MP3_PLAY_REPEAT = "List Repeat";
+Blockly.Msg.MUSIC_MP3_SETUP = "MP3 Player Setup";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME = "Set volume";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_HIGH = "High";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_LOW = "Low";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_MID = "Mid";
+Blockly.Msg.MUSIC_MP3_SETVOLUME = "Set volume to";
+Blockly.Msg.MUSIC_NOTE = "Note";
+Blockly.Msg.MUSIC_PLAY_NOTE = "Play";
+Blockly.Msg.MUSIC_PLAY_NOTE_TOOLTIP = "Right click this block and check the help page to see the corresponding music note.";
+Blockly.Msg.MUSIC_REST = "Rest for";
+Blockly.Msg.MUSIC_VOLUME = "Set volume as";
+Blockly.Msg.MUSIC_VOL_MAX = "Max";
+Blockly.Msg.MUSIC_VOL_MIN = "Min";
+Blockly.Msg.Monday = "Monday";
+Blockly.Msg.Motion_Accelerate = "Accelerate";
+Blockly.Msg.Motion_Gyroscope = "Gyroscope";
+Blockly.Msg.NBIOT_ENABLE = "Enable NB-IoT Interactive Serial";
+Blockly.Msg.NBIOT_HTTP_APIKEY = "Cloud Event API Key";
+Blockly.Msg.NBIOT_HTTP_CLOUD_GET = "NB-IoT CocoCloud: Receive Data";
+Blockly.Msg.NBIOT_HTTP_CONTENTTYPE = "Content Type";
+Blockly.Msg.NBIOT_HTTP_DATA = "Data:";
+Blockly.Msg.NBIOT_HTTP_IFTTT_APIKEY = "IFTTT API Key";
+Blockly.Msg.NBIOT_HTTP_IFTTT_EVENT = "IFTTT Event Name";
+Blockly.Msg.NBIOT_HTTP_IFTTT_TITLE = "NB-IoT IFTTT: Send Data";
+Blockly.Msg.NBIOT_HTTP_THINGSPEAK_APIKEY = "Event API Key";
+Blockly.Msg.NBIOT_HTTP_THINGSPEAK_TITLE = "NB-IoT Thingspeak: Send Data";
+Blockly.Msg.NBIOT_HTTP_TITLE = "NB-IoT CocoCloud: Send Data";
+Blockly.Msg.NBIOT_IS_POWERON = "NB-IoT Module is Powered On";
+Blockly.Msg.NBIOT_NETWORK_CONNECTED = "Network Connected";
+Blockly.Msg.NBIOT_NETWORK_IP = "Get NB-IoT Module IP";
+Blockly.Msg.NBIOT_SETUP = "NB-IoT Comm.Setup";
+Blockly.Msg.NEW_INSTANCE = "New instance...";
+Blockly.Msg.NEW_INSTANCE_TITLE = "New instance name:";
+Blockly.Msg.NEW_VARIABLE = "New variable...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "New variable name:";
+Blockly.Msg.NRFMODULE_GET_RECEIVED_DATA = "Get nRF Module Received Data";
+Blockly.Msg.NRFMODULE_RECEIVING_DATA_TEXT = "nRF Module Start Receiving Data";
+Blockly.Msg.NRFMODULE_SEND_DATA_DATA_TEXT = "Data:";
+Blockly.Msg.NRFMODULE_SEND_DATA_TITLE = "nRF Module Send Data";
+Blockly.Msg.NRFMODULE_SETUP_CE_TEXT = "CE Pin:";
+Blockly.Msg.NRFMODULE_SETUP_CSN_TEXT = "CSN Pin:";
+Blockly.Msg.NRFMODULE_SETUP_SET_ADDRESS = "Set Connection Address:";
+Blockly.Msg.NRFMODULE_SETUP_TITLE = "nRF24L01 Communication Module Setup";
+Blockly.Msg.OLCD_CENTER_POS = "Center Position";
+Blockly.Msg.OLCD_SCALE = "Scale";
+Blockly.Msg.OLCD_WT = "Wrap Text";
+Blockly.Msg.OLCD_BW = "Border Width";
+
+
+Blockly.Msg.OLCD_SET_POS = "Set Position";
+Blockly.Msg.OLCD_CIRCLE = "Circle";
+Blockly.Msg.OLCD_CLEAR = "Clear";
+Blockly.Msg.OLCD_COLOR = "Color";
+Blockly.Msg.OLCD_COORDINATE = "Coordinate";
+Blockly.Msg.OLCD_DRAW = "LCD Display: Draw ";
+Blockly.Msg.OLCD_FALSE = "False";
+
+Blockly.Msg.OLCD_VLINE = "Vline";
+Blockly.Msg.OLCD_HLINE = "Hline";
+Blockly.Msg.OLCD_LENGTHIS = "Length is";
+
+Blockly.Msg.OLCD_FULLCIRCLE = "Fullcircle";
+Blockly.Msg.OLCD_CIRCLE = "Circle";
+
+Blockly.Msg.OLCD_FULL = "Full";
+Blockly.Msg.OLCD_HEIGHT = "Height";
+Blockly.Msg.OLCD_LINE = "Line";
+Blockly.Msg.OLCD_SCREEN = "Screen";
+Blockly.Msg.OLCD_LINE_END = "To";
+Blockly.Msg.OLCD_LINE_START = "Start From";
+Blockly.Msg.OLCD_POINT = "Point";
+Blockly.Msg.OLCD_POSITION = "Position";
+
+Blockly.Msg.OLCD_RADIUS = "Set Radius as";
+Blockly.Msg.OLCD_RECTANGLE = "Rectangle";
+Blockly.Msg.OLCD_SETROTATION = "LCD Display: Set Screen Rotation";
+Blockly.Msg.OLCD_SETROTATION_DEGREE = "degree";
+Blockly.Msg.OLCD_SETUP = "LCD Screen Setup";
+Blockly.Msg.OLCD_SIZE = "Size";
+Blockly.Msg.OLCD_STROKED = "Stroked";
+Blockly.Msg.OLCD_TEXT = "Text";
+Blockly.Msg.OLCD_TEXTNEWLINE = "New Line";
+Blockly.Msg.OLCD_TRIANGLE = "Triangle";
+Blockly.Msg.OLCD_TRUE = "True";
+Blockly.Msg.OLCD_WIDTH = "Width";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "blank";
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "Allow statements";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "With:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function '%1'.";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Execute the user-defined function '%1' and utilize its output value.";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "With:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "Create '%1'";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Describe this function...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "Do";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "Func1";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "To";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Creates a function with no output.";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "Return";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "Creates a function with an output.";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "Warning: This function has duplicate parameters.";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "Highlight function definition";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "If a value is true, then return a second value.";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "Warning: This block may be used only within a function definition.";
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "Input name:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "Add an input to the function.";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "Inputs";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Add, remove, or reorder inputs to this function.";
+Blockly.Msg.PULSESENSOR_GETBPM = "Get BPM";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_PRINT = "Serial Print Pulse Raw Data";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_WHEN = "When Your Heart Beats";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_WHENNO = "When Your Heart Doesn't Beats";
+Blockly.Msg.PULSESENSOR_SETUP = "Pulse Sensor Setup";
+Blockly.Msg.PULSESENSOR_SETUP_1 = "Set Pin on";
+Blockly.Msg.READ_B = "Read Blue";
+Blockly.Msg.READ_G = "Read Green";
+Blockly.Msg.READ_R = "Read Red";
+Blockly.Msg.RED = "Red";
+Blockly.Msg.REDO = "Redo";
+Blockly.Msg.REMOVE_COMMENT = "Remove Comment";
+Blockly.Msg.RENAME_INSTANCE = "Rename instance...";
+Blockly.Msg.RENAME_INSTANCE_TITLE = "Rename all '%1' instances to:";
+Blockly.Msg.RENAME_VARIABLE = "Rename variable...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "Rename all '%1' variables to:";
+Blockly.Msg.REQUEST_DATA_CLOUD = "Cloud Data";
+Blockly.Msg.REQUEST_DATA_STRING = "String";
+Blockly.Msg.RFID_READID = "Read Card ID";
+Blockly.Msg.RFID_SETUP = "RFID Setup";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT = "Configure the motion of the biped";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_BACKYARD = "Walk Backward";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_GOINGUP = "Going Up";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_KICKLEFT = "Kick Left";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_KICKRIGHT = "Kick Right";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKLEFT = "Moonwalk to Left";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKRIGHT = "Moonwalk to Right";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_RUN = "Run";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_SWING = "Swing Dance";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_TURNLEFT = "Turn Left";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_TURNRIGHT = "Turn Right";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_WALK = "Walk Forward";
+Blockly.Msg.ROBOT_SETMOVE_TEMPO = "With tempo in";
+Blockly.Msg.ROBOT_SETUP = "Configuring a bipedal walking robot.";
+Blockly.Msg.ROBOT_SETUP_SETRLPIN = "And Left Foot pin#";
+Blockly.Msg.ROBOT_SETUP_SETRRPIN = "Set Right Foot pin#";
+Blockly.Msg.ROBOT_SETUP_SETYLPIN = "And Left Hip pin#";
+Blockly.Msg.ROBOT_SETUP_SETYRPIN = "Set Right Hip pin#";
+Blockly.Msg.RTC_DAY = "Day";
+Blockly.Msg.RTC_GETDATE = "Get Current Date";
+Blockly.Msg.RTC_GETTIME = "Get Current Time";
+Blockly.Msg.RTC_GETWEEK = "Get Current Week";
+Blockly.Msg.RTC_setDATE = "Set Current Date";
+Blockly.Msg.RTC_setTIME = "Set Current Time";
+Blockly.Msg.RTC_setWEEK = "Set Current Week to";
+Blockly.Msg.RTC_WEI = " to";
+Blockly.Msg.RTC_getDateTime = "Get time (year, month, day, week, hour, minute, second)";
+Blockly.Msg.RTC_HOUR = "Hour";
+Blockly.Msg.RTC_MINUTE = "Minute";
+Blockly.Msg.RTC_MONTH = "Month";
+Blockly.Msg.RTC_SECOND = "Second";
+Blockly.Msg.RTC_SETDATE = "Date";
+Blockly.Msg.RTC_SETDATETIME = "Set Date,Time and Week";
+Blockly.Msg.RTC_SETTIME = "Time";
+Blockly.Msg.RTC_SETUP = "RTC Setup";
+Blockly.Msg.RTC_SETWEEK = "Week";
+Blockly.Msg.RTC_WEEK = "Week";
+Blockly.Msg.RTC_YEAR = "Year";
+Blockly.Msg.SONAR = "Sonar";
+Blockly.Msg.SONAR_READ_DIST = "Read distance (cm) from";
+Blockly.Msg.SONAR_SETUP = "Setup";
+Blockly.Msg.SONAR_SETUP_ECHOPIN = "And Echo at pin#";
+Blockly.Msg.SONAR_SETUP_MAXDIST = "Set max distance";
+Blockly.Msg.SONAR_SETUP_TRIGPIN = "Set Trig at pin#";
+Blockly.Msg.Saturday = "Saturday";
+Blockly.Msg.Sunday = "Sunday";
+Blockly.Msg.DEEP_LEARING = "Deep learing";
+Blockly.Msg.Emotion_recognition = "Emotion recognition";
+Blockly.Msg.Gesture_recognition = "Gesture recognition";
+Blockly.Msg.Object_recognition = "Object recognition";
+Blockly.Msg.guesswork_recognition = "Guesswork recognition";
+Blockly.Msg.Posture_recognition = "Posture recognition";
+Blockly.Msg.Course_people = "Course people";
+Blockly.Msg.Voice_recognition = "Voice recognition";
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "Append text";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg.TEXT_APPEND_TO = "To";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "Append some text to variable '%1'.";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "To lower case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "To Title Case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "To UPPER CASE";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "Return a copy of the text in a different case.";
+Blockly.Msg.TEXT_CHARAT_FIRST = "Get first letter";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "Get letter # from end";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "Get letter #";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "In text";
+Blockly.Msg.TEXT_CHARAT_LAST = "Get last letter";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "Get random letter";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position.";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text.";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "Join";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Add, remove, or reorder sections to reconfigure this text block.";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "To letter # from end";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "To letter #";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "To last letter";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "In text";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "Get substring from first letter";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "Get substring from letter # from end";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "Get substring from letter #";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text.";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "In text";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "Find first occurrence of text";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "Find last occurrence of text";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "blank";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of the first text in the second text. Returns 0 if text is not found.";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty.";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "Create text with";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "Create a piece of text by joining together any number of items.";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg.TEXT_LENGTH_TITLE = "Length of %1";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Returns the number of letters (including spaces) in the provided text.";
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";
+Blockly.Msg.TEXT_PRINT_TITLE = "Print %1";
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "Print the specified text, number or other value.";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Prompt for user for a number.";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Prompt for user for some text.";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "prompt for number with message";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "prompt for text with message";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text.";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "Trim spaces from both sides of";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "Trim spaces from left side of";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "Trim spaces from right side of";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends.";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD = "Field";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_INPUT_WITH = "FIELD";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE = "Value";
+Blockly.Msg.TODAY = "Today";
+Blockly.Msg.TOUCH_AT = "When Touch Pin ";
+Blockly.Msg.TOUCH_CASE = "Key No.";
+Blockly.Msg.TOUCH_DEFAULT = "Default";
+Blockly.Msg.TOUCH_DO = "Do";
+Blockly.Msg.TOUCH_LOOSE = "When loose it";
+Blockly.Msg.TOUCH_SETUP = "Touch Sensor Setup";
+Blockly.Msg.TOUCH_SWITCH = "⌘ When Touch Pins";
+Blockly.Msg.TOUCH_THEN_LOOSE_SWITCH = "⌘ Loose touched Pins";
+Blockly.Msg.Thursday = "Thursday";
+Blockly.Msg.Tuesday = "Tuesday";
+Blockly.Msg.UNDO = "Undo";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "Item";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "Create 'set %1'";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "Returns the value of this variable.";
+Blockly.Msg.VARIABLES_SET = "Set %1 to %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "Create '%1'";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "Sets this variable to be equal to the input.";
+Blockly.Msg.WATERTEMP_GET_TEMP = "Get Water Temperature (ºC)";
+Blockly.Msg.WATERTEMP_SETUP_ATTACHED_PIN = "Digital Pin Attached:";
+Blockly.Msg.WATERTEMP_SETUP_BLOCKNAME = "Water Temperature Sensor";
+Blockly.Msg.WATERTEMP_SETUP_SENSORTYPE = "Sensor type:";
+Blockly.Msg.WATERTEMP_SETUP_SETUP = "Setup";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_SETPATH = " Set path to:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_BOTTOM = "Button Bottom:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_CENTER = "Button Center:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_LEFT = "Button Left:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_RIGHT = "Button Right:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_TOP = "Button Top:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TITLE = "Web Dashboard: Button Controller";
+Blockly.Msg.WEBPAGE_BUTTON_NAME = "Button Name";
+Blockly.Msg.WEBPAGE_BUTTON_ROUTER = "Set request path to:";
+Blockly.Msg.WEBPAGE_BUTTON_TITLE = "Web Dashboard: Button";
+Blockly.Msg.WEBPAGE_COLORPICKER_PATH = "Set request path to:";
+Blockly.Msg.WEBPAGE_COLORPICKER_SUBTITLE = "(Note: Data format in RGB)";
+Blockly.Msg.WEBPAGE_COLORPICKER_TITLE = "Web Dashboard: Color Picker Widget";
+Blockly.Msg.WEBPAGE_LABLE = "Label Name";
+Blockly.Msg.WEBPAGE_LABLE_TITLE = "Web Dashboard: Label";
+Blockly.Msg.WIFICLIENT_HTTP_GET_DATA = "Get data stored into";
+Blockly.Msg.WIFICLIENT_HTTP_GET_URL = "Send GET Request to";
+Blockly.Msg.WIFICLIENT_HTTP_POST_DATA = "Data";
+Blockly.Msg.WIFICLIENT_HTTP_POST_TYPE = "as";
+Blockly.Msg.WIFICLIENT_HTTP_POST_URL = "Send POST Request to";
+Blockly.Msg.WIFICLIENT_HTTP_POST_VAR = "Create list";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_DATA = "From content";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_TYPE = "as";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_URL = "Send PUT Request to";
+Blockly.Msg.WIFICLIENT_HTTP_RESPONSE = "Get HTTP Response";
+Blockly.Msg.WIFICLIENT_HTTP_SETUP = "Client Setup";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET = "From";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE2 = "Get data of index";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE3 = "As type";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_END = "value";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA = "Get Data and Store it to ";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY = "From";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY1 = "Get the value with property";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY2 = "Named ";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA = "Send Data ";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR = "Item";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM = "";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_TYPE = "As type";
+Blockly.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME = "Name:";
+Blockly.Msg.WIFIEASYMODE_COCOClOUD_EVENT = "Cloud Event API Key:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_EVENT = "IFTTT Event Name:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_FETCH = "Fecth data";
+Blockly.Msg.WIFIEASYMODE_IFTTT_KEY = "IFTTT Key:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_POST = "Post data";
+Blockly.Msg.WIFIEASYMODE_IFTTT_SENDDATA = "Send Data";
+Blockly.Msg.WIFIEASYMODE_IFTTT_TYPE = "Webhook Type:";
+Blockly.Msg.WIFIEASYMODE_NETWORK_PW = "WiFi Password";
+Blockly.Msg.WIFIEASYMODE_NETWORK_SSID = "WiFi Name";
+Blockly.Msg.WIFIEASYMODE_NETWORK_TITLE = "Connect to WiFi:";
+Blockly.Msg.WIFIEASYMODE_THINGSPEAK_APIKEY = "Channel API Key:";
+Blockly.Msg.WIFIEASYMODE_THINGSPEAK_SENDDATA = "Send data:";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE = "Get Data from Main Controller";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET = "From ";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE2 = "Get data at ";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE3 = "As Type";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2 = "And store it to ";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE3 = "with length of ";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND = "Create List";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2 = "Send data to Main Controller";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE = "Data";
+Blockly.Msg.WIFINETWORK_AP_PW = "Set PASSWORD ";
+Blockly.Msg.WIFINETWORK_AP_SETUP = "WiFi Access Point Setup";
+Blockly.Msg.WIFINETWORK_AP_SSID = "Set SSID ";
+Blockly.Msg.WIFINETWORK_CONNECT = "WiFi Connect Setup";
+Blockly.Msg.WIFINETWORK_CONNECT_PW = "Set PASSWORD ";
+Blockly.Msg.WIFINETWORK_CONNECT_SSID = "Set SSID ";
+Blockly.Msg.WIFINETWORK_GETGATEWAYIP = "Get Gateway IP";
+Blockly.Msg.WIFINETWORK_GETLOCALIP = "Get local IP";
+Blockly.Msg.WIFINETWORK_GETMACADDR = "Get MAC address";
+Blockly.Msg.WIFINETWORK_GETSTATIONNUM = "Get client number";
+Blockly.Msg.WIFINETWORK_ISCONNECTED = "isConnected";
+Blockly.Msg.WIFINETWORK_PW_WARN = "The password should be more than 8 characters long.";
+Blockly.Msg.WIFISERVER_HANDLECLIENT = "Handleclient";
+Blockly.Msg.WIFISERVER_LIST = "Create List";
+Blockly.Msg.WIFISERVER_RECEIVE = "Server receive data";
+Blockly.Msg.WIFISERVER_RECEIVE_GET = "From";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_INT = "Number";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_LINE2 = "Get data at ";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_LINE3 = " As type ";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_STRING = "Text";
+Blockly.Msg.WIFISERVER_RECEIVE_LENGTH = "With length of ";
+Blockly.Msg.WIFISERVER_RECEIVE_TO = "And store it to";
+Blockly.Msg.WIFISERVER_SEND = "Server send data";
+Blockly.Msg.WIFISERVER_SERVERSEND = "Server send ";
+Blockly.Msg.WIFISERVER_SERVERSEND_CODE = "HTTP code";
+
+Blockly.Msg.WIFISERVER_SERVERSEND_TYPE = "Type";
+Blockly.Msg.WIFISERVER_SETROOTPAGE = "Set homepage";
+Blockly.Msg.WIFISERVER_SETROUTER = "Server Router";
+Blockly.Msg.WIFISERVER_SETROUTER_ONNOTFOUND = "Set Router when URL no found, do with";
+Blockly.Msg.WIFISERVER_SETROUTER_SET = "Set path on";
+Blockly.Msg.WIFISERVER_SETROUTER_WITH = "Do";
+Blockly.Msg.WIFISERVER_SETUP = "Server Setup";
+Blockly.Msg.WIFISERVER_WAIT_CONNECTION = "Wait connection";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT = "Web Service IFTTT";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_EVENT = "Event ";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY = "Key ";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY1 = "Key1";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY2 = "Key2";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY3 = "Key3";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE1 = "Value1";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE2 = "Value2";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE3 = "Value3";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK = "Web Service Thinkspeak";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_FIELD1 = "Field";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_KEY = "Api-key";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_VALUE = "Value";
+Blockly.Msg.WIFI_RECEIVEMSG = "Receive data to";
+Blockly.Msg.WIFI_RECEIVEMSG_ISSUCCESS = "Receive data successfully";
+Blockly.Msg.WIFI_RECEIVEMSG_LENGTH = ", data length ";
+Blockly.Msg.WIFI_SENDMSG = "Send data ";
+Blockly.Msg.WIFI_SENDMSG_LENGTH = ", data length ";
+Blockly.Msg.WIFI_SETUP = "Data Transfer Setup";
+Blockly.Msg.Wednesday = "Wednesday";
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+
+
+
+Blockly.Msg.ADD_COMMENT = "Add Comment";
+Blockly.Msg.AIYBOARD_AIY_BOARD = "AIY Board";
+Blockly.Msg.AIYBOARD_BUTTON_FROM = "From";
+Blockly.Msg.AIYBOARD_BUTTON_WHEN = "When button";
+Blockly.Msg.AIYBOARD_FROM = "From aiy.board";
+Blockly.Msg.AIYBOARD_IMPORT = "Import";
+Blockly.Msg.AIYBOARD_LED_STATE = "Gget LED state of";
+Blockly.Msg.AIYBOARD_LED_STATUS = "Get LED status of";
+Blockly.Msg.CAMERA_CAMERA = "Camera";
+Blockly.Msg.CAMERA_DO = "Do";
+Blockly.Msg.CAMERA_FPS = "fps";
+Blockly.Msg.CAMERA_FRAME_RATE = "Frame Rete:";
+Blockly.Msg.CAMERA_IMPORT = "Import piCamera";
+Blockly.Msg.CAMERA_RESOLUTION = "Resolution";
+Blockly.Msg.CAMERA_SENSOR_MODE = "Sensor Mode:";
+Blockly.Msg.CAMERA_SET_BOUNDING = "Set bounding box:";
+Blockly.Msg.CAMERA_USE_AS = "Use PiCamera as";
+Blockly.Msg.CHANGE_VALUE_TITLE = "Change value:";
+Blockly.Msg.CLEAN_UP = "Clean up Blocks";
+Blockly.Msg.COLLAPSE_ALL = "Collapse Blocks";
+Blockly.Msg.COLLAPSE_BLOCK = "Collapse Block";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "Colour 1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "Colour 2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";
+Blockly.Msg.COLOUR_BLEND_RATIO = "Ratio";
+Blockly.Msg.COLOUR_BLEND_TITLE = "Blend";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Blends two colours together with a given ratio (0.0 - 1.0).";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://en.wikipedia.org/wiki/Color";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Choose a colour from the palette.";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";
+Blockly.Msg.COLOUR_RANDOM_TITLE = "Random colour";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "Choose a colour at random.";
+Blockly.Msg.COLOUR_RGB_BLUE = "Blue";
+Blockly.Msg.COLOUR_RGB_GREEN = "Green";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";
+Blockly.Msg.COLOUR_RGB_RED = "Red";
+Blockly.Msg.COLOUR_RGB_TITLE = "Colour with";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "Break out of loop";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "Continue with next iteration of loop";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "Break out of the containing loop.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Skip the rest of this loop, and continue with the next iteration.";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Warning: This block may only be used within a loop.";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "For each item %1 in list %2";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "For each item in a list, set the variable '%1' to the item, and then do some statements.";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";
+Blockly.Msg.CONTROLS_FOR_TITLE = "count with %1 from %2 to %3 by %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Add a condition to the if block.";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Add a final, catch-all condition to the if block.";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "Add, remove, or reorder sections to reconfigure this if block.";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "Else";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "Else if";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "If";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "If a value is true, then do some statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "Do";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "Repeat %1 times";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Do some statements several times.";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "Repeat until";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "While";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "While a value is false, then do some statements.";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "While a value is true, then do some statements.";
+Blockly.Msg.DELETE_ALL_BLOCKS = "Delete all %1 blocks?";
+Blockly.Msg.DELETE_BLOCK = "Delete Block";
+Blockly.Msg.DELETE_VARIABLE = "Delete the '%1' property";
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "Delete %1 uses of the '%2' property?";
+Blockly.Msg.DELETE_X_BLOCKS = "Delete %1 Blocks";
+Blockly.Msg.DICTS_CREATE_EMPTY_TITLE = "Empty dictionary";
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD = "Create Dictionary";
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP = "";
+Blockly.Msg.DICTS_CREATE_WITH_INPUT_WITH = "Create dict with";
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_KEY = "Key";
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_MAPPING = ":";
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE = "Key/value";
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP = "";
+Blockly.Msg.DICTS_CREATE_WITH_TOOLTIP = "";
+Blockly.Msg.DICT_GET = "Get key";
+Blockly.Msg.DICT_GET_TO = "of";
+// Blockly.Msg.DICT_KEYS = "Get all keys from";
+Blockly.Msg.DISABLE_BLOCK = "Disable Block";
+Blockly.Msg.DUPLICATE_BLOCK = "Duplicate";
+Blockly.Msg.ENABLE_BLOCK = "Enable Block";
+Blockly.Msg.EXPAND_ALL = "Expand Blocks";
+Blockly.Msg.EXPAND_BLOCK = "Expand Block";
+Blockly.Msg.EXTERNAL_INPUTS = "Change to External Inputs";
+Blockly.Msg.HELP = "Help";
+Blockly.Msg.INLINE_INPUTS = "Change to Inline Inputs";
+Blockly.Msg.LISTS_APPEND = "Append item";
+Blockly.Msg.LISTS_APPEND_HELPURL = "http://google.com";
+Blockly.Msg.LISTS_APPEND_TO = "To list";
+Blockly.Msg.LISTS_APPEND_TOOLTIP = "Append an element to a list";
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "Create empty list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Returns a list, of length 0, containing no data records";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "List";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this list block.";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "Use these values to create an array of Numbers";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the list.";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Create a list with any number of items.";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "First";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# from end";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_GET = "Get";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "Get and remove";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "Last";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "Random";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "Remove";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "blank";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Returns the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Returns the item at the specified position in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Returns the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Returns a random item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Removes and returns the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Removes and returns the item at the specified position in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Removes and returns the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Removes and returns a random item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Removes the first item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "Removes the item at the specified position in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Removes the last item in a list.";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Removes a random item in a list.";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "To # from end";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "To #";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "To last";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "Get sub-list from first";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "Get sub-list from # from end";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "Get sub-list from #";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "blank";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list.";
+Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 is the last item.";
+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 is the first item.";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "Find first occurrence of item";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";
+Blockly.Msg.LISTS_INDEX_OF_LAST = "Find last occurrence of item";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Return the index value of the first/last matching item in the list. If the item is not found, return %1.";
+Blockly.Msg.LISTS_INLIST = "In list";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 is empty";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "Returns true if the list is empty.";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";
+Blockly.Msg.LISTS_LENGTH_TITLE = "Length of %1";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "Returns the length of a list.";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_REPEAT_TITLE = "Create list with item %1 repeated %2 times";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "Creates a list consisting of the given value repeated the specified number of times.";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "As";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "Insert at";
+Blockly.Msg.LISTS_SET_INDEX_SET = "Set";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserts the item at the start of a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Inserts the item at the specified position in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Append the item to the end of a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserts the item randomly in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Sets the first item in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "Sets the item at the specified position in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Sets the last item in a list.";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Sets a random item in a list.";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "Ascending";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "Descending";
+Blockly.Msg.LISTS_SORT_TITLE = "Sort %1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list.";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "Sort alphabetically, disregarding case.";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "Numeric";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "Alphabetic";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "Make list from text";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "Make text from list";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter.";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter.";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "With delimiter";
+Blockly.Msg.LOGGING_CONF = "Logging Basic config";
+Blockly.Msg.LOGGING_CONFIG = "Logging config";
+Blockly.Msg.LOGGING_CONFIG_LEVEL = "Level =";
+Blockly.Msg.LOGGING_IMPORT = "Import logging";
+Blockly.Msg.LOGGING_INFO = "Logging info";
+Blockly.Msg.LOGGING_SETUP = "Logging Setup";
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "False";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Returns either true or false.";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "True";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Return true if both inputs equal each other.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Return true if the first input is greater than the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Return true if the first input is greater than or equal to the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "Return true if the first input is smaller than the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "Return true if the first input is smaller than or equal to the second input.";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "Return true if both inputs are not equal to each other.";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "Not %1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "Returns true if the input is false. Returns false if the input is true.";
+Blockly.Msg.LOGIC_NULL = "None";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "Returns the special None object.";
+Blockly.Msg.LOGIC_OPERATION_AND = "and";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";
+Blockly.Msg.LOGIC_OPERATION_OR = "or";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "Return true if both inputs are true.";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "Return true if at least one of the inputs is true.";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "Test";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "If false";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "If true";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";
+Blockly.Msg.LOOP_FOREACH_ITEM = "For each item";
+Blockly.Msg.LOOP_FOREACH_LIST = "In list";
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+";
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Arithmetic";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "Return the sum of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Return the quotient of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Return the difference of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Return the product of the two numbers.";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Return the first number raised to the power of the second number.";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
+Blockly.Msg.MATH_CHANGE_TITLE = "Change %1 by %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "Add a number to property '%1'.";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "Constrain %1 low %2 high %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "Constrain a number to be between the specified limits (inclusive).";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "Is divisible by";
+Blockly.Msg.MATH_IS_EVEN = "Is even";
+Blockly.Msg.MATH_IS_NEGATIVE = "Is negative";
+Blockly.Msg.MATH_IS_ODD = "Is odd";
+Blockly.Msg.MATH_IS_POSITIVE = "Is positive";
+Blockly.Msg.MATH_IS_PRIME = "Is prime";
+Blockly.Msg.MATH_IS_TOOLTIP = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";
+Blockly.Msg.MATH_IS_WHOLE = "Is whole";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation";
+Blockly.Msg.MATH_MODULO_TITLE = "Remainder of %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two numbers.";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "A number.";
+Blockly.Msg.MATH_ONLIST_HELPURL = "";
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "Average of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "Max of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "Median of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "Min of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "Modes of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "Random item of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "Standard deviation of list";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "Sum of list";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "Return the average (arithmetic mean) of the numeric values in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "Return the largest number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Return the median number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "Return the smallest number in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "Return a list of the most common item(s) in the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Return a random element from the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the list.";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Return the sum of all the numbers in the list.";
+Blockly.Msg.MATH_POWER_SYMBOL = "^";
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "Random fraction";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "Random integer from %1 to %2";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Return a random integer between the two specified limits, inclusive.";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "Round";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "Round down";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "Round up";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "Round a number up or down.";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "Absolute";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "Square root";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "Return the absolute value of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "Return e to the power of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "Return the natural logarithm of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "Return the base 10 logarithm of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "Return the negation of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "Return 10 to the power of a number.";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "Return the square root of a number.";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";
+Blockly.Msg.MATH_SUM = "Sum";
+Blockly.Msg.MATH_TRIG_ACOS = "Acos";
+Blockly.Msg.MATH_TRIG_ASIN = "Asin";
+Blockly.Msg.MATH_TRIG_ATAN = "Atan";
+Blockly.Msg.MATH_TRIG_COS = "Cos";
+Blockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions";
+Blockly.Msg.MATH_TRIG_SIN = "Sin";
+Blockly.Msg.MATH_TRIG_TAN = "Tan";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "Return the arccosine of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "Return the arcsine of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "Return the arctangent of a number.";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "Return the cosine of a degree (not radian).";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Return the sine of a degree (not radian).";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Return the tangent of a degree (not radian).";
+Blockly.Msg.NEW_VARIABLE = "Create property...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "New property name:";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "blank";
+Blockly.Msg.PLATFORM_IMPORT = "Import platform";
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "Allow statements";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "with:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function '%1'.";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Run the user-defined function '%1' and use its output.";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "with: ";
+Blockly.Msg.PROCEDURES_CREATE_DO = "Create '%1'";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Describe this function...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "do";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "Function_name";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "Define";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE_CALLBACK = "Callback";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Creates a function with no output.";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "Return";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "Creates a function with an output.";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "Warning: This function has duplicate parameters.";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "Highlight function definition";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "If a value is true, then return a second value.";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "Warning: This block may be used only within a function definition.";
+Blockly.Msg.PROCEDURES_MAINFUNCTION = "Define Main function";
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "Parameter name:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "Add a parameter to the function.";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "Parameters";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Add, remove, or reorder inputs to this function.";
+Blockly.Msg.REDO = "Redo";
+Blockly.Msg.REMOVE_COMMENT = "Remove Comment";
+Blockly.Msg.RENAME_VARIABLE = "Rename property...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "Rename all '%1' properties to:";
+Blockly.Msg.REQUEST_DATA = "Data";
+Blockly.Msg.REQUEST_IMPORT = "Import requests";
+Blockly.Msg.REQUEST_POST_DATATYPE = "Request Post Data: JSON";
+Blockly.Msg.REQUEST_SET_URL = "Set URL:";
+Blockly.Msg.SYSTEM_EXIT = "Sys.exit";
+Blockly.Msg.SYSTEM_IMPORT = "Import sys";
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "Append text";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg.TEXT_APPEND_TO = "to";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "Append some text to variable '%1'.";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "To lower case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "To Title Case";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "To UPPER CASE";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "Return a copy of the text in a different case.";
+Blockly.Msg.TEXT_CHARAT_FIRST = "Get first letter";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "Get letter # from end";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "Get letter #";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "In text";
+Blockly.Msg.TEXT_CHARAT_LAST = "Get last letter";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "Get random letter";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position.";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text.";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "Join";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Add, remove, or reorder sections to reconfigure this text block.";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "To letter # from end";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "To letter #";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "To last letter";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "In text";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "Get substring from first letter";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "Get substring from letter # from end";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "Get substring from letter #";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text.";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "In text";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "Find first occurrence of text";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "Find last occurrence of text";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "blank";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty.";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "Join strings";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "Create a piece of text by joining together any number of items.";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";
+Blockly.Msg.TEXT_LENGTH_TITLE = "Length of %1";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Returns the number of letters (including spaces) in the provided text.";
+Blockly.Msg.TEXT_LOWER = "Set lower case";
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";
+Blockly.Msg.TEXT_PRINT_TITLE = "Print %1";
+Blockly.Msg.TEXT_PRINT_TITLE_PRINT = "Print";
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "Print the specified text, number, or other value.";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Prompt for user for a number.";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Prompt for user for some text.";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "prompt for number with message";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "prompt for text with message";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text.";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "Trim spaces from both sides of";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "Trim spaces from left side of";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "Trim spaces from right side of";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends.";
+Blockly.Msg.THREAD_IMPORT = "Import threading";
+Blockly.Msg.THREAD_SET_TARGET = "Threading set target";
+Blockly.Msg.THREAD_START = "Start";
+Blockly.Msg.THREAD_THREADING = "Threading";
+Blockly.Msg.TODAY = "Today";
+Blockly.Msg.TYPE_CHECK = "type of";
+Blockly.Msg.UNDO = "Undo";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "Property_name";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "Create 'set %1'";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";
+Blockly.Msg.VARIABLES_GET_SELF = "Get self";
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "Returns the value of this variable.";
+Blockly.Msg.VARIABLES_SET = "Set %1 = %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "Create '%1'";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";
+Blockly.Msg.VARIABLES_SET_SELF = "Set self";
+Blockly.Msg.VARIABLES_SET_SELF_TO = "To";
+Blockly.Msg.VARIABLES_SET_TAIL = "=";
+Blockly.Msg.VARIABLES_SET_TITLE = "Set";
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "Sets this variable to be equal to the input.";
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "A property named '%1' already exists.";
+Blockly.Msg.VISIONKIT_AIY_VISION_INFERENCE = "AIY Vision Inference";
+Blockly.Msg.VISIONKIT_ANNOTATOR = "Annotator";
+Blockly.Msg.VISIONKIT_ANNOTATOR_BOUNDING = "Annotator Bounding Box";
+Blockly.Msg.VISIONKIT_ANNOTATOR_FILL = "Fill=";
+Blockly.Msg.VISIONKIT_ANNOTATOR_SETTING = "Set dimensions:";
+Blockly.Msg.VISIONKIT_CAMERA_INFERENCE = "Camera Inference as";
+Blockly.Msg.VISIONKIT_CLOUDEVENT_API = "Cloud Event API:";
+Blockly.Msg.VISIONKIT_DO = "Do";
+Blockly.Msg.VISIONKIT_GETINFERENCE = "Get Inference";
+Blockly.Msg.VISIONKIT_GETMODEL_MODEL = "model";
+Blockly.Msg.VISIONKIT_GETMODEL_Of = "of";
+Blockly.Msg.VISIONKIT_IMPORT = "from";
+Blockly.Msg.VISIONKIT_IMPORT_ANNOTATOR = "Annotator import";
+Blockly.Msg.VISIONKIT_IMPORT_INFERENCE = "Inference import";
+Blockly.Msg.VISIONKIT_IMPORT_MODELS = "Models import";
+Blockly.Msg.VISIONKIT_JOY_DETECT = "Detect Joy Score and stored it to Core Cloud";
+Blockly.Msg.VISIONKIT_MODEL = "Model";
+Blockly.Msg.VISIONKIT_RUN_INFERENCE = "Run inference";
+Blockly.Msg.VISIONKIT_SETUP = "Google AIY Vision Kit Setup";
+Blockly.Msg.VISIONKIT_USE_MODEL = "Use model";
+Blockly.Msg.VOICEKIT_ASSISTANT = "Assistant";
+Blockly.Msg.VOICEKIT_DEMO_1 = "Command Control Demo";
+Blockly.Msg.VOICEKIT_DEMO_2 = "Via Google Assistant";
+Blockly.Msg.VOICEKIT_EVENTTYPE_ASSISTANT = "Assistant Event Type:";
+Blockly.Msg.VOICEKIT_EVENTTYPE_IMPORT = "Import EventType";
+Blockly.Msg.VOICEKIT_EVENT_ARGS = "Event args";
+Blockly.Msg.VOICEKIT_EVENT_OF = "of";
+Blockly.Msg.VOICEKIT_EVENT_TYPE_OF = "Event type of";
+Blockly.Msg.VOICEKIT_FROM = "From";
+Blockly.Msg.VOICEKIT_GET_CREDENTIAL = "Get Assistant Credential";
+Blockly.Msg.VOICEKIT_IMPORT_ASSISTANT = "Import Assistant";
+Blockly.Msg.VOICEKIT_IMPORT_AUTH = "Import auth_helpers";
+Blockly.Msg.VOICEKIT_IMPORT_TTS = "Import TTS";
+Blockly.Msg.VOICEKIT_IMPORT_TTS_SAY = "Aiy.voice.tts.say";
+Blockly.Msg.VOICEKIT_SETUP = "Google AIY Voice Kit Setup";
+Blockly.Msg.VOICEKIT_SET_CREDENTIAL = "Set credential for Assistant";
+Blockly.Msg.VOICEKIT_SET_DO = "Do";
+Blockly.Msg.VOICEKIT_SET_FROM = "From";
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.VARIABLES_SET_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+
+
+
+Blockly.Msg.CONTROL_FOREVER = "forever"
+Blockly.Msg.CONTROL_REPEAT = "repeat %1"
+Blockly.Msg.CONTROL_IF = "if %1 then"
+Blockly.Msg.CONTROL_ELSE = "else"
+Blockly.Msg.CONTROL_STOP = "stop"
+Blockly.Msg.CONTROL_STOP_ALL = "all"
+Blockly.Msg.CONTROL_STOP_THIS = "this script"
+Blockly.Msg.CONTROL_STOP_OTHER = "other scripts in sprite"
+Blockly.Msg.CONTROL_WAIT = "wait %1 seconds"
+Blockly.Msg.CONTROL_WAITUNTIL = "wait until %1"
+Blockly.Msg.CONTROL_REPEATUNTIL = "repeat until %1"
+Blockly.Msg.CONTROL_WHILE = "while %1"
+Blockly.Msg.CONTROL_FOREACH = "for each %1 in %2"
+Blockly.Msg.CONTROL_STARTASCLONE = "when I start as a clone"
+Blockly.Msg.CONTROL_CREATECLONEOF = "create clone of %1"
+Blockly.Msg.CONTROL_CREATECLONEOF_MYSELF = "myself"
+Blockly.Msg.CONTROL_DELETETHISCLONE = "delete this clone"
+Blockly.Msg.CONTROL_COUNTER = "counter"
+Blockly.Msg.CONTROL_INCRCOUNTER = "increment counter"
+Blockly.Msg.CONTROL_CLEARCOUNTER = "clear counter"
+Blockly.Msg.CONTROL_ALLATONCE = "all at once"
+Blockly.Msg.DATA_SETVARIABLETO = "set %1 to %2"
+Blockly.Msg.DATA_CHANGEVARIABLEBY = "change %1 by %2"
+Blockly.Msg.DATA_SHOWVARIABLE = "show variable %1"
+Blockly.Msg.DATA_HIDEVARIABLE = "hide variable %1"
+Blockly.Msg.DATA_ADDTOLIST = "add %1 to %2"
+Blockly.Msg.DATA_DELETEOFLIST = "delete %1 of %2"
+Blockly.Msg.DATA_DELETEALLOFLIST = "delete all of %1"
+Blockly.Msg.DATA_INSERTATLIST = "insert %1 at %2 of %3"
+Blockly.Msg.DATA_REPLACEITEMOFLIST = "replace item %1 of %2 with %3"
+Blockly.Msg.DATA_ITEMOFLIST = "item %1 of %2"
+Blockly.Msg.DATA_ITEMNUMOFLIST = "item # of %1 in %2"
+Blockly.Msg.DATA_LENGTHOFLIST = "length of %1"
+Blockly.Msg.DATA_LISTCONTAINSITEM = "%1 contains %2?"
+Blockly.Msg.DATA_SHOWLIST = "show list %1"
+Blockly.Msg.DATA_HIDELIST = "hide list %1"
+Blockly.Msg.DATA_INDEX_ALL = "all"
+Blockly.Msg.DATA_INDEX_LAST = "last"
+Blockly.Msg.DATA_INDEX_RANDOM = "random"
+Blockly.Msg.EVENT_WHENFLAGCLICKED = "when %1 clicked"
+Blockly.Msg.EVENT_WHENTHISSPRITECLICKED = "when this sprite clicked"
+Blockly.Msg.EVENT_WHENSTAGECLICKED = "when stage clicked"
+Blockly.Msg.EVENT_WHENTOUCHINGOBJECT = "when this sprite touches %1"
+Blockly.Msg.EVENT_WHENBROADCASTRECEIVED = "when I receive %1"
+Blockly.Msg.EVENT_WHENBACKDROPSWITCHESTO = "when backdrop switches to %1"
+Blockly.Msg.EVENT_WHENGREATERTHAN = "when %1 > %2"
+Blockly.Msg.EVENT_WHENGREATERTHAN_TIMER = "timer"
+Blockly.Msg.EVENT_WHENGREATERTHAN_LOUDNESS = "loudness"
+Blockly.Msg.EVENT_BROADCAST = "broadcast %1"
+Blockly.Msg.EVENT_BROADCASTANDWAIT = "broadcast %1 and wait"
+Blockly.Msg.EVENT_WHENKEYPRESSED = "when %1 key pressed"
+Blockly.Msg.EVENT_WHENKEYPRESSED_SPACE = "space"
+Blockly.Msg.EVENT_WHENKEYPRESSED_LEFT = "left arrow"
+Blockly.Msg.EVENT_WHENKEYPRESSED_RIGHT = "right arrow"
+Blockly.Msg.EVENT_WHENKEYPRESSED_DOWN = "down arrow"
+Blockly.Msg.EVENT_WHENKEYPRESSED_UP = "up arrow"
+Blockly.Msg.EVENT_WHENKEYPRESSED_ANY = "any"
+Blockly.Msg.LOOKS_SAYFORSECS = "say %1 for %2 seconds"
+Blockly.Msg.LOOKS_SAY = "say %1"
+Blockly.Msg.LOOKS_HELLO = "Hello!"
+Blockly.Msg.LOOKS_THINKFORSECS = "think %1 for %2 seconds"
+Blockly.Msg.LOOKS_THINK = "think %1"
+Blockly.Msg.LOOKS_HMM = "Hmm..."
+Blockly.Msg.LOOKS_SHOW = "show"
+Blockly.Msg.LOOKS_HIDE = "hide"
+Blockly.Msg.LOOKS_HIDEALLSPRITES = "hide all sprites"
+Blockly.Msg.LOOKS_EFFECT_COLOR = "color"
+Blockly.Msg.LOOKS_EFFECT_FISHEYE = "fisheye"
+Blockly.Msg.LOOKS_EFFECT_WHIRL = "whirl"
+Blockly.Msg.LOOKS_EFFECT_PIXELATE = "pixelate"
+Blockly.Msg.LOOKS_EFFECT_MOSAIC = "mosaic"
+Blockly.Msg.LOOKS_EFFECT_BRIGHTNESS = "brightness"
+Blockly.Msg.LOOKS_EFFECT_GHOST = "ghost"
+Blockly.Msg.LOOKS_CHANGEEFFECTBY = "change %1 effect by %2"
+Blockly.Msg.LOOKS_SETEFFECTTO = "set %1 effect to %2"
+Blockly.Msg.LOOKS_CLEARGRAPHICEFFECTS = "clear graphic effects"
+Blockly.Msg.LOOKS_CHANGESIZEBY = "change size by %1"
+Blockly.Msg.LOOKS_SETSIZETO = "set size to %1 %"
+Blockly.Msg.LOOKS_SIZE = "size"
+Blockly.Msg.LOOKS_CHANGESTRETCHBY = "change stretch by %1"
+Blockly.Msg.LOOKS_SETSTRETCHTO = "set stretch to %1 %"
+Blockly.Msg.LOOKS_SWITCHCOSTUMETO = "switch costume to %1"
+Blockly.Msg.LOOKS_NEXTCOSTUME = "next costume"
+Blockly.Msg.LOOKS_SWITCHBACKDROPTO = "switch backdrop to %1"
+Blockly.Msg.LOOKS_GOTOFRONTBACK = "go to %1 layer"
+Blockly.Msg.LOOKS_GOTOFRONTBACK_FRONT = "front"
+Blockly.Msg.LOOKS_GOTOFRONTBACK_BACK = "back"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS = "go %1 %2 layers"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_FORWARD = "forward"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_BACKWARD = "backward"
+Blockly.Msg.LOOKS_BACKDROPNUMBERNAME = "backdrop %1"
+Blockly.Msg.LOOKS_COSTUMENUMBERNAME = "costume %1"
+Blockly.Msg.LOOKS_NUMBERNAME_NUMBER = "number"
+Blockly.Msg.LOOKS_NUMBERNAME_NAME = "name"
+Blockly.Msg.LOOKS_SWITCHBACKDROPTOANDWAIT = "switch backdrop to %1 and wait"
+Blockly.Msg.LOOKS_NEXTBACKDROP_BLOCK = "next backdrop"
+Blockly.Msg.LOOKS_NEXTBACKDROP = "next backdrop"
+Blockly.Msg.LOOKS_PREVIOUSBACKDROP = "previous backdrop"
+Blockly.Msg.LOOKS_RANDOMBACKDROP = "random backdrop"
+Blockly.Msg.MOTION_MOVESTEPS = "move %1 steps"
+Blockly.Msg.MOTION_TURNLEFT = "turn %1 %2 degrees"
+Blockly.Msg.MOTION_TURNRIGHT = "turn %1 %2 degrees"
+Blockly.Msg.MOTION_POINTINDIRECTION = "point in direction %1"
+Blockly.Msg.MOTION_POINTTOWARDS = "point towards %1"
+Blockly.Msg.MOTION_POINTTOWARDS_POINTER = "mouse-pointer"
+Blockly.Msg.MOTION_GOTO = "go to %1"
+Blockly.Msg.MOTION_GOTO_POINTER = "mouse-pointer"
+Blockly.Msg.MOTION_GOTO_RANDOM = "random position"
+Blockly.Msg.MOTION_GOTOXY = "go to x: %1 y: %2"
+Blockly.Msg.MOTION_GLIDESECSTOXY = "glide %1 secs to x: %2 y: %3"
+Blockly.Msg.MOTION_GLIDETO = "glide %1 secs to %2"
+Blockly.Msg.MOTION_GLIDETO_POINTER = "mouse-pointer"
+Blockly.Msg.MOTION_GLIDETO_RANDOM = "random position"
+Blockly.Msg.MOTION_CHANGEXBY = "change x by %1"
+Blockly.Msg.MOTION_SETX = "set x to %1"
+Blockly.Msg.MOTION_CHANGEYBY = "change y by %1"
+Blockly.Msg.MOTION_SETY = "set y to %1"
+Blockly.Msg.MOTION_IFONEDGEBOUNCE = "if on edge, bounce"
+Blockly.Msg.MOTION_SETROTATIONSTYLE = "set rotation style %1"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT = "left-right"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE = "don't rotate"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND = "all around"
+Blockly.Msg.MOTION_XPOSITION = "x position"
+Blockly.Msg.MOTION_YPOSITION = "y position"
+Blockly.Msg.MOTION_DIRECTION = "direction"
+Blockly.Msg.MOTION_SCROLLRIGHT = "scroll right %1"
+Blockly.Msg.MOTION_SCROLLUP = "scroll up %1"
+Blockly.Msg.MOTION_ALIGNSCENE = "align scene %1"
+Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT = "bottom-left"
+Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT = "bottom-right"
+Blockly.Msg.MOTION_ALIGNSCENE_MIDDLE = "middle"
+Blockly.Msg.MOTION_ALIGNSCENE_TOPLEFT = "top-left"
+Blockly.Msg.MOTION_ALIGNSCENE_TOPRIGHT = "top-right"
+Blockly.Msg.MOTION_XSCROLL = "x scroll"
+Blockly.Msg.MOTION_YSCROLL = "y scroll"
+Blockly.Msg.MOTION_STAGE_SELECTED = "Stage selected: no motion blocks"
+Blockly.Msg.OPERATORS_ADD = "%1 + %2"
+Blockly.Msg.OPERATORS_SUBTRACT = "%1 - %2"
+Blockly.Msg.OPERATORS_MULTIPLY = "%1 * %2"
+Blockly.Msg.OPERATORS_DIVIDE = "%1 / %2"
+Blockly.Msg.OPERATORS_RANDOM = "pick random %1 to %2"
+Blockly.Msg.OPERATORS_GT = "%1 > %2"
+Blockly.Msg.OPERATORS_LT = "%1 < %2"
+Blockly.Msg.OPERATORS_EQUALS = "%1 = %2"
+Blockly.Msg.OPERATORS_AND = "%1 and %2"
+Blockly.Msg.OPERATORS_OR = "%1 or %2"
+Blockly.Msg.OPERATORS_NOT = "not %1"
+Blockly.Msg.OPERATORS_JOIN = "join %1 %2"
+Blockly.Msg.OPERATORS_JOIN_APPLE = "apple"
+Blockly.Msg.OPERATORS_JOIN_BANANA = "banana"
+Blockly.Msg.OPERATORS_LETTEROF = "letter %1 of %2"
+Blockly.Msg.OPERATORS_LETTEROF_APPLE = "a"
+Blockly.Msg.OPERATORS_LENGTH = "length of %1"
+Blockly.Msg.OPERATORS_CONTAINS = "%1 contains %2?"
+Blockly.Msg.OPERATORS_MOD = "%1 mod %2"
+Blockly.Msg.OPERATORS_ROUND = "round %1"
+Blockly.Msg.OPERATORS_MATHOP = "%1 of %2"
+Blockly.Msg.OPERATORS_MATHOP_ABS = "abs"
+Blockly.Msg.OPERATORS_MATHOP_FLOOR = "floor"
+Blockly.Msg.OPERATORS_MATHOP_CEILING = "ceiling"
+Blockly.Msg.OPERATORS_MATHOP_SQRT = "sqrt"
+Blockly.Msg.OPERATORS_MATHOP_SIN = "sin"
+Blockly.Msg.OPERATORS_MATHOP_COS = "cos"
+Blockly.Msg.OPERATORS_MATHOP_TAN = "tan"
+Blockly.Msg.OPERATORS_MATHOP_ASIN = "asin"
+Blockly.Msg.OPERATORS_MATHOP_ACOS = "acos"
+Blockly.Msg.OPERATORS_MATHOP_ATAN = "atan"
+Blockly.Msg.OPERATORS_MATHOP_LN = "ln"
+Blockly.Msg.OPERATORS_MATHOP_LOG = "log"
+Blockly.Msg.OPERATORS_MATHOP_EEXP = "e ^"
+Blockly.Msg.OPERATORS_MATHOP_10EXP = "10 ^"
+Blockly.Msg.PROCEDURES_DEFINITION = "define %1"
+Blockly.Msg.SENSING_TOUCHINGOBJECT = "touching %1?"
+Blockly.Msg.SENSING_TOUCHINGOBJECT_POINTER = "mouse-pointer"
+Blockly.Msg.SENSING_TOUCHINGOBJECT_EDGE = "edge"
+Blockly.Msg.SENSING_TOUCHINGCOLOR = "touching color %1?"
+Blockly.Msg.SENSING_COLORISTOUCHINGCOLOR = "color %1 is touching %2?"
+Blockly.Msg.SENSING_DISTANCETO = "distance to %1"
+Blockly.Msg.SENSING_DISTANCETO_POINTER = "mouse-pointer"
+Blockly.Msg.SENSING_ASKANDWAIT = "ask %1 and wait"
+Blockly.Msg.SENSING_ASK_TEXT = "What's your name?"
+Blockly.Msg.SENSING_ANSWER = "answer"
+Blockly.Msg.SENSING_KEYPRESSED = "key %1 pressed?"
+Blockly.Msg.SENSING_MOUSEDOWN = "mouse down?"
+Blockly.Msg.SENSING_MOUSEX = "mouse x"
+Blockly.Msg.SENSING_MOUSEY = "mouse y"
+Blockly.Msg.SENSING_SETDRAGMODE = "set drag mode %1"
+Blockly.Msg.SENSING_SETDRAGMODE_DRAGGABLE = "draggable"
+Blockly.Msg.SENSING_SETDRAGMODE_NOTDRAGGABLE = "not draggable"
+Blockly.Msg.SENSING_LOUDNESS = "loudness"
+Blockly.Msg.SENSING_LOUD = "loud?"
+Blockly.Msg.SENSING_TIMER = "timer"
+Blockly.Msg.SENSING_RESETTIMER = "reset timer"
+Blockly.Msg.SENSING_OF = "%1 of %2"
+Blockly.Msg.SENSING_OF_XPOSITION = "x position"
+Blockly.Msg.SENSING_OF_YPOSITION = "y position"
+Blockly.Msg.SENSING_OF_DIRECTION = "direction"
+Blockly.Msg.SENSING_OF_COSTUMENUMBER = "costume #"
+Blockly.Msg.SENSING_OF_COSTUMENAME = "costume name"
+Blockly.Msg.SENSING_OF_SIZE = "size"
+Blockly.Msg.SENSING_OF_VOLUME = "volume"
+Blockly.Msg.SENSING_OF_BACKDROPNUMBER = "backdrop #"
+Blockly.Msg.SENSING_OF_BACKDROPNAME = "backdrop name"
+Blockly.Msg.SENSING_OF_STAGE = "Stage"
+Blockly.Msg.SENSING_CURRENT = "current %1"
+Blockly.Msg.SENSING_CURRENT_YEAR = "year"
+Blockly.Msg.SENSING_CURRENT_MONTH = "month"
+Blockly.Msg.SENSING_CURRENT_DATE = "date"
+Blockly.Msg.SENSING_CURRENT_DAYOFWEEK = "day of week"
+Blockly.Msg.SENSING_CURRENT_HOUR = "hour"
+Blockly.Msg.SENSING_CURRENT_MINUTE = "minute"
+Blockly.Msg.SENSING_CURRENT_SECOND = "second"
+Blockly.Msg.SENSING_DAYSSINCE2000 = "days since 2000"
+Blockly.Msg.SENSING_USERNAME = "username"
+Blockly.Msg.SENSING_USERID = "user id"
+Blockly.Msg.SOUND_PLAY = "start sound %1"
+Blockly.Msg.SOUND_PLAYUNTILDONE = "play sound %1 until done"
+Blockly.Msg.SOUND_STOPALLSOUNDS = "stop all sounds"
+Blockly.Msg.SOUND_SETEFFECTO = "set %1 effect to %2"
+Blockly.Msg.SOUND_CHANGEEFFECTBY = "change %1 effect by %2"
+Blockly.Msg.SOUND_CLEAREFFECTS = "clear sound effects"
+Blockly.Msg.SOUND_EFFECTS_PITCH = "pitch"
+Blockly.Msg.SOUND_EFFECTS_PAN = "pan left/right"
+Blockly.Msg.SOUND_CHANGEVOLUMEBY = "change volume by %1"
+Blockly.Msg.SOUND_SETVOLUMETO = "set volume to %1%"
+Blockly.Msg.SOUND_VOLUME = "volume"
+Blockly.Msg.SOUND_RECORD = "record..."
+Blockly.Msg.CATEGORY_MOTION = "Motion"
+Blockly.Msg.CATEGORY_LOOKS = "Looks"
+Blockly.Msg.CATEGORY_SOUND = "Sound"
+Blockly.Msg.CATEGORY_EVENTS = "Events"
+Blockly.Msg.CATEGORY_CONTROL = "Control"
+Blockly.Msg.CATEGORY_SENSING = "Sensing"
+Blockly.Msg.CATEGORY_OPERATORS = "Operators"
+Blockly.Msg.CATEGORY_VARIABLES = "Variables"
+Blockly.Msg.CATEGORY_MYBLOCKS = "My Blocks"
+Blockly.Msg.DUPLICATE = "Duplicate"
+Blockly.Msg.DUPLICATE_PASTE = "Duplicate And Paste"
+Blockly.Msg.DELETE = "Delete blocks"
+Blockly.Msg.ADD_COMMENT = "Add Comment"
+Blockly.Msg.REMOVE_COMMENT = "Delete Comment"
+Blockly.Msg.DELETE_BLOCK = "Delete Block"
+Blockly.Msg.DELETE_X_BLOCKS = "Delete %1 Blocks"
+Blockly.Msg.DELETE_ALL_BLOCKS = "Delete all %1 blocks?"
+Blockly.Msg.CLEAN_UP = "Clean up Blocks"
+Blockly.Msg.HELP = "Help"
+Blockly.Msg.UNDO = "Undo"
+Blockly.Msg.REDO = "Redo"
+Blockly.Msg.EDIT_PROCEDURE = "Edit"
+Blockly.Msg.SHOW_PROCEDURE_DEFINITION = "Go to definition"
+Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT = "Say something..."
+Blockly.Msg.COLOUR_HUE_LABEL = "Color"
+Blockly.Msg.COLOUR_SATURATION_LABEL = "Saturation"
+Blockly.Msg.COLOUR_BRIGHTNESS_LABEL = "Brightness"
+Blockly.Msg.CHANGE_VALUE_TITLE = "Change value:"
+Blockly.Msg.RENAME_VARIABLE = "Rename variable"
+Blockly.Msg.RENAME_VARIABLE_TITLE = "Rename all \"%1\" variables to:"
+Blockly.Msg.RENAME_VARIABLE_MODAL_TITLE = "Rename Variable"
+Blockly.Msg.NEW_VARIABLE = "Make a Variable"
+Blockly.Msg.NEW_VARIABLE_TITLE = "New variable name:"
+Blockly.Msg.VARIABLE_MODAL_TITLE = "New Variable"
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "A variable named \"%1\" already exists."
+Blockly.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE = "A variable named \"%1\" already exists for another variable of type \"%2\"."
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "Delete %1 uses of the \"%2\" variable?"
+Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE = "Can't delete the variable \"%1\" because it's part of the definition of the function \"%2\""
+Blockly.Msg.DELETE_VARIABLE = "Delete the \"%1\" variable"
+Blockly.Msg.NEW_PROCEDURE = "Make a Block"
+Blockly.Msg.PROCEDURE_ALREADY_EXISTS = "A procedure named \"%1\" already exists."
+Blockly.Msg.PROCEDURE_DEFAULT_NAME = "block name"
+Blockly.Msg.NEW_LIST = "Make a List"
+Blockly.Msg.NEW_LIST_TITLE = "New list name:"
+Blockly.Msg.LIST_MODAL_TITLE = "New List"
+Blockly.Msg.LIST_ALREADY_EXISTS = "A list named \"%1\" already exists."
+Blockly.Msg.RENAME_LIST_TITLE = "Rename all \"%1\" lists to:"
+Blockly.Msg.RENAME_LIST_MODAL_TITLE = "Rename List"
+Blockly.Msg.DEFAULT_LIST_ITEM = "thing"
+Blockly.Msg.NEW_BROADCAST_MESSAGE = "New message"
+Blockly.Msg.NEW_BROADCAST_MESSAGE_TITLE = "New message name:"
+Blockly.Msg.BROADCAST_MODAL_TITLE = "New Message"
+Blockly.Msg.DEFAULT_BROADCAST_MESSAGE_NAME = "message1"
+Blockly.Msg.GROVEZERO_MINIWHEEL_SET_POWER = "%1 %2 Chassis left motor %3 %,right motor %4 %"
+Blockly.Msg.GROVEZERO_MINIWHEEL_STOP = "%1 %2 Chassis stop"
+Blockly.Msg.GROVEZERO_MINIWHEEL_RUN_VELOCITY_AZIMUTH = "%1 %2 Chassis go %4 at %3 speed"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT1 = "low"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT2 = "medium"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT3 = "high"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT4 = "forward"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT5 = "backward"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT6 = "left"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT7 = "right"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT8 = "clockwise"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT9 = "counterclockwise"
+Blockly.Msg.GROVEZERO_MOTOR_STOP = "%1 %2 %3 DC Motor stop"
+Blockly.Msg.GROVEZERO_DC_MOTOR_TRUN_POWER = "%1 %2 %3 DC Motor rotate at power %4 %"
+Blockly.Msg.GROVEZERO_SERVO_TURN_ANGLE = "%1 %2 Servo move to %3 degree"
+Blockly.Msg.GROVEZERO_RGB_TO_COLOR = "%1 %2 red %3 green %4 blue %5"
+Blockly.Msg.GROVEZERO_HSL_TO_COLOR = "%1 %2 color %3 saturation %4 brightness %5"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_IS_ON = "%1 %2 LED Matrix x:%3 y:%4 is ON?"
+Blockly.Msg.GROVEZERO_LED_MATRIX_SHOW_SHAPE = "%1 %2 LED Matrix show image %3"
+Blockly.Msg.GROVEZERO_LED_MATRIX_SHOW_STRING = "%1 %2 LED Matrix show string %3"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_SET_ON = "%1 %2 LED Matrix turn on x: %3 y: %4"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_SET_OFF = "%1 %2 LED Matrix turn off x: %3 y: %4"
+Blockly.Msg.GROVEZERO_LED_MATRIX_CLEAN = "%1 %2 LED Matrix clear screen"
+Blockly.Msg.GROVEZERO_RGB_LED_SHOW_STYLE_COLOR = "%1 %2 RGB LED always %3 %4"
+Blockly.Msg.GROVEZERO_RGB_LED_SHOW_STYLE = "%1 %2 RGB LED show %3"
+Blockly.Msg.GROVEZERO_RGB_LED_FADE_FROM_COLOR1_TO_COLOR2 = "%1 %2 RGB LED fade from %3 to %4"
+Blockly.Msg.GROVEZERO_RGB_LED_SET_BRIGHTNESS = "%1 %2 RGB LED set brightness to %3 %"
+Blockly.Msg.GROVEZERO_RGB_LED_LIGHT_OFF = "%1 %2 RGB LED light off"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT1 = "show"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT2 = "blink"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT3 = "breath"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT4 = "rainbow"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT5 = "random color"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_SHAPE = "%1 %2 %3 RGB LED Matrix show image %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_STRING = "%1 %2 %3 RGB LED Matrix show string %4 %5"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_ANIMA = "%1 %2 %3 RGB LED Matrix show animation %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_HISTOGRAM = "%1 %2 %3 RGB LED Matrix plot bar graph of %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON = "%1 %2 %3 RGB LED Matrix plot x:%4 y:%5 %6"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_OFF = "%1 %2 %3 RGB LED Matrix unplot x:%4 y:%5"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OFF = "%1 %2 %3 RGB LED Matrix toggle x:%4 y:%5 %6"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_IS_ON = "%1 %2 %3 RGB LED Matrix x:%4 y:%5 is ON?"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_CLEAN = "%1 %2 %3 RGB LED Matrix clear screen"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_GET_COLOR = "%1 %2 %3 RGB LED Matrix x:%4 y:%5 color"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT1 = "wave"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT2 = "draw big square CW"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT3 = "draw small square CW"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT4 = "draw big square CCW"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT5 = "draw small square CCW"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT6 = "pattern"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT7 = "fire"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT8 = "walking"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT9 = "heartbreak"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT1 = "red"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT2 = "orange"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT3 = "yellow"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT4 = "green"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT5 = "cyan"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT6 = "blue"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT7 = "purple"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT8 = "pink"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT9 = "white"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT10 = "black"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_WHEN_COUNTDOWN_END = "%1 %2 When 4 Digit Display timer ends"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_SHOW_NUMBER = "%1 %2 4 Digit Display show %3"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_START_COUNTDOWN = "%1 %2 4 Digit Display set timer %3 seconds"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_OFF = "%1 %2 4 Digit Display OFF"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_SET_BRIGHTNESS = "%1 %2 4 Digit Display set brightness to %3 %"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY = "%1 %2 Buzzer play melody %3 once"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT0 = "ba ding"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT1 = "wawawawaa"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT2 = "jump up"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT3 = "jump down"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT4 = "power up"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT5 = "power down"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT6 = "magic wand"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT7 = "siren"
+Blockly.Msg.GROVEZERO_BUZZER_MUTE_FOR_BEAT = "%1 %2 Buzzer rest for %3 beat"
+Blockly.Msg.GROVEZERO_BUZZER_SET_BPM = "%1 %2 Buzzer set tempo (bpm) to %3"
+Blockly.Msg.GROVEZERO_BUZZER_ADD_BPM = "%1 %2 Buzzer change tempo (bpm) by %3"
+Blockly.Msg.GROVEZERO_BUZZER_GET_BPM = "%1 %2 Buzzer tempo (bpm)"
+Blockly.Msg.GROVEZERO_BUZZER_STOP = "%1 %2 Buzzer stop"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_NOTE = "%1 %2 Buzzer ring tone %3"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_NOTE_FOR_BEAT = "%1 %2 Buzzer play tone %3 for %4 beat"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT0 = "Low C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT1 = "Low D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT2 = "Low E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT3 = "Low F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT4 = "Low G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT5 = "Low A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT6 = "Low B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT7 = "Middle C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT8 = "Middle D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT9 = "Middle E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT10 = "Middle F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT11 = "Middle G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT12 = "Middle A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT13 = "Middle B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT14 = "High C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT15 = "High D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT16 = "High E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT17 = "High F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT18 = "High G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT19 = "High A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT20 = "High B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT21 = "Low C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT22 = "Low D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT23 = "Low F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT24 = "Low G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT25 = "Low A#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT26 = "Middle C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT27 = "Middle D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT28 = "Middle F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT29 = "Middle G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT30 = "Middle A#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT31 = "High C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT32 = "High D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT33 = "High F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT34 = "High G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT35 = "High A#"
+Blockly.Msg.GROVEZERO_MP3_START_PLAY = "%1 %2 MP3 play soundtrack %3"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY = "%1 %2 MP3 %3"
+Blockly.Msg.GROVEZERO_MP3_SWITCH = "%1 %2 MP3 %3 soundtrack"
+Blockly.Msg.GROVEZERO_MP3_ADD_VOLUME = "%1 %2 MP3 change volume by %3 %"
+Blockly.Msg.GROVEZERO_MP3_SET_VOLUME = "%1 %2 MP3 set volume to %3 %"
+Blockly.Msg.GROVEZERO_MP3_STOP_PLAY = "%1 %2 MP3 stop"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE = "%1 %2 MP3 set play mode %3"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT0 = "pause"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT1 = "resume"
+Blockly.Msg.GROVEZERO_MP3_SWITCH_OPT0 = "next"
+Blockly.Msg.GROVEZERO_MP3_SWITCH_OPT1 = "previous"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT0 = "normal"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT1 = "shuffle"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT2 = "repeat"
+Blockly.Msg.GROVEZERO_MAINBOARD_START = "%1 %2 When start"
+Blockly.Msg.GROVEZERO_MAINBOARD_WHEN_ARRIVAL_TIME = "%1 %2 When timer > %3 seconds"
+Blockly.Msg.GROVEZERO_MAINBOARD_WHEN_RADIO_RECEIVE = "%1 %2 When radio receive %3"
+Blockly.Msg.GROVEZERO_MAINBOARD_BROADCAST = "%1 %2 broadcast %3"
+Blockly.Msg.GROVEZERO_MAINBOARD_STOP_BROADCAST = "%1 %2 stop broadcasting"
+Blockly.Msg.GROVEZERO_MAINBOARD_SET_BROADCAST_CHANNEL = "%1 %2 Set radio group to %3"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK = "%1 %2 When %3 Twin Button %4 %5"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_IS_PRESSED = "%1 %2 %3 Twin Button %4 is pressed?"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT3 = "clicked"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT5 = "held"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_WHEN_CHANGE = "%1 %2 When 9-axis Motion Sensor %3"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT0 = "straight down"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT1 = "straight up"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT2 = "tilt left"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT3 = "tilt right"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT4 = "face up"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT5 = "face down"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT6 = "shake"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT7 = "free fall"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_IS = "%1 %2 9-axis Motion Sensor %3 ?"
+Blockly.Msg.GROVEZERO_IMU9_DOF_GET_VALUE = "%1 %2 9-axis Motion Sensor Acceleration(mg) of %3"
+Blockly.Msg.GROVEZERO_PIR_MOTION_SENSOR_DETECT_SOMEONE = "%1 %2 When PIR Motion Sensor detect someone"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK = "%1 %2 When %3 Mech Key %4"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT0 = "clicked"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT1 = "held"
+Blockly.Msg.GROVEZERO_MECH_KEY_IS_PRESSED = "%1 %2 %3 Mech Key is pressed? "
+Blockly.Msg.GROVEZERO_MECH_KEY_SET_RGB = "%1 %2 %3 Mech Key backlit show %4"
+Blockly.Msg.GROVEZERO_MECH_KEY_CLOSE_RGB = "%1 %2 %3 Mech Key backlit off"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE = "%1 %2 When %3 Knob %4"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT0 = "rotated clockwise"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT1 = "rotated counter clockwise"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT2 = "pressed"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE = "%1 %2 When Gesture Sensor detect %3 "
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT0 = "swipe left"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT1 = "swipe right"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT2 = "swipe up"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT3 = "swipe down"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT4 = "approaching object"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT5 = "departing object"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT6 = "circle-clockwise"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT7 = "circle-counter clockwise"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT8 = "finger waving"
+Blockly.Msg.GROVEZERO_TOUCHPAD_IS_PRESSED = "%1 %2 %3 Touchpad pin %4 is pressed?"
+Blockly.Msg.GROVEZERO_TOUCHPAD_WHEN_CLICK = "%1 %2 When %3 Touchpad pin %4 is pressed"
+Blockly.Msg.GROVEZERO_LIGHT_SENSOR_GET_VALUE = "%1 %2 Light Sensor light level(lux)"
+Blockly.Msg.GROVEZERO_SOUND_SENSOR_GET_VALUE = "%1 %2 Sound Sensor sound level"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE = "%1 %2 Temperature Sensor temperature in %3"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT0 = "℃"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT1 = "℉"
+Blockly.Msg.GROVEZERO_SLIDER_GET_VALUE = "%1 %2 %3 Slider value"
+Blockly.Msg.GROVEZERO_ULTRASONIC_SENSOR_GET_VALUE = "%1 %2 Ultrasonic Sensor distance(cm)"
+Blockly.Msg.GROVEZERO_TEMHUM_SENSOR_GET_TEM_VALUE = "%1 %2 Temperature & Humidity Sensor temperature %3"
+Blockly.Msg.GROVEZERO_TEMHUM_SENSOR_GET_HUM_VALUE = "%1 %2 Temperature & Humidity Sensor humidity(%)"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_GET_COLOR = "%1 %2 Color Line Follower color value"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITION = "%1 %2 Color Line Follower line position %3"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT0 = "middle"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT1 = "right"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT2 = "right-most"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT3 = "left"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT4 = "left-most"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT5 = "lost"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR = "%1 %2 Color Line Follower is seeing %3"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT0 = "red"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT1 = "green"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT2 = "blue"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT3 = "black"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT4 = "other"
+Blockly.Msg.ARDUINO_SEEED_SERVO_MOVE = "%1 %2 Servo Pin %3 Degree(0-180) %4 Delay(ms) %5"
+Blockly.Msg.ARDUINO_SEEED_SERVO_READ_DEGREES = "%1 %2 Servo Pin %3 Read Degrees"
+Blockly.Msg.ARDUINO_SEEED_LED = "%1 %2 LED Pin %3 stat %4"
+Blockly.Msg.ARDUINO_SEEED_BUZZER = "%1 %2 Buzzer Pin %3 stat %4"
+Blockly.Msg.ARDUINO_SEEED_RELAY = "%1 %2 Relay Pin %3 stat %4"
+Blockly.Msg.ARDUINO_SEEED_BTN = "%1 %2 Button PIN# %3 is pressed"
+Blockly.Msg.ARDUINO_SEEED_TILT = "%1 %2 Tilt Pin %3"
+Blockly.Msg.ARDUINO_SEEED_TOUCH = "%1 %2 Touch Pin %3"
+Blockly.Msg.ARDUINO_SEEED_ROTATION = "%1 %2 Rotation Pin %3"
+Blockly.Msg.ARDUINO_SEEED_SOUND = "%1 %2 Sound Pin %3"
+Blockly.Msg.ARDUINO_SEEED_LIGHT = "%1 %2 Light Pin %3"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE = "%1 %2 Temperature Pin %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT = "%1 %2 LCD RGB Backlight print line1 %3 print line2 %4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT2 = "%1 %2 LCD RGB Backlight row %3 column %4 print %5"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER = "%1 %2 LCD RGB Backlight %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT1 = "On"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT2 = "Off"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT3 = "Cursor"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT4 = "No Cursor"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT5 = "Blink"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT6 = "No Blink"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT7 = "Clear"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_SETRGB = "%1 %2 LCD RGB setColor R %3 G %4 B %5"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY = "%1 %2 Temperature&Humidity PIN %3 %4"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT1 = "temperature"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT2 = "humidity"
+Blockly.Msg.ARDUINO_SEEED_THUMB_JOYSTICK = "%1 %2 Thumb Joystick PIN %3 %4"
+Blockly.Msg.ARDUINO_SEEED_ULT = "%1 %2 Ultrasonic Ranger distance(cm) PIN# %3"
+Blockly.Msg.ARDUINO_SEEED_LINE_FINDER = "%1 %2 IR Distance Interrupter %3"
+Blockly.Msg.ARDUINO_SEEED_LINE_FINDER_R = "%1 %2 Line Finder PIN %3"
+Blockly.Msg.ARDUINO_SEEED_WATER = "%1 %2 Water PIN %3"
+Blockly.Msg.ARDUINO_SEEED_MAGNETIC_SWITCH = "%1 %2 Magnetic Switch PIN %3"
+Blockly.Msg.ARDUINO_SEEED_PIR_MOTION = "%1 %2 PIR Motion PIN %3"
+Blockly.Msg.ARDUINO_SEEED_FLAME = "%1 %2 Flame PIN %3"
+Blockly.Msg.ARDUINO_SEEED_COLLISION = "%1 %2 Collision PIN %3"
+Blockly.Msg.ARDUINO_SEEED_HALL = "%1 %2 Hall PIN %3"
+Blockly.Msg.ARDUINO_SEEED_SLIDE_POT = "%1 %2 Slide Potentionmeter PIN %3"
+Blockly.Msg.ARDUINO_SEEED_MOISTURE = "%1 %2 Moisture PIN %3"
+Blockly.Msg.ARDUINO_SEEED_4DIGIT_DISPLAY = "%1 %2 4 Digit Display PIN %3 show %4"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED = "%1 %2 Chainable RGB LED PIN %3 show %4 count %5"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED1 = "%1 %2 Chainable RGB LED PIN %3 show R %4 G %5 B %6 count %7"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED10 = "%1 %2 Chainable RGB LED PIN# %3 show %4"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED11 = "%1 %2 Chainable RGB LED PIN# %3 show R %4 G %5 B %6"
+Blockly.Msg.ARDUINO_SEEED_SPEAKER = "%1 %2 Speaker PIN %3 play tone %4 for %5 beat"
+Blockly.Msg.ARDUINO_SEEED_RECORDER = "%1 %2 Recorder PIN %3 Stat %4"
+Blockly.Msg.ARDUINO_SEEED_EL_DRIVER = "%1 %2 EL Driver PIN %3 Stat %4"
+Blockly.Msg.ARDUINO_SEEED_EL_VIBRATION_MOTOR = "%1 %2 Vibration PIN %3 Stat %4"
+Blockly.Msg.ARDUINO_SEEED_ELECTROMAGNET = "%1 %2 Electromagnet PIN %3 Stat %4"
+Blockly.Msg.ARDUINO_SEEED_MINI_FAN = "%1 %2 Mini Fan PIN %3 Stat %4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_3ADA = "%1 %2 3 Axis Digital Accelerometer-16 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_TOUCH = "%1 %2 I2C Touch CH %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER = "%1 %2 Mini I2C Motor %3 speed(-255~255) %4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER_STOP = "%1 %2  Mini I2C Motor %3 stop"
+Blockly.Msg.ARDUINO_SEEED_LED_STRING_LIGHT = "%1 %2 WS2813 PIN %3 LED %4 show R %5 G %6 B %7"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR = "%1 %2 LED Bar PIN %3 %4 %5"
+Blockly.Msg.ARDUINO_SEEED_LED_CIRCULAR_LED = "%1 %2 Circular LED PIN %3 show %4"
+Blockly.Msg.ARDUINO_SEEED_GESTURE = "%1 %2 Gesture detected %3?"
+Blockly.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER = "%1 %2 Speech Recognizer PIN %3 detected %4"
+Blockly.Msg.ARDUINO_FIGURE_OUTPUT = "DigitalWrite PIN# %1 Stat %2"
+Blockly.Msg.ARDUINO_FIGURE_INPUT = "DigitalRead PIN# %1"
+Blockly.Msg.ARDUINO_ANALOG_INPUT = "AnalogRead PIN# %1"
+Blockly.Msg.ARDUINO_ANALOG_OUTPUT = "AnalogWrite PIN# %1(PWM) value %2"
+Blockly.Msg.ARDUINO_PULSE_LEN = "PulseIn(μs) PIN %1 state %2"
+Blockly.Msg.ARDUINO_PULSE_LEN_US = "pulseIn(μs) PIN %1 state %2 timeout(μs) %3"
+Blockly.Msg.ARDUINO_SERIAL_BAUD_RATE = "Serial baud rate %1 bps"
+Blockly.Msg.ARDUINO_SERIAL_PRINT = "Serial println %1"
+Blockly.Msg.ARDUINO_SERIAL_IS_READABLE = "Serial isAvailable?"
+Blockly.Msg.ARDUINO_SERIAL_READ = "Serial readString"
+Blockly.Msg.ARDUINO_DELAY_MS = "Delay ms %1"
+Blockly.Msg.ARDUINO_DELAY_US = "Delay μs %1"
+Blockly.Msg.ARDUINO_SYS_TIME = "System running time %1"
+Blockly.Msg.ARDUINO_KEEP_WAIT = "end program"
+Blockly.Msg.ARDUINO_FOR1 = "count with %1 from %2 to %3 step %4"
+Blockly.Msg.ARDUINO_FOR2 = "do %1"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT = "%1 %2 RGB LED Matrix plot x:%3 y:%4 %5"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_TEXT = "%1 %2 RGB LED Matrix show string %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_EMOJS = "%1 %2 RGB LED Matrix show image %3"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1 = "%1 %2 Otto DIY Robot %3 Steps:%4 Time:%5"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2 = "%1 %2 Otto DIY Robot %3 Steps:%4 Time:%5 Direction:%6"
+Blockly.Msg.ARDUINO_SETUP_LOOP0 = "setup"
+Blockly.Msg.ARDUINO_SETUP_LOOP2 = "loop"
+Blockly.Msg.ARDUINO_REPEAT = "repeat while %1"
+Blockly.Msg.ARDUINO_BREAK = "break out of loop"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT0 = "Up"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT1 = "Down"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT2 = "Left"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT3 = "Right"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT4 = "Forward"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT5 = "Backward"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT6 = "Clockwise"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT7 = "Count Clockwise"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT8 = "Wave"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT0 = "red"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT1 = "orange"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT2 = "yellow"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT3 = "green"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT4 = "cyan"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT5 = "blue"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT6 = "purple"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT7 = "pink"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT8 = "white"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT9 = "off"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT0 = "forward"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT1 = "back"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT2 = "left"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT3 = "right"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT0 = "Rest"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT1 = "Jump"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT2 = "Bend"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT3 = "ShakeLeg"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT4 = "UpDown"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT5 = "Swing"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT6 = "TipToeSwing"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT7 = "Jitter"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT8 = "AscendingTurn"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT9 = "Moonwalker"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT10 = "Crusaito"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT11 = "Flapping"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT12 = "RIGHT/FOREWARD"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT13 = "LEFT/BACKWARD"
+Blockly.Msg.ARDUINO_SHIELD_BOT2 = "%1 %2 Shield Bot Motors position %3"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT1 = "Middle"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT2 = "Left"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT3 = "Edge Left"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT4 = "Right"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT5 = "Edge Right"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT6 = "Lost"
+Blockly.Msg.ARDUINO_SHIELD_BOT1 = "%1 %2 Shield Bot Motors go %3 at %4 speed"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT1 = "Forward"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT2 = "Backward"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT3 = "Left"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT4 = "Right"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT5 = "Stop"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT6 = "Slow"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT7 = "Medium"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT8 = "Fast"
+Blockly.Msg.CATEGORY_ARDUINO_INIT = "Start"
+Blockly.Msg.CATEGORY_ARDUINO_INPUT = "Input"
+Blockly.Msg.CATEGORY_ARDUINO_OUTPUT = "Output"
+Blockly.Msg.CATEGORY_ARDUINO_SERIAL = "Serial Port"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_IGURE = "Grove Digital"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_ANALOG = "Grove Analog"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_I2C = "Grove I2C"
+Blockly.Msg.CATEGORY_ARDUINO_ROBOT_KIT = "M.A.R.K"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW = "%1 %2 Web Server Location %3 %4 Display text: %5 Value: %6"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT1 = "Water"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT2 = "Ultrasonic Ranger"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT3 = "PIR Motion"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT4 = "Temperature&Humidity"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT5 = "LED"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT6 = "Vibration"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT7 = "Voltage"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT8 = "Air"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT9 = "Flame"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT10 = "Vision Sensor"
+Blockly.Msg.ARDUINO_WEBSERVER_INIT = "%1 %2 Web Server Initialize %3 SSID %4 PWD %5"
+Blockly.Msg.ARDUINO_WEBSERVER_INIT_OPT1 = "Wisdom city"
+Blockly.Msg.ARDUINO_COLOR_SENSOR = "%1 %2 Color Sensor detected %3 ?"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT1 = "Red"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT2 = "Green"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT3 = "Blue"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT4 = "Black"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT5 = "White"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT6 = "Other"
+Blockly.Msg.GROVEZERO_MATH_ITOA_VALUE_MESSAGE0 = "to String %1"
+Blockly.Msg.TOOLBOX_EXTENSION_CATEGORY_NAME = "Add Extension"
+Blockly.Msg.ARDUINO_SEEED_VOLTAGE = "%1 %2 Voltage PIN %3"
+Blockly.Msg.ARDUINO_SEEED_QUALITY = "%1 %2 Air quality PIN %3"
+Blockly.Msg.ARDUINO_SEEED_WATER_ANALOG = "%1 %2 Water level PIN %3"
+Blockly.Msg.ARDUINO_SEEED_HUMIDIFIER = "%1 %2 Humidifier PIN %3 Stat %4"
+Blockly.Msg.ARDUINO_SEEED_VIBRATION = "%1 %2 Vibration PIN %3"
+Blockly.Msg.ARDUINO_SEEED_LED_ANALOG = "%1 %2 LED PIN %3 Stat %4"
+Blockly.Msg.ARDUINO_VISION_SENSOR1 = "%1 %2 Vision Sensor Ball %3 detected?"
+Blockly.Msg.ARDUINO_VISION_SENSOR1_OPT1 = "Orange ping-pong"
+Blockly.Msg.ARDUINO_VISION_SENSOR1_OPT2 = "Orange Green tennis"
+Blockly.Msg.ARDUINO_VISION_SENSOR2 = "%1 %2 Vision Sensor Traffic sign card %3 detected?"
+Blockly.Msg.ARDUINO_VISION_SENSOR3 = "%1 %2 Vision Sensor Number card %3 detected?"
+Blockly.Msg.ARDUINO_VISION_SENSOR4 = "%1 %2 Vision Sensor graphics card %3 detected?"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT1 = "correct"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT2 = "cross"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT3 = "circular"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT4 = "square"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT5 = "triangle"
+Blockly.Msg.ARDUINO_VISION_SENSOR5 = "%1 %2 Vision Sensor human body detected?"
+Blockly.Msg.ARDUINO_VISION_SENSOR6 = "%1 %2 Vision Sensor color %3 detected?"
+Blockly.Msg.ARDUINO_VISION_SENSOR7 = "%1 %2 Vision Sensor get color value"
+Blockly.Msg.BUZZER_TONE_LOW = "Low"
+Blockly.Msg.BUZZER_TONE_MIDDLE = "Middle"
+Blockly.Msg.BUZZER_TONE_HIGH = "High"
+Blockly.Msg.BUZZER_SELECTED_PREFIX = "selected:"
+Blockly.Msg.ARDUINO_LED_STRIP1 = "%1 %2 RGB LED Strip PIN %3 show R %4 G %5 B %6 Number %7"
+Blockly.Msg.ARDUINO_LED_STRIP2 = "%1 %2 RGB LED Strip PIN %3 show R %4 G %5 B %6"
+Blockly.Msg.ARDUINO_VISION_SENSOR8 = "%1 %2  Vision Sensor ball get value %3"
+Blockly.Msg.ARDUINO_OLCD1 = "%1 %2 LCD screen show image %3"
+Blockly.Msg.ARDUINO_OLCD2 = "%1 %2 LCD screen show string %3 Line %4 Column %5"
+Blockly.Msg.ARDUINO_OLCD3 = "%1 %2 LCD screen clear display"
+Blockly.Msg.MAIXDUINO_ENENT_WHENSTARTUP = "When start"
+Blockly.Msg.MAIXDUINO_DISPLAY_STRING = "display %1 at row %2"
+Blockly.Msg.MAIXDUINO_DISPLAY_SET_CIRCLE = "draw circle: at X %1 Y %2 R %3"
+Blockly.Msg.MAIXDUINO_DISPLAY_SET_RECTANGLE = "draw rectangle: X1%1 Y1%2 X2%3 Y2%4"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_CIRCLE = "%1 %2 Draw circle %3"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE = "%1 %2 Draw rectangle %3"
+Blockly.Msg.MAIXDUINO_CAMERA_SET_THRESHOLD = "set machine vision sensitivity to %1"
+Blockly.Msg.MAIXDUINO_CAMERA_TAKE_PICTURE = "Take a photo: filename %1"
+Blockly.Msg.MAIXDUINO_CAMERA_TAKE_VIDEO = "Record video: last %1 seconds, filename %2"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL = "circle detected"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_COORD = "detected circle %1"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_VALUE = "detected circle info"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE = "rectangle detected"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_COORD = "detected rectangle %1"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_VALUE = "detected rectangle info"
+Blockly.Msg.MAIXDUINO_CAMERA_GET_BALL_AVERAGE_COLOR = "%1 %2 Circle region: X %3 Y %4 R %5 average RGB value"
+Blockly.Msg.MAIXDUINO_CAMERA_GET_RECTANGLE_AVERAGE_COLOR = "%1 %2 Rectangular region: Xmin %3 Xmax %4 Ymin %5 Ymax %6 average RGB value"
+Blockly.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_COLOR = "%1 %2 Region of interest %3 detected color is %4"
+Blockly.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_AVERAGE_COLOR = "%1 %2 Interest area %3 average color RGB value"
+Blockly.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_DETECTION = "recognized domestic animal result probability > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_SEL_DETECTION = "recognized domestic animal is %1 probability > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_DETECTION = "recognized zoo animal result probability > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_SEL_DETECTION = "recognized zoo animal is %1 probability > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_DETECTION = "recognized  common object result probability > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_SEL_DETECTION = "recognized common object is %1 probability > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_NUM_DETECTION = "detected number result probability > %1 %"
+Blockly.Msg.MAIXDUINO_NUM_SEL_DETECTION = "detected number is %1 probability > %2 %"
+Blockly.Msg.MAIXDUINO_NUM_CERTRE_DETECTION = "detected number %1 %2 probability > %3 %"
+
+
+Blockly.Msg.MAIXDUINO_SENSING_TRAFFIC_SIGNS_DETECTION = "detected traffic sign probability > %1 %"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_SEL_DETECTION = "detected traffic sign is %1 probability > %2 %"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_CERTRE_DETECTION = "detected traffic sign %1 %2 probability > %3 %"
+Blockly.Msg.MAIXDUINO_INPUT_SYSTEMTIME = "System running time %1"
+Blockly.Msg.MAIXDUINO_CAMERA_R_MAX = "Rmax"
+Blockly.Msg.MAIXDUINO_CAMERA_R_MIN = "Rmin"
+Blockly.Msg.MAIXDUINO_CAMERA_SIZE_MAX = "max"
+Blockly.Msg.MAIXDUINO_CAMERA_SIZE_MIN = "min"
+Blockly.Msg.MAIXDUINO_CAMERA_COORD_X = "位置:X坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_Y = "Y coordinate"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_XMIN = "Position: Xmin coord"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_YMIN = "Position: Ymin coord"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_XMAX = "Position: Xmax coord"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_YMAX = "Position: Ymax coord"
+Blockly.Msg.MAIXDUINO_CAMERA_R_VALUE = "R"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT1 = "red"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT2 = "green"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT3 = "blue"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT4 = "yellow"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT5 = "cyan"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT6 = "purple"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT7 = "black"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT8 = "white"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT1 = "cat"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT2 = "dog"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT3 = "bird"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT4 = "hedgehog"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT5 = "mouse"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT6 = "crocodile"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT7 = "bear"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT8 = "elephant"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT9 = "giraffe"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT10 = "tiger"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT11 = "butterfly"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT12 = "cockroach"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT13 = "fish"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT14 = "lizard"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT15 = "spider"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT0 = "turn left"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT1 = "turn right"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT2 = "go straight"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT3 = "u-turn"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT4 = "stop"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT5 = "max speed limit 5"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT6 = "max speed limit 80"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT7 = "no entry"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT8 = "yield"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT9 = "pedestrian crossing"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT1 = "chair"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT2 = "book"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT3 = "cup"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT4 = "pen"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT5 = "pizza"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT6 = "smart phone"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT7 = "bomb"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT8 = "computer"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT9 = "human"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT10 = "knapsack"
+Blockly.Msg.MAIXDUINO_SENSING_COORD_X = "X coordinate"
+Blockly.Msg.MAIXDUINO_SENSING_COORD_Y = "Y coordinate"
+Blockly.Msg.MAIXDUINO_LINEPAROL_ANGLE = "%1 %2 Line following set line recognition color %3 region weight red%4%  blue%5%  green%6%"
+Blockly.Msg.MAIXDUINO_CAMERA_BALL_AERA = "spherical"
+Blockly.Msg.MAIXDUINO_CAMERA_RECTANGLE_AERA = "rectangle"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_RUN = "M.A.R.K go %2 at %1 speed"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN = "M.A.R.K. set %1 wheel rotation speed to %2 %"
+Blockly.Msg.MAIXDUINO_ROBOT_SERVO_RUN = "M.A.R.K. Servo %1 move to %2 degree"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETANGLE = "M.A.R.K. Stepper motor set step angle to %1 °"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETROTATESPEED = "M.A.R.K. Stepper motor set speed to %1 RPM"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_RUN = "M.A.R.K. Stepper motor move %1 steps"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_TURN = "M.A.R.K visual line following: turning angle %1 speed %2 sensitivity %3"
+Blockly.Msg.CocoRobo_ENENT_WHENSTARTUP = "%1 %2 when the board startup"
+Blockly.Msg.CocoRobo_ENENT_WHENACTION = "%1 %2 when the button %3 is %4 do"
+Blockly.Msg.CocoRobo_ENENT_WHENPINVOLTAGE = "%1 %2 when pin %3 level is from %4 do"
+Blockly.Msg.CocoRobo_ENENT_WHENSHARK = "%1 %2 the board is shaked do"
+Blockly.Msg.CocoRobo_ENENT_TILT_DIRECTION = "%1 %2 when the board id %3 do"
+Blockly.Msg.CocoRobo_ENENT_WHENTOUCHKEY = "%1 %2 when the touchpad %3 is %4 do"
+Blockly.Msg.CocoRobo_ENENT_FOR1 = "%1 %2 set timer %3 %4 mode,cycle %5 millisecond(s)"
+Blockly.Msg.CocoRobo_ENENT_FOR2 = "do %1"
+Blockly.Msg.CocoRobo_ENENT_CLEAR_TIMER = "%1 %2 clear timer/event %3"
+Blockly.Msg.CocoRobo_ENENT_TIMER_COUNT = "%1 %2 timer %3 count value"
+Blockly.Msg.CocoRobo_EVENT_WHEN_ACTION = "%1 %2 event %3 : when %4 do"
+Blockly.Msg.CocoRobo_EVENT_CHILD_THREAD = "%1 %2 thread %3 do"
+Blockly.Msg.CocoRobo_SYSRESOURES_BUTTON_PRESSED = "%1 %2 button %3 is pressed"
+Blockly.Msg.CocoRobo_SYSRESOURES_BUTTON_TOUCH = "%1 %2 button %3 is touched"
+Blockly.Msg.CocoRobo_SYSRESOURES_TOUCH_VALUE = "%1 %2 button %3 touch value"
+Blockly.Msg.CocoRobo_SYSRESOURES_VOLUME = "%1 %2 sound value"
+Blockly.Msg.CocoRobo_SYSRESOURES_LIGHT = "%1 %2 light value"
+Blockly.Msg.CocoRobo_SYSRESOURES_ACCELERATION = "%1 %2 %3 axis acceleration"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE = "%1 %2 %3  axis tilt angle"
+Blockly.Msg.CocoRobo_SYSRESOURES_SHARKED = "%1 %2 the board is shaked"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_ANGLE = "%1 %2 the board is tilt %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_COLOR = "%1 %2 set %3 RGB light color to %4"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_RGB = "%1 %2 set %3 RGB light color to R %4 G %5 B %6"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_ALL_COLOR = "%1 %2 set all RGB lights color to %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_ALL_RGB = "%1 %2 set all RGB lights color to R %3 G %4 B %5"
+Blockly.Msg.CocoRobo_SYSRESOURES_CLOSE_RGB = "%1 %2 turn off all RGB lights"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_BME280 = "%1 %2 BME280 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_DRAW_CLOCK = "%1 %2 draw clock x %3 y %4 radius %5"
+Blockly.Msg.CocoRobo_SYSRESOURES_CLOCK_OPERATE = "%1 %2 %3 clock"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_RUN_TIME = "%1 %2 run time %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_LOCAL_TIME = "%1 %2 local time %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_RESET = "%1 %2 reset"
+Blockly.Msg.CocoRobo_SYSRESOURES_MAC_ADDRESS = "%1 %2 MAC Address"
+Blockly.Msg.CocoRobo_LOOKS_OLCD = "%1 %2 LCD display %3"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_LINE_TEXT = "%1 %2 LCD line %3 shows %4 text mode %5"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_CLEAR_LINE = "%1 %2 LCD clear line %3"
+Blockly.Msg.CocoRobo_LOOKS_DISPLAY_TEXT = "%1 %2 at x %3 y %4 display text %5 text mode %6"
+Blockly.Msg.CocoRobo_LOOKS_TRACE_POINT = "%1 %2 draw a point x %3 y %4 为 %5"
+Blockly.Msg.CocoRobo_LOOKS_PROGRESS = "%1 %2 progress x %3 y %4 width %5 height %6 progress %7"
+Blockly.Msg.CocoRobo_LOOKS_COLUMN_STRIP = "%1 %2 column bar %3 x %4 y %5 width %6 height %7 progress %8"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_LINE = "%1 %2 %3 line x1 %4 y1 %5 to x2 %6 y2 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_FRAME = "%1 %2 %3 border x %4 y %5 width %6 height %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_ARC_BORDER = "%1 %2 %3 arc border x %4 y %5 width %6 height %7 radius %8"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_RECT = "%1 %2 %3 rectangle x %4 y %5 width %6 height %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_CIRCLE = "%1 %2 %3 %4 circle x %5 y %6 radius %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_TRIANGLE = "%1 %2 %3 %4 triangle x %5 y %6 x2 %7 y2 %8 x3 %9 y3 %10"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_DISPLAY_PICTURE = "%1 %2 at x %3 y %4 display image %5"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_DISPLAY = "%1 %2 at x %3 y %4 display text %5 using %6 font with %7"
+Blockly.Msg.CocoRobo_MUSIC_STOP_PLAY = "%1 %2 stop playing music at Pin %3"
+Blockly.Msg.CocoRobo_MUSIC_RESTORE_MUSIC_SET = "%1 %2 restore music settings"
+Blockly.Msg.CocoRobo_MUSIC_NOTE_BEAT = "%1 %2 note %3 beat %4"
+Blockly.Msg.CocoRobo_MUSIC_NOTE_BEAT_PIN = "%1 %2 play musical note %3 beat %4 at Pin %5"
+Blockly.Msg.CocoRobo_MUSIC_TONE = "%1 %2 tone %3"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN = "%1 %2 play tone %3 delay %4 millisecond(s) at Pin %5"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN_PARA = "%1 %2 play tone from %3 to %4 step %5 duration %6 Pin %7"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_MUSIC_PIN = "%1 %2 play music %3 wait %4 loop %5 Pin %6"
+Blockly.Msg.CocoRobo_MUSIC_SET_PLAY_SPEED = "%1 %2 set the playback speed to %3 times"
+Blockly.Msg.CocoRobo_MUSIC_SET_BEAT = "%1 %2 set each beat equal to %3 notes,the number of beats per minute is %4"
+Blockly.Msg.CocoRobo_MUSIC_SET_CURRENT_BEAT = "%1 %2 current beats"
+Blockly.Msg.CocoRobo_BUZZER_INIT = "%1 %2 init Audio"
+Blockly.Msg.CocoRobo_BUZZER_RELEASE_CACHE = "%1 %2 deinit Audio"
+Blockly.Msg.CocoRobo_BUZZER_SET_VOLUMN = "%1 %2 set Audio volume ad %3"
+Blockly.Msg.CocoRobo_BUZZER_SET_ACTION = "%1 %2 Audio %3"
+Blockly.Msg.CocoRobo_BUZZER_PLAY = "%1 %2 Audio play %3"
+Blockly.Msg.CocoRobo_BUZZER_VOICE_CONF = "%1 %2 TTS config APPID %3 APIKey %4"
+Blockly.Msg.CocoRobo_BUZZER_VOICE_PLAY = "%1 %2 TTS play text %3"
+Blockly.Msg.CocoRobo_PIN_GET_VALUE = "%1 %2 pin %3 digital value"
+Blockly.Msg.CocoRobo_PIN_SET_VALUE = "%1 %2 set pin %3 digital value to %4"
+Blockly.Msg.CocoRobo_PIN_GET_ANALOG_VALUE = "%1 %2 pin %3 analog value"
+Blockly.Msg.CocoRobo_PIN_SET_ANALOG_VALUE = "%1 %2 set pin %3 analog value(PWM) to %4"
+Blockly.Msg.CocoRobo_PIN_SET_SERVO_ANGLE = "%1 %2 set the servo %3 angle as %4"
+Blockly.Msg.CocoRobo_PIN_SET_SERVO_PWM_MAXANGLE = "%1 %2 set the servo %3 angle as %4 pulse width form %5 us to %6 us actuation range as %7"
+Blockly.Msg.CocoRobo_PIN_SET_PIN_MODE = "%1 %2 set pin %3 as %4 mode %5"
+Blockly.Msg.CocoRobo_PIN_EXTERNAL_LEVEL_DURATION = "%1 %2 %3 external %4 pulse level duration(us)"
+Blockly.Msg.CocoRobo_PIN_DHT11_VALUE = "%1 %2 DHT11 %3 %4"
+Blockly.Msg.CocoRobo_PIN_DHT22_VALUE = "%1 %2 DHT22 %3 %4"
+Blockly.Msg.CocoRobo_PIN_INIT_I2C_BAUD_RATE = "%1 %2 initialize I2C with baudrate %3"
+Blockly.Msg.CocoRobo_PIN_INIT_I2C_SCL_SDA_BAUD = "%1 %2 initialize I2C SCL %3 SDA %4 baudrate %5"
+Blockly.Msg.CocoRobo_PIN_I2C_ADDRESS_WRITE = "%1 %2 I2C address %3 is written to %4"
+Blockly.Msg.CocoRobo_PIN_I2C_ADDRESS_GET_BYTES_NUM = "%1 %2 I2C address %3 read bytes number %4"
+Blockly.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_INIT = "%1 %2 hcsr04 untrasonic initialize name %3 trigger %4 echo %5"
+Blockly.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_DISTANCE_UNIT = "%1 %2 %3 hcsr04 untrasonic distance,uint %4"
+Blockly.Msg.CocoRobo_RADIO_ACTION = "%1 %2 turn %3 radio"
+Blockly.Msg.CocoRobo_SET_RADIO_CHANNEL = "%1 %2 set radio channel %3"
+Blockly.Msg.CocoRobo_SET_RADIO_SEND_MES = "%1 %2 radio sends %3"
+Blockly.Msg.CocoRobo_RADIO_GET_MES = "%1 %2 radio received"
+Blockly.Msg.CocoRobo_RADIO_GET_MES_FOR1 = "when receiving broadcast message %1 from Radio do"
+Blockly.Msg.CocoRobo_RADIO_GET_SPECIAL_FOR1 = "when receiving specific broadcast message %1 from Radio do"
+Blockly.Msg.CocoRobo_WIFI_CONNECT = "%1 %2 connect to Wi-Fi with SSID %3 & Password %4"
+Blockly.Msg.CocoRobo_WIFI_DISCONNECT = "%1 %2 disconnect Wi-Fi connection"
+Blockly.Msg.CocoRobo_WIFI_CONNECTED = "%1 %2 Has connected to Wi-Fi"
+Blockly.Msg.CocoRobo_WIFI_ALL_CONF = "%1 %2 Wi-Fi configuration information"
+Blockly.Msg.CocoRobo_WIFI_CONF_MES = "%1 %2 Wi-Fi configuration information %3"
+Blockly.Msg.CocoRobo_WIFI_OPEN_AP_MODE = "%1 %2 open AP mode with SSID %3 & Channel %4"
+Blockly.Msg.CocoRobo_WIFI_CLOSE_AP_MODE = "%1 %2 close AP mode"
+Blockly.Msg.CocoRobo_WIFI_SYNC_NETWORK_TIME = "%1 %2 synchronize network time,timezone %3 & timing server %4"
+Blockly.Msg.CocoRobo_NEOPIXEL_INIT = "%1 %2 initialize light strip with Name %3 Pin %4 Quantity %5"
+Blockly.Msg.CocoRobo_NEOPIXEL_CHANNEL_COLOR = "%1 %2 light strip %3 # %4 color as %5"
+Blockly.Msg.CocoRobo_NEOPIXEL_CHANNEL_RGB = "%1 %2 light strip %3 # %4 R %5 G %6 B %7"
+Blockly.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_COLOR = "%1 %2 light strip %3 full bright with color %4"
+Blockly.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_RGB = "%1 %2 light strip %3 full bright R %4 G %5 B %6"
+Blockly.Msg.CocoRobo_NEOPIXEL_CLOSE = "%1 %2 light strip %3 off"
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_LIGHT_EFFECT = "%1 %2 define rainbow effect of light strip with Name %3 Quantity %4 bright %5 offset %6"
+Blockly.Msg.CocoRobo_NEOPIXEL_SET_WRITE = "%1 %2 light strip %3 setting take effect"
+Blockly.Msg.CocoRobo_CONTROL_FOR1 = "for each item %1 in list do"
+Blockly.Msg.CocoRobo_OPERATORS_GET_TYPE = "type %1"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_TYPE = "type %1 is %2"
+Blockly.Msg.CocoRobo_OPERATORS_MOD_INT = "%1 ÷ %2 the integer part of the quotient"
+Blockly.Msg.CocoRobo_OPERATORS_KEEP_TWO_DECIMALS = "%1 keep %2 decimal places"
+Blockly.Msg.CocoRobo_OPERATORS_LIMIT_RANGE = "constrain %1 low %2 high %3"
+Blockly.Msg.CocoRobo_OPERATORS_MAPPING_RANGE = "map %1 from %2 , %3 to %4 , %5"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_POSITION = "%1 %2 Color Line Follower line position %3"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_SEEING = "%1 %2 Color Line Follower is seeing %3"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_COLOR = "%1 %2 Color Line Follower color value"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_3ADA15 = "%1 %2 3 Axis Digital Accelerometer-1.5 %3"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR_OPT1 = "show"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR_OPT2 = "close"
+Blockly.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER_GETVALUE = "%1 %2 Speech Recognizer PIN %3 Return Value"
+Blockly.Msg.ARDUINO_SERIAL_STR_TONUMBER = "Serial String toFloat %1"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT1 = "red"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT2 = "yellow"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT3 = "green"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT4 = "cyan"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT5 = "blue"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT6 = "purple"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT7 = "black"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT8 = "white"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT9 = "other"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT1 = "forward"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT2 = "left"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT3 = "right"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT4 = "turn round"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT5 = "P"
+Blockly.Msg.ARDUINO_MARK_ROBOT_RUN = "%1 %2 M.A.R.K go %3 at %4 speed"
+Blockly.Msg.ARDUINO_MARK_ROBOT_MOTOR_RUN = "%1 %2 M.A.R.K run motor %3 at %4"
+Blockly.Msg.ARDUINO_MARK_ROBOT_SERVO_RUN = "%1 %2 M.A.R.K Servo %3 move to %4 degree"
+Blockly.Msg.ARDUINO_NETWORK_SETWIFI = "%1 %2 start connecting to the wireless network %3 password %4"
+Blockly.Msg.ARDUINO_NETWORK_STATE = "%1 %2 Is the network connected?"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_REC = "%1 %2 Identify %3 speech %4 seconds"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_OPT01 = "Mandarin"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_OPT02 = "English"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_RECTEXT = "%1 %2 text recognized by speech recognition"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_TTS = "%1 %2 speak %3"
+Blockly.Msg.ARDUINO_AUDIO_RECORD = "%1 %2 audio record %3 %4"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT01 = "file"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT02 = "Micro SD"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT03 = "USB"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT04 = "buffer"
+Blockly.Msg.ARDUINO_AUDIO_STOP_RECORD = "%1 %2 recording stop"
+Blockly.Msg.ARDUINO_AUDIO_PLAY = "%1 %2 audio play %3 %4"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_SOMEONE = "%1 %2 play track %3"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_PREORNEXT = "%1 %2 play %3 track"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_OPT1 = "Previous track"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_OPT2 = "next track"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_ATMODE = "%1 %2 %3 Play Track"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT1 = "Loop"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT2 = "Pulse"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT3 = "Stop"
+Blockly.Msg.ARDUINO_AUDIO_SETVOL = "%1 %2 Set speaker volume %3"
+Blockly.Msg.ELFBOT_MAINBOARD_START = "%1 %2 when Elfbot starts up"
+Blockly.Msg.ELFBOT_WHEN_BUTTON_S_PRESSED = "%1 %2 when button S is pressed"
+Blockly.Msg.ELFBOT_WHEN_LIGHTINTENSITY_LESSTHAN = "%1 %2 when light intensity %3 %4"
+Blockly.Msg.ELFBOT_WHENGREATERTHAN_TIMER = "%1 %2 when timer > %3"
+Blockly.Msg.ELFBOT_WHENGREATERTHAN_LOUDNESS = "%1 %2 when loudness %3 %4"
+Blockly.Msg.ELFBOT_BUTTONS_ISPRESSED = "%1 %2 Elfbot button S is pressed?"
+Blockly.Msg.ELFBOT_ULTRASONIC_DISTANCE_FROMOBJ = "%1 %2 Elfbot distance of obstacles ahead"
+Blockly.Msg.ELFBOT_ULTRASONIC_ISDETECTED_OBJECT = "%1 %2 Elfbot obstacles ahead?"
+Blockly.Msg.ELFBOT_ULTRASONIC_LED_SHOW_COLOR = "%1 %2 Elfbot set the ultrasonic LED with color %3"
+Blockly.Msg.ELFBOT_ULTRASONIC_LED_CRUSHOUT = "%1 %2 Elfbot ultrasonic LED lights off"
+Blockly.Msg.ELFBOT_ULTRASONIC_WHENDETECTEDOBJECT = "%1 %2 when detecting an object ahead"
+Blockly.Msg.ELFBOT_LEDMATRIX_PLOT = "%1 %2 Elfbot plot x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_UNPLOT = "%1 %2 Elfbot unplot x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_PLOT_OR_UNPLOT = "%1 %2 Elfbot switch between plot and unplot x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_ISPLOT = "%1 %2 Elfbot x: %3 y: %4 is ON?"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT = "%1 %2 Elfbot show string %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT_UNTILDONE = "%1 %2 Elfbot show string %3 until done"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON = "%1 %2 Elfbot show emoji %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON_FORDURATION = "%1 %2 Elfbot show emoji %3 for %4 secs"
+Blockly.Msg.ELFBOT_LEDMATRIX_SCREEN_CRUSHOUT = "%1 %2 Elfbot clear screen"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION1 = "smile"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION2 = "wink"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION3 = "happy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION4 = "cute"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION5 = "lovely"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION6 = "expressionless"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION7 = "playful"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION8 = "like1"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION9 = "like2"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION10 = "sniker1"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION11 = "sniker2"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION12 = "bored"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION13 = "serious"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION14 = "sweat"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION15 = "frown"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION16 = "rage"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION17 = "pitiful"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION18 = "wail"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION19 = "cry"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION20 = "daze"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION21 = "caim"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION22 = "angry"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION23 = "thinking"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION24 = "dizziness"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION25 = "tired"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION26 = "sleepy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION27 = "dream"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION28 = "shocked"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION29 = "strabismus"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION30 = "cool"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION31 = "query"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION32 = "pain"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION33 = "uncomfortable"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION34 = "right"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION35 = "left"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION36 = "forward"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION37 = "backward"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION38 = "hello"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION39 = "bye"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION40 = "oK"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION41 = "good"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION42 = "yes"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION43 = "no"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION44 = "low_energy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION45 = "meow"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION46 = "panda"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE = "%1 %2 Elfbot show image %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE_DURATION = "%1 %2 Elfbot show image %3 for %4 secs"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_EFFECTS_COLOR = "%1 %2 Elfbot RGB LED always %3 show %4"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION0 = "show"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION1 = "blink"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION2 = "breathing"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR = "%1 %2 Elfbot RGB LED %3 show %4"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION0 = "all"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION1 = "left"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION2 = "right"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR_DURATION = "%1 %2 Elfbot RGB LED %3 show %4 ,for %5 secs"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_COLOR = "%1 %2 Elfbot set the RGB LED with color %3"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION0 = "red"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION1 = "green"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION2 = "blue"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION3 = "yellow"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION4 = "cyan"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION5 = "purple"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION6 = "black"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION7 = "white"
+Blockly.Msg.ELFBOT_RGBLED_CRUSHOUT = "%1 %2 Elfbot RGB LED lights off"
+Blockly.Msg.ELFBOT_INFRARED_WHENOVERHEAD = "%1 %2 when detected ahead overhang"
+Blockly.Msg.ELFBOT_INFRARED_LIGHTINTENSITY_VALUE = "%1 %2 Elfbot reflected infrared light intensity"
+Blockly.Msg.ELFBOT_INFRARED_DETECTED_ISHEAD = "%1 %2 Elfbot cliff ahead?"
+Blockly.Msg.ELFBOT_LINEPATROL_WHENDETECTEDCOLORD = "%1 %2 when the detected colour is %3"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION0 = "red"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION1 = "green"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION2 = "blue"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION3 = "yellow"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION4 = "cyan"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION5 = "purple"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION6 = "black"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION7 = "white"
+Blockly.Msg.ELFBOT_LINEPATROL_GREYSCALE = "%1 %2 Elfbot grey-scale value"
+Blockly.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR = "%1 %2 Elfbot the color is %3 ?"
+Blockly.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR_VALUE = "%1 %2 Elfbot %3 color value detected"
+Blockly.Msg.ELFBOT_LINEPATROL_LIGHTINTENSITY_VALUE = "%1 %2 Elfbot reflected light intensity"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKLEFT = "%1 %2 Elfbot look left %3 degrees"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKRIGHT = "%1 %2 Elfbot look right %3 degrees"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKUP = "%1 %2 Elfbot look up %3 degrees"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKDOWN = "%1 %2 Elfbot look down %3 degrees"
+Blockly.Msg.ELFBOT_SERVO_EAR_TURNFORWARD = "%1 %2 Elfbot ear turn forward %3 degrees"
+Blockly.Msg.ELFBOT_SERVO_EAR_TURNBACKWARD = "%1 %2 Elfbot ear turn backward %3 degrees"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_DIRECTION_POWER = "%1 %2 Elfbot %3 at power %4 %"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION0 = "move forward"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION1 = "move backward"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION2 = "turn left"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION3 = "turn right"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_POWER_DURATION = "%1 %2 Elfbot move forward at power %3 %, for %4 secs"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_POWER_DURATION = "%1 %2 Elfbot move backward at power %3 %, for %4 secs"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNLEFT_POWER_DURATION = "%1 %2 Elfbot turn left at power %3 %, for %4 secs"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNRIGHT_POWER_DURATION = "%1 %2 Elfbot turn right at power %3 %, for %4 secs"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_POWER = "%1 %2 Elfbot left wheel at power %3 % and right wheel at power %4 %"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_DURATION = "%1 %2 Elfbot keep straight forward %3 secs"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_DURATION = "%1 %2 Elfbot keep straight backward for %3 secs"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_STOP = "%1 %2 Elfbot stop moving"
+Blockly.Msg.ELFBOT_LIGHT_INTENSITY_VALUE = "%1 %2 Elfbot ambient light intensity"
+Blockly.Msg.ELFBOT_SOUND_LOUDNESS_VALUE = "%1 %2 Elfbot loudness"
+Blockly.Msg.ELFBOT_SOUND_PLAY = "%1 %2 Elfbot play sound %3"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION0 = "hello"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION1 = "miao"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION2 = "bye"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION3 = "hum"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION4 = "laugh"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION5 = "wrong"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION6 = "right"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION7 = "sad"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION8 = "vehicles"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION9 = "yeah"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION10 = "powerdown"
+Blockly.Msg.ELFBOT_SOUND_PLAY_UNTILDONE = "%1 %2 Elfbot play sound %3 until done"
+Blockly.Msg.ELFBOT_SOUND_STOP_PLAY = "%1 %2 Elfbot stop all sounds"
+Blockly.Msg.ELFBOT_SOUND_REST_BEATS = "%1 %2 Elfbot rest for %3 beats"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION0 = "1"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION1 = "1/2"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION2 = "1/4"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION3 = "1/8"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION4 = "1/16"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION5 = "2"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION6 = "4"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION7 = "8"
+Blockly.Msg.ELFBOT_SOUND_PLAY_FREQUENCYHZ = "%1 %2 Elfbot play sound at frequency %3 HZ for a %4 secs"
+Blockly.Msg.ELFBOT_SOUND_CHANGE_VOLUME = "%1 %2 Elfbot change volume by %3"
+Blockly.Msg.ELFBOT_SOUND_SET_VOLUME = "%1 %2 Elfbot set volume to %3"
+Blockly.Msg.ELFBOT_SOUND_VOLUME = "%1 %2 Elfbot volume"
+Blockly.Msg.ELFBOT_SOUND_NOTE_BEATS = "%1 %2 Elfbot play note %3 for %4 beats"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT = "%1 %2 Color Line Follower is seeing %3"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION = "%1 %2 Color Line Follower %3 position %4"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT0 = "red"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT1 = "green"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT2 = "blue"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_BLACK = "black line"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_WRITE = "white line"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT0 = "middle"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT1 = "right"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT2 = "right-most"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT3 = "left"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT4 = "left-most"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT5 = "lost"
+Blockly.Msg.MICROBIT_WHEN_START = "%1 %2 when Elfbot starts up"
+Blockly.Msg.MICROBIT_WHEN_BUTTONPRESSED = "%1 %2 When %3 is pressed"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION0 = "A"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION1 = "B"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION2 = "A+B"
+Blockly.Msg.MICROBIT_WHEN_PINSTOUCHED = "%1 %2 when pin %3 connected"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION0 = "0"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION1 = "1"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION2 = "2"
+Blockly.Msg.MICROBIT_WHEN_GESTURESTRIKE = "%1 %2 when the gesture %3"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION0 = "shaken"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION1 = "tilted  upward"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION2 = "tilted downwrad"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION3 = "tilted leftward"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION4 = "tilted rightward"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION5 = "face up"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION6 = "face down"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION7 = "free fall"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION8 = "3g"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION9 = "6g"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION10 = "5g"
+Blockly.Msg.MICROBIT_COMMUCATION_OPEN = "%1 %2 open wireless communication"
+Blockly.Msg.MICROBIT_COMMUCATION_CLOSED = "%1 %2 close wireless communication"
+Blockly.Msg.MICROBIT_COMMUCATION_RESET = "%1 %2 reest wireless communication"
+Blockly.Msg.MICROBIT_COMMUCATION_RECEIVE = "%1 %2 receive wireless message"
+Blockly.Msg.MICROBIT_COMMUCATION_SEND = "%1 %2 send wireless message %3"
+Blockly.Msg.MICROBIT_COMMUCATION_SETCHANNEL = "%1 %2 set wireless communication channel %3"
+Blockly.Msg.MICROBIT_PIN_CONNECTED = "%1 %2 pin %3 is connected?"
+Blockly.Msg.MICROBIT_PIN_ANALOGQUANTITY = "%1 %2 pin %3 analog quantity"
+Blockly.Msg.MICROBIT_PIN_SET_ANALOGQUANTITY = "%1 %2 set %3 analog quantity %4"
+Blockly.Msg.MICROBIT_PIN_NUMBER_INPUT = "%1 %2 pin %3 with number input?"
+Blockly.Msg.MICROBIT_PIN_ANALOG_MAP_TO = "%1 %2 map analog pin %3 to low %4 high %5"
+Blockly.Msg.MICROBIT_PIN_ANALOG_READ = "%1 %2 analog read pin %3"
+Blockly.Msg.MICROBIT_PIN_ANALOG_WRITE = "%1 %2 analog write pin %3 to %4"
+Blockly.Msg.MICROBIT_PIN_ANALOG_SET_PERIOD = "%1 %2 analog set period pin %3 (PWM) to %4 (us)"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_READ = "%1 %2 digital read pin %3"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS = "%1 %2 digital pin %3 is %4"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS_OPT1 = "high"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS_OPT2 = "low"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_SET_TO = "%1 %2 set digital pin %3 to %4"
+Blockly.Msg.MICROBIT_PIN_I2C_READ = "%1 %2 i2c read number at address %3 of format %4 repeated %5"
+Blockly.Msg.MICROBIT_PIN_I2C_WRITE = "%1 %2 i2c write number at address %3 with value %4 of format %5 repeated %6"
+Blockly.Msg.MICROBIT_PIN_I2C_READ_OPT1 = "no"
+Blockly.Msg.MICROBIT_PIN_I2C_READ_OPT2 = "yes"
+Blockly.Msg.MICROBIT_SENSOR_BUTTON_PRESSED = "%1 %2 %3button is pressed?"
+Blockly.Msg.MICROBIT_SENSOR_GESTURE_STRIKE = "%1 %2 gesture is %3?"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION = "%1 %2 %3 acceleration"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION0 = "x-axis"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION1 = "y-axis"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION2 = "z-axis"
+Blockly.Msg.MICROBIT_SENSOR_COMPASSANGLE = "%1 %2 compass angle"
+Blockly.Msg.MICROBIT_SENSOR_COMPASS_MAGNETICDENSITY = "%1 %2 compasss magnetic density"
+Blockly.Msg.MICROBIT_SENSOR_CALIBRATE_COMPASS = "%1 %2 calibrate compass"
+Blockly.Msg.MICROBIT_SENSOR_TEMPERATURE = "%1 %2 temperature"
+Blockly.Msg.MICROBIT_SENSOR_RUNNINGTIME = "%1 %2 running time"
+Blockly.Msg.MICROBIT_SHOW_IMAGE = "%1 %2 show image %3"
+Blockly.Msg.MICROBIT_SHOW_IMAGEFOR = "%1 %2 show image %3 for %4 secs"
+Blockly.Msg.MICROBIT_SHOW_MIRRORING_IMAGE = "%1 %2 show mirroring image %3"
+Blockly.Msg.MICROBIT_SHOW_SETIMAGE = "%1 %2 set image %3 %4 to move %5"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION0 = "left"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION1 = "right"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION2 = "up"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION3 = "down"
+Blockly.Msg.MICROBIT_SHOW_TEXT = "%1 %2 show %3"
+Blockly.Msg.MICROBIT_SHOW_TEXTUNTIL = "%1 %2 show %3 until scoll done"
+Blockly.Msg.MICROBIT_SHOW_CLOSE = "%1 %2 hide all matrix"
+Blockly.Msg.MICROBIT_SHOW_LIGHT = "%1 %2 light %3 at the x: %4axis, y: %5axis"
+Blockly.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION0 = "up"
+Blockly.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION1 = "off"
+Blockly.Msg.MICROBIT_SHOW_LIGHTON = "%1 %2 show on the x: %3axis, y: %4axis with brightness %5"
+Blockly.Msg.MICROBIT_SHOW_BRIGHTNESS = "%1 %2 get brightness at x: %3, y: %4"
+Blockly.Msg.MICROBIT_MUSIC_PLAY = "%1 %2 pin %3 plays sound %4"
+Blockly.Msg.MICROBIT_MUSIC_PLAY_UNTILDONE = "%1 %2 pin %3 plays sound %4 until done"
+Blockly.Msg.MICROBIT_MUSIC_PLAY_NOTE = "%1 %2 pin %3 plays note %4 for %5"
+Blockly.Msg.MICROBIT_MUSIC_CHANGETEMPO = "%1 %2 change tempo by %3 (bpm)"
+Blockly.Msg.MICROBIT_MUSIC_SETTEMPO = "%1 %2 set tempo to %3 (bpm)"
+Blockly.Msg.MICROBIT_MUSIC_TEMPO = "%1 %2 tempo (bpm)"
+Blockly.Msg.MICROBIT_BITPLAYER_KEY_IS_PRESSED = "%1 %2 BitPlayer: key %3 is pressed"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK = "%1 %2 BitPlayer: joystick %3"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION = "%1 %2 BitPlayer: vibration %3"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT1 = "on"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT2 = "off"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT1 = "UpLeft"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT2 = "Up"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT3 = "UpRight"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT4 = "Left"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT5 = "Middle"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT6 = "Right"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT7 = "LowerLeft"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT8 = "Down"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT9 = "LowerRight"
+Blockly.Msg.MICROBIT_BITWEAR_VIBRATION = "%1 %2 BitWear: vibration %3"
+Blockly.Msg.MICROBIT_BITWEAR_SET_LED_COLOR = "%1 %2 BitWear: set LED color %3"
+Blockly.Msg.MICROBIT_BITMAKER_SET_LED_COLOR = "%1 %2 BitMaker: set LED %3 color %4"
+Blockly.Msg.MICROBIT_BITCAR_MOVE = "%1 %2 BitCar: left motor %3 %,right motor %4 %"
+Blockly.Msg.MICROBIT_BITCAR_STOP = "%1 %2 BitCar: stop"
+Blockly.Msg.MICROBIT_BITCAR_STANDUP_STILL = "%1 %2 BitCar: stand up with speed %3 %, charge %4 (ms)"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR = "%1 %2 BitCar: line under %3 sensor"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT1 = "left"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT2 = "right"
+Blockly.Msg.MICROBIT_BITCAR_LINE_FOLLOW_AT_SPEED = "%1 %2 BitCar: follow line at speed %3 %"
+Blockly.Msg.MICROBIT_GROVE_ONE_MINI_FAN_SET_SPEED = "%1 %2 Mini Fan %3 :set speed to %4 %"
+Blockly.Msg.MICROBIT_GROVE_ONE_SERVO_SET_ANGLE = "%1 %2 Servo %3 :set angle to %4 °"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE = "%1 %2 Ultrasonic Sensor %3 :distance in %4"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT1 = "cm"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT2 = "inch"
+Blockly.Msg.CATEGORY_COMMON = "Common"
+Blockly.Msg.CATEGORY_SYSTEM = "System"
+Blockly.Msg.CATEGORY_SHOW = "Show"
+Blockly.Msg.CATEGORY_MUSIC = "Music"
+Blockly.Msg.CATEGORY_AUDIO = "Audio"
+Blockly.Msg.CATEGORY_PIN = "Pin"
+Blockly.Msg.CATEGORY_RADIO = "Radio"
+Blockly.Msg.CATEGORY_DISPLAY = "Looks"
+Blockly.Msg.CATEGORY_LIGHTING = "Lighting"
+Blockly.Msg.CATEGORY_ACTION = "Motion"
+Blockly.Msg.CATEGORY_SENSOR = "Sensor"
+Blockly.Msg.CATEGORY_WIRELESS = "Wireless"
+Blockly.Msg.CATEGORY_ADDONS = "Add-Ons"
+Blockly.Msg.CATEGORY_GROVE_ONE = "Grove One"
+Blockly.Msg.CATEGORY_DISPLAY1 = "Display"
+Blockly.Msg.CATEGORY_MACHINE_VISION = "Machine Vision"
+Blockly.Msg.CATEGORY_CNN_MODELS = "Model Recognition"
+Blockly.Msg.CATEGORY_MAXIDUINO_SYSTEM = "System"
+Blockly.Msg.CATEGORY_START = "Start"
+Blockly.Msg.CATEGORY_GROVE_INPUT = "Grove Input"
+Blockly.Msg.CATEGORY_GROVE_OUTPUT = "Grove Output"
+Blockly.Msg.CATEGORY_MAIXDUINO_GROVE = "Grove"
+Blockly.Msg.SNAPSHOOT = "Snapshoot"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY = "wait %1 %2"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY_UNIT_MS = "ms"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY_UNIT_US = "us"
+Blockly.Msg.MAIXDUINO_ENENT_RUNTIME = "run time %1"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION = "set screen orientation as %1"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION_NORMAL = "normal"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION_ROTATE = "flipped"
+Blockly.Msg.MAIXDUINO_DISPLAY_STRING_AT_POSITION = "display %1 at X%2 Y%3"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE_WH = "draw rectangle: W%1 H%2 at X%3 Y%4"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_AT_SIZE_COLOR = "%1 circle detected"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_RGB = "detected circle RGB value"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_AT_SIZE_COLOR = "%1 rectangle detected"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_RGB = "detected rectangle RGB value"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_SETCOLOR = "set line idendification color to %1"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_SETWEIGHT = "set line idendification region weight: A %1% B %2% C %3%"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_TURNANGLE = "turn angle"
+Blockly.Msg.MAIXDUINO_SEEED_LINE_FINDER = "%1 %2 pin %3 Line Follower is seeing %4"
+Blockly.Msg.MAIXDUINO_FIGURE_OUTPUT = "digital write pin %1 to %2"
+Blockly.Msg.MAIXDUINO_FIGURE_INPUT = "digital read pin %1"
+Blockly.Msg.MAIXDUINO_ANALOG_INPUT = "AnalogRead pin %1"
+Blockly.Msg.MAIXDUINO_ANALOG_OUTPUT = "analog write pin %1 to %2"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_X = "X coordinate"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_W = "W"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_H = "H"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT1 = "forward"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT2 = "backward"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT3 = "left"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT4 = "right"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT6 = "low"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT7 = "medium"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT8 = "max"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_STOP = "M.A.R.K stop"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT1 = "left"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT2 = "right"
+Blockly.Msg.MAIXDUINO_GROVE_BUTTON_ISPRESSED = "%1 %2 pin %3 Button is pressed?"
+Blockly.Msg.MAIXDUINO_GROVE_ULT_DISTANCE = "%1 %2 pin %3 Ultrasonic Sensor distance(cm)"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY = "%1 %2 pin %3 RGB LED strip set LED %4 to %5"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY1 = "%1 %2 pin %3 RGB LED strip set LED %4 to R %5 G %6 B %7"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_CLOSED = "%1 %2 pin %3 RGB LED strip off"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_SETVOL = "M.A.R.K. Speaker set volume to %1 %"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_PLAYNOTE = "M.A.R.K. Speaker play tone %1 %2 beat"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_PAUSE = "M.A.R.K. Speaker rest %1 beat"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT0 = "1"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT1 = "1/2"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT2 = "1/4"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT3 = "1/8"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT4 = "1/16"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT5 = "2"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT6 = "4"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT7 = "8"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_SHOW = "M.A.R.K %1 headlight show %2"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_SHOW = "M.A.R.K. rear light %1 show %2 %3 %4 "
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_CRUSHOUT = "M.A.R.K. %1 headlight off"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT01 = "left"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT02 = "right"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT01 = "top"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT02 = "mid"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT03 = "tail"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT01 = "all"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT02 = "head"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT03 = "rear"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT1 = "forward"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT2 = "back"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT3 = "left"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT4 = "right"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT1 = "temperature"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT2 = "humidity"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT3 = "air pressure"
+Blockly.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT1 = "refresh"
+Blockly.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT2 = "clear"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT0 = "clear"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT1 = "year"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT2 = "month"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT3 = "day"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT4 = "hour"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT5 = "minute"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT6 = "second"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT7 = "week number"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT8 = "days number"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT9 = "mullisecond"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT10 = "microsecond"
+Blockly.Msg.CocoRobo_PIN_OPT = "default"
+Blockly.Msg.CocoRobo_PIN_OPT0 = "P0"
+Blockly.Msg.CocoRobo_PIN_OPT1 = "P1"
+Blockly.Msg.CocoRobo_PIN_OPT2 = "P2"
+Blockly.Msg.CocoRobo_PIN_OPT3 = "P3(EXT)"
+Blockly.Msg.CocoRobo_PIN_OPT4 = "P4(light)"
+Blockly.Msg.CocoRobo_PIN_OPT6 = "P6(buzzer)"
+Blockly.Msg.CocoRobo_PIN_OPT7 = "P7(RGB)"
+Blockly.Msg.CocoRobo_PIN_OPT8 = "P8"
+Blockly.Msg.CocoRobo_PIN_OPT9 = "P9"
+Blockly.Msg.CocoRobo_PIN_OPT10 = "P10(sound)"
+Blockly.Msg.CocoRobo_PIN_OPT13 = "P13"
+Blockly.Msg.CocoRobo_PIN_OPT14 = "P14"
+Blockly.Msg.CocoRobo_PIN_OPT15 = "P15"
+Blockly.Msg.CocoRobo_PIN_OPT16 = "P16"
+Blockly.Msg.CocoRobo_PIN_OPT19 = "P19(LCD)"
+Blockly.Msg.CocoRobo_PIN_OPT20 = "P20(LCD)"
+Blockly.Msg.CocoRobo_PIN_VOLTAGE_OPT1 = "HIGH"
+Blockly.Msg.CocoRobo_PIN_VOLTAGE_OPT2 = "LOW"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT1 = "no pull"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT2 = "pull down"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT3 = "pull up"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT1 = "input"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT2 = "Push-pull output"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT3 = "Leaky output"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT1 = "clear"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT2 = "full bright"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT3 = "black background"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT4 = "white background"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT1 = "pressed"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT2 = "released"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT3 = "pressed"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT4 = "unpressed"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT5 = "repeated"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT6 = "delayed"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT1 = "on"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT2 = "off"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT3 = "pause"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT4 = "go on"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT5 = "stop"
+Blockly.Msg.CocoRobo_EVENT_VOLTAGE_OPT1 = "↗low to high"
+Blockly.Msg.CocoRobo_EVENT_VOLTAGE_OPT2 = "↘high to low"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT1 = "normal"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT2 = "rev"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT3 = "trans"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT4 = "XOR"
+Blockly.Msg.CocoRobo_LOOKS_LIGHT_OPT1 = "bright"
+Blockly.Msg.CocoRobo_LOOKS_LIGHT_OPT2 = "dark"
+Blockly.Msg.CocoRobo_LOOKS_DIRECTION_OPT1 = "vertical"
+Blockly.Msg.CocoRobo_LOOKS_DIRECTION_OPT2 = "horizontal"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT1 = "even"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT2 = "odd"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT3 = "whole"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT4 = "positive"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT5 = "negative"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT6 = "divisible by"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_OPT1 = "draw"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_OPT2 = "erase"
+Blockly.Msg.CocoRobo_LOOKS_CIRCLE_OPT1 = "hollow"
+Blockly.Msg.CocoRobo_LOOKS_CIRCLE_OPT2 = "solid"
+Blockly.Msg.CocoRobo_LOOKS_FONT_OPT1 = "no wrap"
+Blockly.Msg.CocoRobo_LOOKS_FONT_OPT2 = "auto wrap"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT1 = "Heart"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT2 = "Small heart"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT3 = "Happy"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT4 = "Smile"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT5 = "Sad"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT6 = "Confused"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT7 = "Angry"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT8 = "Sleep"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT9 = "Surprise"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT10 = "Silly"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT11 = "Wonderful"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT12 = "Bored"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT13 = "Rock"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT14 = "Small rock"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT15 = "Paper"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT16 = "Small Paper"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT17 = "Scissors"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT18 = "Small scissors"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT19 = "Expressions/Big smile.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT20 = "Expressions/Heart large.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT21 = "Expressions/Heart small.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT22 = "Expressions/Mouth 1 open.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT23 = "Expressions/Mouth 1 shut.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT24 = "Expressions/Mouth 2 open.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT25 = "Expressions/Mouth 2 shut.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT26 = "Expressions/Sad.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT27 = "Expressions/Sick.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT28 = "Expressions/Smile.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT29 = "Expressions/Swearing.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT30 = "Expressions/Talking.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT31 = "Expressions/Wink.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT32 = "Expressions/ZZZ.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT33 = "Eyes/Angry.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT34 = "Eyes/Awake.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT35 = "Eyes/Black eye.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT36 = "Eyes/Bottom left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT37 = "Eyes/Bottom right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT38 = "Eyes/Crazy 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT39 = "Eyes/Crazy 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT40 = "Eyes/Disappointed.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT41 = "Eyes/Dizzy.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT42 = "Eyes/Down.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT43 = "Eyes/Evil.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT44 = "Eyes/Hurt.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT45 = "Eyes/Knocked out.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT46 = "Eyes/Love.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT47 = "Eyes/Middle left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT48 = "Eyes/Middle right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT49 = "Eyes/Neutral.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT50 = "Eyes/Nuclear.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT51 = "Eyes/Pinch left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT52 = "Eyes/Pinch middle.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT53 = "Eyes/Pinch right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT54 = "Eyes/Tear.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT55 = "Eyes/Tired left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT56 = "Eyes/Tired middle.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT57 = "Eyes/Tired right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT58 = "Eyes/Toxic.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT59 = "Eyes/Up.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT60 = "Eyes/Winking.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT61 = "Information/Accept.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT62 = "Information/Backward.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT63 = "Information/Decline.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT64 = "Information/Forward.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT65 = "Information/Left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT66 = "Information/No go.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT67 = "Information/Question mark.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT68 = "Information/Right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT69 = "Information/Stop 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT70 = "Information/Stop 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT71 = "Information/Thumbs down.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT72 = "Information/Thumbs up.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT73 = "Information/Warning.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT74 = "Objects/Bomb.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT75 = "Objects/Boom.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT76 = "Objects/Fire.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT77 = "Objects/Flowers.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT78 = "Objects/Forest.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT79 = "Objects/Light off.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT80 = "Objects/Light on.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT81 = "Objects/Lightning.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT82 = "Objects/Night.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT83 = "Objects/Pirate.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT84 = "Objects/Snow.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT85 = "Objects/Target.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT86 = "Progress/Bar 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT87 = "Progress/Bar 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT88 = "Progress/Bar 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT89 = "Progress/Bar 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT90 = "Progress/Bar 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT91 = "Progress/Dial 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT92 = "Progress/Dial 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT93 = "Progress/Dial 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT94 = "Progress/Dial 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT95 = "Progress/Dial 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT96 = "Progress/Dots 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT97 = "Progress/Dots 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT98 = "Progress/Dots 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT99 = "Progress/Dots 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT100 = "Progress/Hourglass 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT101 = "Progress/Hourglass 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT102 = "Progress/Hourglass 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT103 = "Progress/Timer 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT104 = "Progress/Timer 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT105 = "Progress/Timer 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT106 = "Progress/Timer 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT107 = "Progress/Timer 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT108 = "Progress/Water level 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT109 = "Progress/Water level 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT110 = "Progress/Water level 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT111 = "Progress/Water level 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT112 = "System/Accept_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT113 = "System/Accept_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT114 = "System/Alert.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT115 = "System/Box.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT116 = "System/Busy_0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT117 = "System/Busy_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT118 = "System/Decline_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT119 = "System/Decline_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT120 = "System/Dot_empty.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT121 = "System/Dot_full.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT122 = "System/Play.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT123 = "System/Slider_0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT124 = "System/Slider_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT125 = "System/Slider_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT126 = "System/Slider_3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT127 = "System/Slider_4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT128 = "System/Slider_5.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT129 = "System/Slider_6.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT130 = "System/Slider_7.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT131 = "System/Slider_8.pbm"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT1 = "Digiface 11px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT2 = "Digiface 16px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT3 = "Digiface 21px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT4 = "Digiface 30px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT5 = "Digiface 44px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT6 = "Digiface Italic 30px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT7 = "Digiface Italic 42px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT8 = "DejaVu Sans Mono 12px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT9 = "DejaVu Sans Mono 16px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT10 = "DejaVu Sans Mono 21px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT11 = "DejaVu Sans Mono Bold 12px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT12 = "DejaVu Sans Mono Bold 16px"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT13 = "DejaVu Sans Mono Bold 21px"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT1 = "UTC+1"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT2 = "UTC+2"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT3 = "UTC+3"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT4 = "UTC+4"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT5 = "UTC+5"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT6 = "UTC+6"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT7 = "UTC+7"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT8 = "UTC+8"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT9 = "UTC+9"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT10 = "UTC+10"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT11 = "UTC+11"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT12 = "UTC+12"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT13 = "UTC-1"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT14 = "UTC-2"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT15 = "UTC-3"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT16 = "UTC-4"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT17 = "UTC-5"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT18 = "UTC-6"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT19 = "UTC-7"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT20 = "UTC-8"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT21 = "UTC-9"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT22 = "UTC-10"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT23 = "UTC-11"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT24 = "UTC-12"
+Blockly.Msg.GROVE_JOINT_SETUP = "setup"
+Blockly.Msg.GROVE_JOINT_SETUP_LOOP = "loop"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE = "%1 %2 Temperature&Humidity %3"
+Blockly.Msg.GROVE_JOINT_INPUT_INFRARED = "%1 %2 Line Finder"
+Blockly.Msg.GROVE_JOINT_INPUT_MAGNESWITCH = "%1 %2 Magnetic Switch"
+Blockly.Msg.GROVE_JOINT_INPUT_ULTRASONIC = "%1 %2 Ultrasonic Ranger"
+Blockly.Msg.GROVE_JOINT_INPUT_LIGHT = "%1 %2 Light Sensor"
+Blockly.Msg.GROVE_JOINT_INPUT_SLIDESWITCH = "%1 %2 Slide Potentionmeter"
+Blockly.Msg.GROVE_JOINT_INPUT_INCLINE = "%1 %2 Tilt Sensor"
+Blockly.Msg.GROVE_JOINT_INPUT_TOUCH = "%1 %2 Touch Sensor"
+Blockly.Msg.GROVE_JOINT_INPUT_NOISE = "%1 %2 Sound Sensor"
+Blockly.Msg.GROVE_JOINT_INPUT_SOILHUMIDITY = "%1 %2 Moisture"
+Blockly.Msg.GROVE_JOINT_INPUT_SHAFTSPEED = "%1 %2 3Axis Digital Accelerometer-16 %3"
+Blockly.Msg.GROVE_JOINT_INPUT_MULTICHANNEDL_TOUCH = "%1 %2 I2C Touch CH %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_MINIMOTOR_RUN = "%1 %2 Mini I2C Motor %3 speed %4"
+Blockly.Msg.GROVE_JOINT_OUTPUT_FOURDIGIT_TUBE_DISPLAY = "%1 %2 4 Digital Display show %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_LEDBOARD_SHOW = "%1 %2 LED set to %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_RGBLED_SHOW = "%1 %2 Chainable RGB LED show R %3 G %4 B %5"
+Blockly.Msg.GROVE_JOINT_OUTPUT_SPEAKER_NOTEBEAT = "%1 %2 Speeker play tone %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_SERVO_TRUNANGLE = "%1 %2 Sevo move to  %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_BUZZER_PLAY = "%1 %2 Buzzer set to %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_MOTOR_RUN = "%1 %2 Vibration set to %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_DCMOTOR_RUN = "%1 %2 DC Motor set to %3"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT01 = "temperature"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT02 = "humidity"
+Blockly.Msg.GROVE_JOINT_INPUT_LEVEL_HIGH = "ON"
+Blockly.Msg.GROVE_JOINT_INPUT_LEVEL_LOW = "OFF"
+Blockly.Msg.ELFBOT_LINEPATROL_WHENETECTEDCOLORD = "%1 %2 when the detected colour is %3"
+Blockly.Categories = {};
+Blockly.Categories.motion = "motion"
+Blockly.Categories.looks = "looks"
+Blockly.Categories.sound = "sounds"
+Blockly.Categories.pen = "pen"
+Blockly.Categories.data = "data"
+Blockly.Categories.dataLists = "data-lists"
+Blockly.Categories.event = "events"
+Blockly.Categories.control = "control"
+Blockly.Categories.sensing = "sensing"
+Blockly.Categories.operators = "operators"
+Blockly.Categories.more = "more"
+
+
+Blockly.Msg.ESP32BUTTON = "When Button";
+Blockly.Msg.ESP32IS = "is";
+Blockly.Msg.ESP32PRESSED = "Pressed";
+Blockly.Msg.ESP32RELEASED = "Released";
+Blockly.Msg.ESP32DIALER_LEFT = "Left";
+Blockly.Msg.ESP32DIALER_MIDDLE = "Middle";
+Blockly.Msg.ESP32DIALER_RIGHT = "Right";
+Blockly.Msg.ESP32DIALSWITCH = "When Dialer";
+Blockly.Msg.ESP32TURN = "Set ";
+Blockly.Msg.ESP32LED = "Light ";
+Blockly.Msg.ESP32LED_MONO_TEXT_NO = "LED #";
+Blockly.Msg.ESP32LED_MONO_TEXT_AFTER = "A single LED light";
+Blockly.Msg.ESP32LED_BLUE = "Blue LED";
+Blockly.Msg.ESP32LED_RED = "Red LED";
+Blockly.Msg.ESP32LED_TURNON = "Up";
+Blockly.Msg.ESP32LED_TURNOFF = "Off";
+
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTUP = "Light Up the LED ";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTOFF = "Light Off the LED ";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_INIT_TEXT = "Located in (Column";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_MIDDLE_TEXT = ", Row";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_END_TEXT = ")";
+
+
+Blockly.Msg.ESP32TURNOBAF = "Buzzer";
+Blockly.Msg.ESP32TURNOB = "Turn off Buzzer";
+Blockly.Msg.ESP32TA = "When Touch Area";
+Blockly.Msg.ESP32_TOUCHED = "is Touched";
+Blockly.Msg.ESP32_UNTOUCHED = "is Not Touched";
+Blockly.Msg.ESP32_READ = "Get Touch Area";
+Blockly.Msg.ESP32_READ_VALUE = "'s Capacitative Variable";
+Blockly.Msg.ESP32_ENV_GET_TEXT = "Get";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite = "The buzzer plays notes";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite_2 = "Continue";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite_3 = "beat";
+
+
+Blockly.Msg.LCDINIT = "LCD Display Initalization"
+Blockly.Msg.LCDINIT_R = "Set Screen Rotation"
+Blockly.Msg.LCDINIT_M = "Set Mirror Flip"
+
+Blockly.Msg.LCDROTATION = "Set LCD Screen Rotation";
+
+Blockly.Msg.LCDMF = "Set LCD Screen Mirror Flip";
+
+Blockly.Msg.LCDDFSW = "Set LCD Display Fill Screen with";
+Blockly.Msg.LCDDFSW = "Set LCD Display Fill Screen with";
+
+Blockly.Msg.LCDDT = "Set LCD Display Text";
+Blockly.Msg.LCDDT_C = "Text Color";
+Blockly.Msg.LCDDT_BC = "Background Color";
+Blockly.Msg.LED_COORDINATE = "Coordinate";
+Blockly.Msg.WIFISERVER_SERVERSEND_CONTENT = "Content";
+
+Blockly.Msg.LCDDLOC = "Draw Line";
+
+Blockly.Msg.LCDDCC = "LCD Display Create Canvas";
+Blockly.Msg.LCDDCC_F = "Fill Image: ";
+Blockly.Msg.LCDDCC_I = "Image Path: ";
+
+Blockly.Msg.LCDDSC = "LCD Display Show Canvas";
+Blockly.Msg.LCDDSC_SC = "Set Coordinate";
+Blockly.Msg.LCDDSC_X = "X:";
+Blockly.Msg.LCDDSC_Y = "Y:";
+
+Blockly.Msg.LCD_CANVAS = "Canvas";
+Blockly.Msg.LCDDTOC = "Draw Text";
+Blockly.Msg.LCDDTOC_SH = "Set Monospace";
+
+Blockly.Msg.LCDDASOC = "Draw Arrow Sign";
+Blockly.Msg.LCDDASOC_SC = "Start Coordinate";
+Blockly.Msg.LCDDASOC_EC = "End Coordinate";
+Blockly.Msg.LCDDASOC_LC = "Line Color";
+Blockly.Msg.LCDDASOC_LT = "Line Thickness";
+Blockly.Msg.LCDDASOC_T = "Thickness";
+
+Blockly.Msg.LCDDFROC = "Draw";
+Blockly.Msg.LCDDFROC_R = "Rectangle";
+Blockly.Msg.LCDDFROC_C = "Circle";
+Blockly.Msg.LCDRADIUS = "Radius";
+
+Blockly.Msg.LCDDCSOC = "Draw Cross Sign";
+
+Blockly.Msg.LCDCEOC = "Clear Everything on Canvas";
+
+Blockly.Msg.LCDSCIC = "Set Canvas:";
+Blockly.Msg.LCDSCIC_I = "Inverted Color";
+
+Blockly.Msg.LCDSCCRTW = "Set Canvas ";
+Blockly.Msg.LCDSCCRTW_R = "Resized to Width";
+Blockly.Msg.LCDSCCRTW_TCANC = "Then Create a New Canvas";
+
+Blockly.Msg.LCDDI = "Display in";
+
+Blockly.Msg.LCDSCCCVTP = "Set Canvas:canvas Convert Vector to Pixel";
+
+Blockly.Msg.LCDRQ = "QR Code";
+
+
+
+Blockly.Msg.CAMERAINIT = "Camera Initialization";
+Blockly.Msg.CAMERAINIT_SFS = "Set Frame Size: ";
+Blockly.Msg.CAMERAINIT_SFS_I = "in";
+Blockly.Msg.CAMERAINIT_SWW = "Set Windowing";
+Blockly.Msg.CAMERAINIT_SVFOSHMO = "Set Vertical Flip";
+Blockly.Msg.CAMERAINIT_SVFOSHMO_O = "Set Horizontal Mirror"
+Blockly.Msg.CAMERAINIT_SABOSAGO = "Set Auto Balance: ";
+Blockly.Msg.CAMERAINIT_SABOSAGO_O = "Set Auto Gain: ";
+Blockly.Msg.CAMERAINIT_SCBS = "Set Contrast:";
+Blockly.Msg.CAMERAINIT_SCBS_B = "Brightness:";
+Blockly.Msg.CAMERAINIT_SCBS_S = "Saturation:";
+
+Blockly.Msg.CAMERASVFO = "Set Vertical Flip ";
+Blockly.Msg.CAMERASVFO_SHMO = "Set Horizontal Mirror ";
+Blockly.Msg.CAMERASVFO_SABO = "Set Auto-Balance ";
+Blockly.Msg.CAMERASVFO_SAGO = "Set Auto-Gain ";
+Blockly.Msg.CAMERASVFO_SCT = "Set Contrast to";
+Blockly.Msg.CAMERASVFO_SBT = "Set Brightness to";
+Blockly.Msg.CAMERASVFO_SST = "Set Saturation to";
+
+Blockly.Msg.CAMERGICFC = "Get Image captured from Camera";
+Blockly.Msg.CAMERGICFC_SCT = "Select Camera Type:";
+
+Blockly.Msg.MODELLPM = "Load Preset Model: ";
+
+Blockly.Msg.CAMERINIT = "Initialize Preset Model:Single Digit Recognition";
+Blockly.Msg.CAMERINIT_SISF = "Set Image Source From: ";
+Blockly.Msg.CAMERINIT_FPM = "From Preset Model:Single Digit Recognition";
+Blockly.Msg.CAMERINIT_GCDN = "Get Current Detected Number(0-9)";
+Blockly.Msg.CAMERINIT_CRC = "Current recognition confidence (%)";
+
+Blockly.Msg.MODELS_L = "Any common object is recognized";
+
+
+Blockly.Msg.MODELS_GET_F = "from";
+Blockly.Msg.MODELS_GET_G = "Get the";
+Blockly.Msg.MODELS_GET_O = "Object name";
+Blockly.Msg.MODELS_GET_X = "X-axis coordinate of detection box";
+Blockly.Msg.MODELS_GET_Y = "Y coordinate of the detection box";
+Blockly.Msg.MODELS_GET_W = "Width of detection box ";
+Blockly.Msg.MODELS_GET_H = "Height of inspection frame";
+Blockly.Msg.MODELS_GET_NO = "Number of objects";
+Blockly.Msg.MODELS_GET_S = "Serial number";
+Blockly.Msg.MODELS_GET_C = "Confidence level";
+
+
+Blockly.Msg.MODELS_FACE = "Face recognition";
+
+Blockly.Msg.MODELS_XY_F = "Get the Face";
+Blockly.Msg.MODELS_XY_N = "Number";
+
+
+
+
+
+
+Blockly.Msg.MODELS_SDR = "Single Digit Recognition";
+Blockly.Msg.MODELS_COR = "Common Object Recognition";
+Blockly.Msg.MODELS_AR = "Animal Recognition";
+Blockly.Msg.MODELS_HFR = "Human Face Recognition";
+
+
+
+
+
+Blockly.Msg.CAMERINIT_GTCS = "Get the Confidence Score (%) of Detected Number";
+
+
+Blockly.Msg.CAMERINITPM = "Initialize Preaset Model:Common Object Recognition";
+Blockly.Msg.CAMERINITPM_SMSFIOR = "Set Image Source from ";
+Blockly.Msg.CAMERINITPM_ACOID = "Any Common Object  is Detected";
+Blockly.Msg.CAMERINITPM_IACOID = "If Any Common Object is Detected";
+Blockly.Msg.CAMERINITPM_D = "Do";
+Blockly.Msg.CAMERINITPM_E = "Else";
+Blockly.Msg.CAMERINITPM_FPM = "From Preset Model: Common Object Recognition";
+Blockly.Msg.CAMERINITPM_G = "Get";
+Blockly.Msg.CAMERINITPM_GIOTCOD = " of the Common Object Detected";
+Blockly.Msg.CAMERINITPM_DCOIA = "Detected Common Object is ";
+
+
+
+Blockly.Msg.CAMERINITPMA = "Initialize Preset Model:Animal Recognition";
+Blockly.Msg.CAMERINITPMA_AAOID = "Any Animal is Detected";
+Blockly.Msg.CAMERINITPMA_IAAOID = "If Any Animal is Detected";
+Blockly.Msg.CAMERINITPMA_FPMA = "From Preset Model: Animal Recongnition";
+Blockly.Msg.CAMERINITPMA_GIOTCAD = " of the Animal Detected";
+Blockly.Msg.CAMERINITPMA_DAOIA = "Detected Animal is ";
+
+
+
+Blockly.Msg.CAMERINITPMF = "Initialize Preset Model:Face Recognition";
+Blockly.Msg.CAMERINITPMF_SISFIF = "Set Image Source from ";
+Blockly.Msg.CAMERINITPMF_AFID = "Any Face is Detected";
+Blockly.Msg.CAMERINITPMF_IAFID = "If Any Face is Detected";
+Blockly.Msg.CAMERINITPMF_FPM = "From Preset Model: Face Recongnition";
+Blockly.Msg.CAMERINITPMF_GIOTFD = "of the Face Detected";
+
+Blockly.Msg.CAMERINITPMF_LCMLM = "Load Customized Machine Learning Model";
+Blockly.Msg.CAMERINITPMF_FSC = "From SD Card:";
+
+Blockly.Msg.CAMERINIINNYFNOT = "Initialize Neural Network YOLOv2"
+Blockly.Msg.CAMERINIINNYFNOT_F = " from Network Object";
+Blockly.Msg.CAMERINIINNYFNOT_SPT = "Set Probability Threshold:"
+Blockly.Msg.CAMERINIINNYFNOT_SPT_S = " Set Box IoU Threshold:";
+Blockly.Msg.CAMERINITPMF_SNOAA = "Set Number of Anchors Anchors "
+Blockly.Msg.CAMERINITPMF_SNOAA_S = " Set Anchor as:anchors";
+
+
+Blockly.Msg.CAMERGRFRNNY = "Get Result from Running Neural Network YOLOv2";
+Blockly.Msg.CAMERGRFRNNY_FNOT = "From Network Object ";
+Blockly.Msg.CAMERGRFRNNY_SNOLTCTTN = "Set Number of Layers to Calculate to the Network:";
+Blockly.Msg.CAMERGRFRNNY_SISA = "Set Image Source as :";
+
+Blockly.Msg.CAMERGFMOFNOT = "Get Feature Map Object from Network Object";
+Blockly.Msg.CAMERGFMOFNOT_SNOLTCTTN = "Set Number of Layers to Calculate to the Network:";
+Blockly.Msg.CAMERGFMOFNOT_SISAC = "Set Image Source as:";
+
+
+Blockly.Msg.CAMERDNOT = "Deinitialize Network Object ";
+
+
+Blockly.Msg.VISION_IF = "If Color  ";
+Blockly.Msg.VISION_IF_R = "Region is Detected from Canvas:";
+Blockly.Msg.VISION_IF_S = "Set Maximum Dertected Size:";
+
+Blockly.Msg.VISION_IF_C = "Get Detected Region's";
+
+
+Blockly.Msg.VISION_CIF = " Circle is Detected from Canvas: ";
+Blockly.Msg.VISION_CIF_D = "Get Detected Circle's";
+
+Blockly.Msg.VISION_SIF = "Start Double Line Detection";
+Blockly.Msg.VISION_SIF_D = "Dectect Line Color:";
+Blockly.Msg.VISION_SIF_G = "Get Direction Offset Value";
+Blockly.Msg.VISION_SIF_GF = "From Double Line Detection";
+
+
+
+Blockly.Msg.MPHONE = "Microphone Initialization";
+Blockly.Msg.MPHONE_A = "Read Avg.Loudness from Microphone";
+
+
+Blockly.Msg.AUDIO_S = "Speaker Initialization";
+Blockly.Msg.AUDIO_S_P = "Play audio file";
+Blockly.Msg.AUDIO_S_PS = "Set volume";
+Blockly.Msg.AUDIO_S_PF = "File Path:";
+
+Blockly.Msg.AUDIO_SET = "Set audio playback volume";
+
+
+Blockly.Msg.VIDEO_S = "Video recording initialization";
+Blockly.Msg.VIDEO_S_S = "File save path";
+
+Blockly.Msg.VIDEO_G = "Recording video from";
+Blockly.Msg.VIDEO_G_I = "image source";
+
+Blockly.Msg.VIDEO_S_R = "Stop Record Video";
+
+Blockly.Msg.VIDEO_SET_F = "Play video file";
+Blockly.Msg.VIDEO_SET_P = "File path:";
+
+Blockly.Msg.VIDEO_NUM = "Set video playback volume ";
+
+Blockly.Msg.VIDEO_STATUS = "Get the status of video playback";
+
+
+
+Blockly.Msg.SERIALPORT_PRINT_TITLE = "Serial Port Print %1";
+Blockly.Msg.SERIALPORT_SPACER = "Spacer";
+Blockly.Msg.SERIALPORT_TERMINATOR = "Terminator";
+Blockly.Msg.SERIALPORT_DATA = "Data";
+
+Blockly.Msg.SERIALPORT_COLOR = "Text color";
+Blockly.Msg.SERIALPORT_TCOLOR = "Text background";
+
+Blockly.Msg.SERIALPORT_SLDT = "Set LCD display text";
+
+Blockly.Msg.LCD_CLEAR = "Clear screen";
+
+Blockly.Msg.CAMERA_WINDOW = "Set camera windowing";
+Blockly.Msg.CAMERA_SIZE = "Window size";
+
+Blockly.Msg.CAMERA_WINDOW = "Set camera windowing";
+Blockly.Msg.CAMERA_SIZE = "Window size";
+
+
+
+Blockly.Msg.CAMERA_INIT = "Camera initialization";
+Blockly.Msg.CAMERA_CIS = "Captured image size:";
+Blockly.Msg.CAMERA_COCI = "Color of captured image:";
+
+Blockly.Msg.CAMERA_C = "Color";
+Blockly.Msg.CAMERA_BW = "black and white";
+
+
+
+/*
+  __  __       _   _     
+ |  \/  | __ _| |_| |__  
+ | |\/| |/ _` | __| '_ \ 
+ | |  | | (_| | |_| | | |
+ |_|  |_|\__,_|\__|_| |_|
+                         
+*/
+
+Blockly.Msg.math_degrad_rad = "Convert Degrees to Radians";
+Blockly.Msg.math_degrad_deg = "Convert Radians to Degrees";
+
+
+
+/*
+  ___                   _      _____        _               _   
+ |_ _|_ __  _ __  _   _| |_   / / _ \ _   _| |_ _ __  _   _| |_ 
+  | || '_ \| '_ \| | | | __| / / | | | | | | __| '_ \| | | | __|
+  | || | | | |_) | |_| | |_ / /| |_| | |_| | |_| |_) | |_| | |_ 
+ |___|_| |_| .__/ \__,_|\__/_/  \___/ \__,_|\__| .__/ \__,_|\__|
+           |_|                                 |_|              
+*/
+
+Blockly.Msg.io_high = "HIGH";
+Blockly.Msg.io_low = "LOW";
+Blockly.Msg.digital_set = "Set GPIO #";
+Blockly.Msg.digital_set_as = "to";
+Blockly.Msg.digital_get = "Get GPIO #";
+Blockly.Msg.digital_get_value = "Digital Read";
+
+Blockly.Msg.analog_get = "Get GPIO #";
+Blockly.Msg.analog_get_value = "Analog Value";
+Blockly.Msg.analog_set = "IoT Module Set GPIO #";
+Blockly.Msg.set_pin = "(range:0 ~ 1023)";
+Blockly.Msg.analog_set_ai = "A.I. Module Set GPIO #";
+Blockly.Msg.analog_set_freq = "Set Frequency as:";
+Blockly.Msg.analog_set_pwm = "Set PWM as:";
+Blockly.Msg.set_pwm = "PWM Value to";
+Blockly.Msg.led = "LED";
+Blockly.Msg.control = "Control";
+Blockly.Msg.OUT_PWM = "Output PWM wave";
+
+Blockly.Msg.analog_set_timer = "Set Timer:";
+Blockly.Msg.analog_set_timer_channel = "Set Timer Channel:";
+
+Blockly.Msg.Esp32_Main_Controller_Io_analog_pin_1 = "A.I. Module GPIO #";
+Blockly.Msg.Esp32_Main_Controller_Io_analog_pin_2 = "IoT Module GPIO #";
+
+/*
+  _____ _                
+ |_   _(_)_ __ ___   ___ 
+   | | | | '_ ` _ \ / _ \
+   | | | | | | | | |  __/
+   |_| |_|_| |_| |_|\___|
+                         
+*/
+
+Blockly.Msg.time_iot_module = "IoT Module ";
+Blockly.Msg.time_ai_module = "A.I. Module";
+Blockly.Msg.time_init_timer = "Initialize Timer";
+Blockly.Msg.time_timer_get_time = "Get time elapsed from Timer (s)";
+Blockly.Msg.time_timer_clear = "Clear Timer";
+Blockly.Msg.time_timer_periodically = "Enable Periodical Timer";
+Blockly.Msg.time_timer_every = "Every";
+Blockly.Msg.time_timer_ms = "Millisecond(s)";
+Blockly.Msg.time_execution = "Do";
+Blockly.Msg.time_timer_periodically_clear = "Clear Periodical Timer";
+
+Blockly.Msg.time_get_current_date_title = "Get Current Time:";
+Blockly.Msg.time_get_current_date_y = "Year";
+Blockly.Msg.time_get_current_date_m = "Month";
+Blockly.Msg.time_get_current_date_d = "Day";
+Blockly.Msg.time_get_current_date_hour = "Hour";
+Blockly.Msg.time_get_current_date_min = "Minute";
+Blockly.Msg.time_get_current_date_sec = "Second";
+
+
+/*
+  ____            _       _    ____                            
+ / ___|  ___ _ __(_) __ _| |  / ___|___  _ __ ___  _ __ ___    
+ \___ \ / _ \ '__| |/ _` | | | |   / _ \| '_ ` _ \| '_ ` _ \   
+  ___) |  __/ |  | | (_| | | | |__| (_) | | | | | | | | | | |_ 
+ |____/ \___|_|  |_|\__,_|_|  \____\___/|_| |_| |_|_| |_| |_(_)
+
+*/
+
+Blockly.Msg.serialcomm_print = "Serial print";
+Blockly.Msg.serialcomm_write_title_text = "Send Data to other devices through the serial port";
+Blockly.Msg.serialcomm_write_title_text_arduino = "Send data to Arduino via USB";
+Blockly.Msg.serialcomm_read_setup_title_text_arduino = "Initialization of data acquisition via USB";
+Blockly.Msg.serialcomm_read_setup_title_text = "Obtain data through the serial port";
+Blockly.Msg.serialcomm_read_setup_title_text_1 = " to initialize";
+Blockly.Msg.serial_read_data = "From ";
+Blockly.Msg.Serial_Read_Data_all = "Obtained serial port data";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_GET_TEXT = "Get Serial (UART) Data at ";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_TEXT = "as";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_FLOAT = "Float";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_INTEGER = "Number";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_STRING = "String";
+Blockly.Msg.serialcomm_write_item_first = "Data ";
+Blockly.Msg.serialcomm_write_item_last = "bit of data";
+Blockly.Msg.serialcomm_write_item = "Item";
+Blockly.Msg.serialcomm_write_data = "Data";
+Blockly.Msg.serialcomm_write_data_bps_title = "Set Baud Rate:";
+Blockly.Msg.serialcomm_write_data_bps_attrib = "bps";
+Blockly.Msg.serialcomm_write_on = "On";
+Blockly.Msg.serialcomm_write_on_ai = "AI Module ";
+Blockly.Msg.serialcomm_write_on_iot = "IoT Module";
+Blockly.Msg.serial_send_data_on = "On";
+Blockly.Msg.serial_send_data_on_send_data_cocorobo = "CocoPi Send data to generation 1 and generation 2   "
+Blockly.Msg.serial_send_data_on_send_data = "CocoPi Send Data to Micro:bit"
+Blockly.Msg.serial_send_data_on_send_data_control_panel = "CocoPi Send Data to Control panel";
+Blockly.Msg.serial_send_data_on_send_data_control_panel_arduino = "CocoPi Send Data to Control Arduino";
+
+
+/*
+  ____            _      
+ | __ )  __ _ ___(_) ___ 
+ |  _ \ / _` / __| |/ __|
+ | |_) | (_| \__ \ | (__ 
+ |____/ \__,_|___/_|\___|
+
+*/
+
+
+Blockly.Msg.basic_button_read_value = "Read the Status of Button ";
+Blockly.Msg.basic_button_read_value_after = "the voltage level state";
+
+Blockly.Msg.basic_buzzer_set_init = "The buzzer is initialized and the pins are set as follows";
+Blockly.Msg.basic_buzzer_set = "Set Buzzer frequency (Hz)";
+Blockly.Msg.basic_temperature = "Temperature";
+Blockly.Msg.basic_humidity = "Humidity";
+Blockly.Msg.basic_pressure = "Pressure";
+Blockly.Msg.basic_env_value = "Value";
+Blockly.Msg.basic_motion_use = "Initialize Motion Sensor";
+
+Blockly.Msg.basic_shaking_sensitivity = "Set the sensitivity to";
+Blockly.Msg.basic_shaking_sensitivity_high = "High";
+Blockly.Msg.basic_shaking_sensitivity_middle = "Middle";
+Blockly.Msg.basic_shaking_sensitivity_low = "low";
+Blockly.Msg.basic_when_shaking_when_module = "when Module is";
+Blockly.Msg.basic_when_shaking_when_is_in = "Shaking";
+Blockly.Msg.basic_when_shaking_when_is_not_in = "Not Shaking";
+Blockly.Msg.basic_when_shaking_when_shaking = "";
+
+Blockly.Msg.basic_when_shaking = "When module is shaking";
+Blockly.Msg.basic_when_shaking_not = "When module is not shaking";
+
+Blockly.Msg.basic_when_tilting_get = "When module is ";
+Blockly.Msg.basic_when_tilting_get_left = "tilt to the left";
+Blockly.Msg.basic_when_tilting_get_right = "tilt to the right";
+Blockly.Msg.basic_when_tilting_get_forward = "tilt to the forward";
+Blockly.Msg.basic_when_tilting_get_backward = "tilt to the backward";
+Blockly.Msg.basic_when_tilting_get_left_and_forward = "tilt to the forward left";
+Blockly.Msg.basic_when_tilting_get_left_and_backward = "tilt to the backward left";
+Blockly.Msg.basic_when_tilting_get_right_and_forward = "tilt to the forward right";
+Blockly.Msg.basic_when_tilting_get_right_and_backward = "tilt to the backward right";
+Blockly.Msg.basic_when_tilting_not_tilting = "not tilting";
+Blockly.Msg.basic_when_tilting_get_when = "When in a wobbly state.";
+Blockly.Msg.basic_motion_get = "Get";
+Blockly.Msg.basic_motion_accel = " axis acceleration";
+Blockly.Msg.basic_motion_rotation_measurement = " axis rotation measurement";
+Blockly.Msg.basic_motion_angle = " axis rotation angle";
+Blockly.Msg.isUnit = "Need unit";
+Blockly.Msg.confUnit = "Yes";
+Blockly.Msg.cancUnit = "No";
+Blockly.Msg.basic_light_get = "Get Light Sensitivity(0~4095)";
+
+Blockly.Msg.basic_motion_statement_exec = "Do";
+
+
+
+
+/*
+  ____  _           _             
+ |  _ \(_)___ _ __ | | __ _ _   _ 
+ | | | | / __| '_ \| |/ _` | | | |
+ | |_| | \__ \ |_) | | (_| | |_| |
+ |____/|_|___/ .__/|_|\__,_|\__, |
+             |_|            |___/ 
+*/
+
+Blockly.Msg.display_clear_screen = "Clear Screen";
+Blockly.Msg.display_fill_screen = "Set screen filled with color";
+Blockly.Msg.display_draw_pixel = "Pixel";
+Blockly.Msg.display_draw_vertical = "Vertical";
+Blockly.Msg.display_draw_horizontal = "Horizontal";
+Blockly.Msg.display_start_cord = "Start Coordinate";
+Blockly.Msg.display_length = "Length";
+Blockly.Msg.display_draw_rectangle = "Rectangle";
+Blockly.Msg.display_drawqr_text = " QR Code";
+Blockly.Msg.display_drawqr_content = "Content";
+Blockly.Msg.display_drawqr_padding = "Padding Width";
+Blockly.Msg.display_draw_text = "Content";
+Blockly.Msg.display_draw_text_content = "Content";
+Blockly.Msg.display_draw_text_size = "Text Size";
+Blockly.Msg.display_draw_text_return = "Auto Wrap";
+Blockly.Msg.display_red = "Red";
+Blockly.Msg.display_green = "Green";
+Blockly.Msg.display_blue = "Blue";
+
+/*
+ __        ___       _____ _ 
+ \ \      / (_)     |  ___(_)
+  \ \ /\ / /| |_____| |_  | |
+   \ V  V / | |_____|  _| | |
+    \_/\_/  |_|     |_|   |_|
+                             
+*/
+
+Blockly.Msg.wifi_setup_hotspot = "Create Wi-Fi Hotspot";
+Blockly.Msg.wifi_hotspot_ssid = "SSID:";
+Blockly.Msg.wifi_hotspot_pass = "Password:";
+Blockly.Msg.wifi_connect_router = "Connect to Wi-Fi Network";
+Blockly.Msg.wifi_router_ssid = "SSID:";
+Blockly.Msg.wifi_router_pass = "Password:";
+Blockly.Msg.wifi_router_disconnect = "Disconnect Wi-Fi Connection";
+Blockly.Msg.wifi_hotspot_get_clients = "Get number of current connected device(s)";
+Blockly.Msg.wifi_hotspot_get_list = "Get the list current connected device(s)";
+Blockly.Msg.wifi_router_connection_status = "Get Wi-Fi Connection Status";
+Blockly.Msg.wifi_close_hotspot = "Close Wi-Fi Hotspot";
+Blockly.Msg.wifi_router_get_info = "Get Wi-Fi Configuration Info";
+Blockly.Msg.wifi_router_device_ip = "IP";
+Blockly.Msg.wifi_router_device_mask = "Netmask";
+Blockly.Msg.wifi_router_device_gateway = "Gateway";
+Blockly.Msg.wifi_router_device_dns = "DNS";
+
+Blockly.Msg.wifi_ntptime_title = "Synchronize Time From Internet";
+Blockly.Msg.wifi_ntptime_set_timezone = "Set Timezone:";
+Blockly.Msg.wifi_ntptime_utc8 = "UTC+8";
+Blockly.Msg.wifi_ntptime_utc9 = "UTC+9";
+Blockly.Msg.wifi_ntptime_utc10 = "UTC+10";
+Blockly.Msg.wifi_ntptime_utc11 = "UTC+11";
+Blockly.Msg.wifi_ntptime_utc12 = "UTC+12";
+Blockly.Msg.wifi_ntptime_utcm12 = "UTC-12";
+Blockly.Msg.wifi_ntptime_utcm11 = "UTC-11";
+Blockly.Msg.wifi_ntptime_utcm10 = "UTC-10";
+Blockly.Msg.wifi_ntptime_utcm9 = "UTC-9";
+Blockly.Msg.wifi_ntptime_utcm8 = "UTC-8";
+Blockly.Msg.wifi_ntptime_utcm7 = "UTC-7";
+Blockly.Msg.wifi_ntptime_utcm6 = "UTC-6";
+Blockly.Msg.wifi_ntptime_utcm5 = "UTC-5";
+Blockly.Msg.wifi_ntptime_utcm4 = "UTC-4";
+Blockly.Msg.wifi_ntptime_utcm3 = "UTC-3";
+Blockly.Msg.wifi_ntptime_utcm2 = "UTC-2";
+Blockly.Msg.wifi_ntptime_utcm1 = "UTC-1";
+Blockly.Msg.wifi_ntptime_utc0 = "UTC";
+Blockly.Msg.wifi_ntptime_utc1 = "UTC+1";
+Blockly.Msg.wifi_ntptime_utc2 = "UTC+2";
+Blockly.Msg.wifi_ntptime_utc3 = "UTC+3";
+Blockly.Msg.wifi_ntptime_utc4 = "UTC+4";
+Blockly.Msg.wifi_ntptime_utc5 = "UTC+5";
+Blockly.Msg.wifi_ntptime_utc6 = "UTC+6";
+Blockly.Msg.wifi_ntptime_utc7 = "UTC+7";
+Blockly.Msg.wifi_ntptime_time_server = "Set Time Server:";
+
+Blockly.Msg.wifi_web_http_server_setup = "HTTP Server Setup";
+Blockly.Msg.wifi_web_http_server_route_setting_title = "HTTP Server Route Setting";
+Blockly.Msg.wifi_web_http_server_route_setting_path = "When Path";
+Blockly.Msg.wifi_web_http_server_route_setting_being_requested = "is Being Requested";
+Blockly.Msg.wifi_web_http_server_route_setting_property = "Set Route Property:";
+Blockly.Msg.wifi_web_http_server_route_setting_get = "GET";
+Blockly.Msg.wifi_web_http_server_route_setting_post = "POST";
+Blockly.Msg.wifi_web_http_server_route_setting_do = "Do";
+Blockly.Msg.wifi_web_http_server_respond_title = "HTTP Server Send Response";
+Blockly.Msg.wifi_web_http_server_respond_type = "Set Reponse Type:";
+Blockly.Msg.wifi_web_http_server_respond_text = "Plain Text";
+Blockly.Msg.wifi_web_http_server_respond_json = "JSON Data";
+Blockly.Msg.wifi_web_http_server_respond_html = "Web Page (HTML Code)";
+Blockly.Msg.wifi_web_http_server_respond_exec = "Respond:";
+Blockly.Msg.wifi_web_http_server_get_title = "HTTP Server Get Request Content Data as";
+Blockly.Msg.wifi_web_http_server_get_as_json = "JSON";
+Blockly.Msg.wifi_web_http_server_get_as_text = "Text";
+
+
+/*
+  _   _ ____       ___    _____ 
+ | \ | | __ )     |_ _|__|_   _|
+ |  \| |  _ \ _____| |/ _ \| |  
+ | |\  | |_) |_____| | (_) | |  
+ |_| \_|____/     |___\___/|_|  
+
+*/
+
+Blockly.Msg.nbiot_module_which_module_iot = "On IoT Module ";
+Blockly.Msg.nbiot_module_which_module_ai = "On AI Module ";
+
+Blockly.Msg.nbiot_module_init = "NB-IoT Module Communication Setup";
+Blockly.Msg.nbiot_module_power = "Get NB-IoT Module Power Status";
+Blockly.Msg.nbiot_module_connectivity = "Get NB-IoT Internet Connection Status";
+Blockly.Msg.nbiot_module_ip = "Get NB-IoT Module's Internet IP Address";
+Blockly.Msg.nbiot_onenet_title = "NB-IoT Module to OneNET Configuration";
+Blockly.Msg.nbiot_onenet_connect_productid = "Product ID:";
+Blockly.Msg.nbiot_onenet_connect_deviceid = "Device ID:";
+Blockly.Msg.nbiot_onenet_connect_device_api = "Device API Key:";
+Blockly.Msg.nbiot_onenet_connectivity = "NB-IoT Module Get OneNET Connection Status";
+Blockly.Msg.nbiot_onenet_send_title = "NB-IoT Module Send Data to OneNET";
+Blockly.Msg.nbiot_onenet_send_property = "Property Name: ";
+Blockly.Msg.nbiot_onenet_when_incoming_msg = "When NB-IoT Module Got Message: ";
+Blockly.Msg.nbiot_onenet_when_incoming_msg_when = "from OneNET";
+Blockly.Msg.nbiot_onenet_when_incoming_msg_exec = "Do";
+Blockly.Msg.nbiot_onenet_receive_command = "Get Message received from OneNET";
+Blockly.Msg.nbiot_cococloud_get_event_title = "NB-IoT Module Get CocoCloud Event Data";
+Blockly.Msg.nbiot_cococloud_get_event_api = "Cloud Event API Key:";
+Blockly.Msg.nbiot_cococloud_get_property = "Get the data where property is";
+Blockly.Msg.nbiot_cococloud_get_data = "from CocoCloud";
+Blockly.Msg.nbiot_cococloud_send_title = "NB-IoT Module Send Data to CocoCloud";
+Blockly.Msg.nbiot_cococloud_send_api = "Event API Key:";
+Blockly.Msg.nbiot_cococloud_send_property = "Property Name: ";
+Blockly.Msg.nbiot_http_get_title = "Send HTTP GET Request";
+Blockly.Msg.nbiot_http_get_url = "Set destination URL:";
+
+
+
+
+/*
+  ___       _                       _   
+ |_ _|_ __ | |_ ___ _ __ _ __   ___| |_ 
+  | || '_ \| __/ _ \ '__| '_ \ / _ \ __|
+  | || | | | ||  __/ |  | | | |  __/ |_ 
+ |___|_| |_|\__\___|_|  |_| |_|\___|\__|
+
+*/
+
+
+Blockly.Msg.internet_server_setup = "HTTP Server Initialize";
+Blockly.Msg.internet_server_set_max = "Set maximum number of connection:";
+Blockly.Msg.internet_server_set_source = "Get the IP Address of requested device";
+Blockly.Msg.internet_response_http_content_title = "From HTTP Response get ";
+Blockly.Msg.internet_response_text = "Text";
+Blockly.Msg.internet_response_content = "Content";
+Blockly.Msg.internet_response_status = "Status Code";
+Blockly.Msg.internet_response_json = "JSON Data";
+Blockly.Msg.internet_response_encode = "Encoding";
+Blockly.Msg.internet_response_reason = "Reason code";
+Blockly.Msg.internet_http_get_title = "Send HTTP GET Request";
+Blockly.Msg.internet_http_get_url = "Set destination URL:";
+Blockly.Msg.internet_http_post_title = "Send HTTP POST Request";
+Blockly.Msg.internet_http_post_url = "Set destination URL:";
+Blockly.Msg.internet_http_post_json = "Submit JSON Data:";
+
+
+Blockly.Msg.internet_http_get_server_data_title = "Get Data Requested from Local HTTP Server";
+Blockly.Msg.internet_http_get_server_data_type = "Data Type is:";
+Blockly.Msg.internet_http_get_server_data_json = "Plain Text";
+Blockly.Msg.internet_http_get_server_data_text = "Dictionary Data (JSON)";
+
+
+Blockly.Msg.internet_ws_setup_send_text = "Real-time Comm. (Websocket) Setup (Send)";
+Blockly.Msg.internet_ws_setup_send_ip = "Set Host Device IP:";
+Blockly.Msg.internet_ws_send_msg = "From Websocket Send Message:";
+Blockly.Msg.internet_ws_setup_recv = "Real-time Comm. (Websocket) Setup (Receive)";
+Blockly.Msg.internet_ws_setup_receiving = "When Websocket Received Message";
+Blockly.Msg.internet_ws_setup_recv_exec = "Do";
+Blockly.Msg.internet_ws_setup_get_msg = "Get Message Received from Websocket";
+Blockly.Msg.internet_ws_setup_get_msg_type = "Set Message type as:";
+Blockly.Msg.internet_ws_setup_get_msg_text = "Text";
+Blockly.Msg.internet_ws_setup_get_msg_json = "Dictionary Data (JSON)";
+Blockly.Msg.v831_get_weather_init = "Initialize weather ";
+Blockly.Msg.set_weather_city = "Set the city to get the weather ";
+Blockly.Msg.set_weather_title_small = "Set weather Period ";
+Blockly.Msg.set_weather_real_time = "Real-time ";
+Blockly.Msg.set_weather_All_day_long = "All day ";
+Blockly.Msg.set_weather_city_title = "Set city and time to get weather"
+Blockly.Msg.beijing = "Beijing ";
+Blockly.Msg.shanghai = "Shanghai ";
+Blockly.Msg.guangzhou = "Guangzhou ";
+Blockly.Msg.shenzhen = "Shenzhen ";
+Blockly.Msg.tianjin = "Tianjin ";
+Blockly.Msg.HongKong = "Hong Kong"
+Blockly.Msg.weather_resulet= "weather results"
+Blockly.Msg.weather_condition = "weather"
+Blockly.Msg.windDir = "windDir"
+Blockly.Msg.windScale = "windScale"
+Blockly.Msg.windSpeed = "windSpeed"
+/*
+  ___    _____   ____                  _          
+ |_ _|__|_   _| / ___|  ___ _ ____   _(_) ___ ___ 
+  | |/ _ \| |   \___ \ / _ \ '__\ \ / / |/ __/ _ \
+  | | (_) | |    ___) |  __/ |   \ V /| | (_|  __/
+ |___\___/|_|   |____/ \___|_|    \_/ |_|\___\___|
+
+*/
+
+
+Blockly.Msg.iotservice_thingspeak_send_title = "Send Data to ThingSpeak Channel";
+Blockly.Msg.iotservice_thingspeak_send_api_set = "Set Channel API Key:";
+Blockly.Msg.iotservice_thingspeak_send_data_1 = "Data 1";
+Blockly.Msg.iotservice_onenet_mqtt_setup = "OneNET IoT Platform (MQTTS) Connection Setup";
+Blockly.Msg.iotservice_onenet_mqtt_server = "Set Connect Server:";
+Blockly.Msg.iotservice_onenet_mqtt_productid = "Set Product ID:";
+Blockly.Msg.iotservice_onenet_mqtt_productkey = "Set Product API Key:";
+Blockly.Msg.iotservice_onenet_mqtt_deviceid = "Set Device ID:";
+Blockly.Msg.iotservice_onenet_mqtt_send = "Send Data to OneNET";
+Blockly.Msg.iotservice_onenet_mqtt_send_item = "Property Name: ";
+Blockly.Msg.iotservice_onenet_mqtt_receive = "When Received Message";
+Blockly.Msg.iotservice_onenet_mqtt_receive_when = "from OneNET";
+Blockly.Msg.iotservice_onenet_mqtt_receive_exec = "Do";
+Blockly.Msg.iotservice_onenet_mqtt_disconnect = "Disconnect OneNET Connection";
+Blockly.Msg.iotservice_ifttt_send_title = "Send Data to IFTTT Webhooks Event";
+Blockly.Msg.iotservice_ifttt_send_webhook = "Webhooks API Key:";
+Blockly.Msg.iotservice_ifttt_send_eventname = "Event Name:";
+Blockly.Msg.iotservice_ifttt_send_1 = "Data 1:";
+Blockly.Msg.iotservice_ifttt_send_2 = "Data 2:";
+Blockly.Msg.iotservice_ifttt_send_3 = "Data 3:";
+Blockly.Msg.iotservice_ifttt_trigger_title = "Trigger IFTTT Event";
+Blockly.Msg.iotservice_ifttt_trigger_webhook = "Webhook API Key:";
+Blockly.Msg.iotservice_ifttt_trigger_eventname = "Event Name:";
+Blockly.Msg.iotservice_thingspeak_send_title = "Send Data to ThingSpeak Channel";
+Blockly.Msg.iotservice_thingspeak_send_api = "Set Channel API Key:";
+Blockly.Msg.iotservice_thingspeak_query_title = "Query Channel Data from ThingSpeak";
+Blockly.Msg.iotservice_thingspeak_query_api = "Set Channel API Key:";
+Blockly.Msg.iotservice_thingspeak_channel_id = "Channel ID:";
+Blockly.Msg.iotservice_thingspeak_read_total = "Get the number of data in the ThingSpeak channel";
+Blockly.Msg.iotservice_thingspeak_get_title = "Get the";
+Blockly.Msg.iotservice_thingspeaK_get_field = "Data's ";
+Blockly.Msg.iotservice_thingspeaK_get_value = "field Value from ThingSpeak";
+Blockly.Msg.iotservice_cococloud_send_title = "Send Data to CocoCloud Event";
+Blockly.Msg.iotservice_cococloud_send_title_api = "Event API Key:";
+Blockly.Msg.iotservice_cococloud_send_property = "Property Name: ";
+Blockly.Msg.iotservice_cococloud_send_property_1 = "Property Value:";
+Blockly.Msg.iotservice_cococloud_get_title = "Get Data from CocoCloud Event";
+Blockly.Msg.iotservice_cococloud_get_api = "Event API Key:";
+Blockly.Msg.iotservice_cococloud_get_property = "Get the data where property name is ";
+Blockly.Msg.iotservice_cococloud_get_data = "from CocoCloud";
+
+
+/*
+  ____            _                 
+ / ___| _   _ ___| |_ ___ _ __ ___  
+ \___ \| | | / __| __/ _ \ '_ ` _ \ 
+  ___) | |_| \__ \ ||  __/ | | | | |
+ |____/ \__, |___/\__\___|_| |_| |_|
+        |___/                                                                    
+*/
+
+
+Blockly.Msg.system_code_path = "File Path:";
+Blockly.Msg.system_get_size = "Get the Remaining Space from Module (in MegaBytes)";
+Blockly.Msg.system_get_mac = "Get Module's MAC address";
+Blockly.Msg.system_get_cocorobo_cid = "Get the Device ID of Current IoT Module";
+Blockly.Msg.iot_system_get_cocorobo_firmware_version = "Get the Current firmware version number of Current IoT Module";
+Blockly.Msg.iot_system_delete = "Delete file";
+Blockly.Msg.ai_system_get_cocorobo_firmware_version = "Get the Current firmware version number of Current AI Module";
+Blockly.Msg.ai_system_get_size = "Get the Remaining Space in Memory (in MegaBytes)";
+Blockly.Msg.ai_system_sd_get_size = "Get the Remaining Space in SD card (in MegaBytes)";
+Blockly.Msg.ai_system_thread = "Enable multithreading";
+Blockly.Msg.ai_systen_thread_val = "Parameters.";
+Blockly.Msg.ai_system_thread_setting = "Setting multithreading";
+Blockly.Msg.ai_system_thread_setDaemon = "daemon thread";
+Blockly.Msg.ai_system_thread_not_setDaemon = "non-daemon thread";
+Blockly.Msg.ai_system_thread_set_setDaemon_TOOLTIP = "Set the child thread as a daemon thread, which needs to be set before the child thread is started.";
+Blockly.Msg.ai_system_thread_set_join = "block";
+Blockly.Msg.ai_systen_queue_aritem = "Variable";
+Blockly.Msg.ai_systen_queue_put = "put in queue";
+Blockly.Msg.ai_systen_queue_get = "Getqueue";
+Blockly.Msg.ai_systen_queue_value = "value";
+
+Blockly.Msg.SYSTEM = "Restart System";
+Blockly.Msg.SYSTEM_GC = "Start memory reclaim";
+Blockly.Msg.SYSTEM_RUN = "Execute Python Code:";
+Blockly.Msg.SYSTEM_RUN_F = "Filename:";
+Blockly.Msg.SYSTEM_CREATE = "Create Text file";
+Blockly.Msg.SYSTEM_CREATE_F = "Filename:";
+Blockly.Msg.SYSTEM_WRITE = "Create Text file";
+Blockly.Msg.SYSTEM_WRITE_F = "Filename:";
+Blockly.Msg.SYSTEM_WRITE_W = "Write content:";
+Blockly.Msg.SYSTEM_WRITE_S = "The separator is:";
+Blockly.Msg.SYSTEM_WRITE_S_N = "newline";
+Blockly.Msg.SYSTEM_WRITE_S_C = "comma";
+Blockly.Msg.SYSTEM_WRITE_S_S = "space";
+Blockly.Msg.SYSTEM_WRITE_S_SE = "semicolon";
+Blockly.Msg.SYSTEM_INPUT = "Read Text File as List";
+
+
+
+
+
+/*
+  _     _____ ____    ____  _        _       
+ | |   | ____|  _ \  / ___|| |_ _ __(_)_ __  
+ | |   |  _| | | | | \___ \| __| '__| | '_ \ 
+ | |___| |___| |_| |  ___) | |_| |  | | |_) |
+ |_____|_____|____/  |____/ \__|_|  |_| .__/ 
+                                      |_|                                               
+*/
+
+
+
+Blockly.Msg.ledstrip_setup_text_iot = "On IoT Module "
+Blockly.Msg.ledstrip_setup_text_ai = "On AI Module";
+
+Blockly.Msg.ledstrip_setup_text = "RGB LED Strip";
+Blockly.Msg.ledstrip_setup = "Setup";
+Blockly.Msg.ledstrip_set_gpio = "Set GPIO # in:";
+Blockly.Msg.ledstrip_set_total_led = "Set Number of LEDs in the Strip:";
+Blockly.Msg.ledstrip_set_brightness_setup = "Set the Brightness of LED Strip to:";
+Blockly.Msg.ledstrip_set_light_up = "Set RGB LED Strip";
+Blockly.Msg.ledstrip_set_no = "Light the LED Located In:";
+Blockly.Msg.ledstrip_set_color = "Light up with Color in:";
+
+Blockly.Msg.ledstrip_setup_text_show_above_set = "Set LED Strip";
+Blockly.Msg.ledstrip_setup_text_show_above = "Display Above";
+
+Blockly.Msg.Pedometer_Init = "Initialize Pedometer";
+
+Blockly.Msg.Pedometer_Run = "Run Pedometer";
+
+Blockly.Msg.Pedometer_Get = "Get Count";
+
+Blockly.Msg.Pedometer_Init_time = "time interval";
+Blockly.Msg.Pedometer_Init_sensitivity = "sensitivit";
+
+
+
+
+Blockly.Msg.ledstrip_set_brightness_1 = "Set the Brightness of LED Strip to";
+Blockly.Msg.ledstrip_set_brightness_after = "(Range: 0~255)";
+
+
+
+
+/*
+  ____                       
+ / ___|  ___ _ ____   _____  
+ \___ \ / _ \ '__\ \ / / _ \ 
+  ___) |  __/ |   \ V / (_) |
+ |____/ \___|_|    \_/ \___/ 
+                                                                             
+*/
+
+
+Blockly.Msg.servo_setup = "IoT Module Servo Setup";
+Blockly.Msg.servo_set_gpio = "IoT Module Set Servo on GPIO #";
+Blockly.Msg.servo_rotate_to = "Rotate to";
+Blockly.Msg.servo_degree = "Degree (0˚~180˚)";
+
+Blockly.Msg.servo_setup_ai = "Servo Setup";
+Blockly.Msg.servo_set_gpio_ai = "Set Servo on GPIO #";
+Blockly.Msg.servo_rotate_to_ai = "Rotate to";
+Blockly.Msg.servo_degree_ai = "Degree (0˚~180˚)";
+
+
+/*
+  __  __       _             
+ |  \/  | ___ | |_ ___  _ __ 
+ | |\/| |/ _ \| __/ _ \| '__|
+ | |  | | (_) | || (_) | |   
+ |_|  |_|\___/ \__\___/|_|   
+
+*/
+
+
+
+Blockly.Msg.x_motor_set_motor = "IoT Module Motor Driver Setup";
+Blockly.Msg.x_motor_set_motor_turn = "IoT Module Set Motor";
+Blockly.Msg.x_motor_set_motor_speed = "'s Speed to";
+Blockly.Msg.x_motor_exec = "(-255~255) Rotating";
+Blockly.Msg.x_motor_cw = "Clockwise";
+Blockly.Msg.x_motor_acw = "Anti-Clockwise";
+Blockly.Msg.x_motor_set_motor_turns = "turns";
+
+Blockly.Msg.x_motor_set_motor_ai = "Motor Driver Setup";
+Blockly.Msg.x_motor_set_motor_turn_ai = "Set Motor";
+Blockly.Msg.x_motor_set_motor_speed_ai = "'s Speed to";
+Blockly.Msg.x_motor_exec_ai = "(0~255) Rotating";
+Blockly.Msg.x_motor_cw_ai = "Clockwise";
+Blockly.Msg.x_motor_acw_ai = "Anti-Clockwise";
+Blockly.Msg.x_motor_set_motor_turns_ai = "turns";
+
+
+
+/*
+  _     _____ ____    __  __       _        _      
+ | |   | ____|  _ \  |  \/  | __ _| |_ _ __(_)_  __
+ | |   |  _| | | | | | |\/| |/ _` | __| '__| \ \/ /
+ | |___| |___| |_| | | |  | | (_| | |_| |  | |>  < 
+ |_____|_____|____/  |_|  |_|\__,_|\__|_|  |_/_/\_\
+
+*/
+
+Blockly.Msg.x_led_matrix_setup_ai = "AI Module LED Matrix (6x6) Setup";
+Blockly.Msg.x_led_matrix_setup_ai_set_bright_1 = "Set Brigntness:";
+Blockly.Msg.x_led_matrix_setup_ai_set_bright_range = "(Range: 0~255)";
+Blockly.Msg.x_led_matrix_width_ai_set_brightness_1 = "Set Brightness to";
+
+Blockly.Msg.x_led_matrix_width_ai_x = "Column:";
+Blockly.Msg.x_led_matrix_width_ai_y = "Row:";
+Blockly.Msg.x_led_matrix_width_ai = "Width:";
+Blockly.Msg.x_led_matrix_height_ai = "Height:";
+Blockly.Msg.x_led_matrix_color_ai = "Color";
+Blockly.Msg.x_led_matrix_draw_title_ai = "AI Module LED Matrix";
+
+Blockly.Msg.x_led_matrix_draw_pixel_ai = "Draw Pixel";
+Blockly.Msg.x_led_matrix_draw_rect_ai = "Draw Rectangle";
+
+Blockly.Msg.x_led_matrix_parameter_color_ai = "Color:";
+Blockly.Msg.x_led_matrix_parameter_coord_ai = "Coordinate:";
+Blockly.Msg.x_led_matrix_parameter_size_ai = "Size:";
+
+Blockly.Msg.x_led_matrix_show_above_ai = "Show Above";
+Blockly.Msg.x_led_matrix_clear_all_ai = "Clear Screen";
+
+Blockly.Msg.x_led_matrix_setup_iot = "IoT Module LED Matrix (6x6) Setup";
+Blockly.Msg.x_led_matrix_width_iot_x = "Column:";
+Blockly.Msg.x_led_matrix_width_iot_y = "Row:";
+Blockly.Msg.x_led_matrix_width_iot = "Width:";
+Blockly.Msg.x_led_matrix_height_iot = "Height:";
+Blockly.Msg.x_led_matrix_color_iot = "Color";
+Blockly.Msg.x_led_matrix_draw_title_iot = "IoT Module LED Matrix";
+
+Blockly.Msg.x_led_matrix_setup_iot_set_bright_1 = "Set Brigntness:";
+Blockly.Msg.x_led_matrix_setup_iot_set_bright_range = "(Range: 0~255)";
+Blockly.Msg.x_led_matrix_width_iot_set_brightness_1 = "Set Brightness to";
+Blockly.Msg.x_led_matrix_setup_iot_io = "Set LED Matrix's GPIO # to:";
+
+Blockly.Msg.x_led_matrix_draw_pixel_iot = "Draw Pixel";
+
+Blockly.Msg.x_led_matrix_parameter_color_iot = "Color:";
+Blockly.Msg.x_led_matrix_parameter_coord_iot = "Coordinate:";
+
+Blockly.Msg.x_led_matrix_show_above_iot = "IoT Module LED Matrix Show Above";
+
+// Blockly.Msg.x_led_matrix_ = "";
+
+
+
+
+
+
+/*
+   ____                      ____           _ 
+  / ___| __ _ _ __ ___   ___|  _ \ __ _  __| |
+ | |  _ / _` | '_ ` _ \ / _ \ |_) / _` |/ _` |
+ | |_| | (_| | | | | | |  __/  __/ (_| | (_| |
+  \____|\__,_|_| |_| |_|\___|_|   \__,_|\__,_|
+
+*/
+
+Blockly.Msg.x_gamepad_read_button_first_text_iot = "When Game Pad Button";
+Blockly.Msg.x_gamepad_read_button_first_text_pressed_iot = " is Pressed";
+Blockly.Msg.x_gamepad_read_button_first_text_released_iot = " is Released";
+Blockly.Msg.x_gamepad_read_button_status_first_text_iot = "Read the status of Game Pad Button ";
+Blockly.Msg.x_gamepad_read_button_status_after_text_iot = "the voltage level";
+Blockly.Msg.x_gamepad_read_joystick_read_iot = "Read the ";
+Blockly.Msg.x_gamepad_read_joystick_read_iot_x = "X-axis";
+Blockly.Msg.x_gamepad_read_joystick_read_iot_y = "Y-axis";
+Blockly.Msg.x_gamepad_read_joystick_read_after_iot = " value from Game Pad Joystick (0~1023)";
+Blockly.Msg.x_gamepad_read_joystick_when_iot = "When Game Pad Joystick is ";
+Blockly.Msg.x_gamepad_read_joystick_when_top_iot = "Pushed to Top";
+Blockly.Msg.x_gamepad_read_joystick_when_bottom_iot = "Pushed to Bottom";
+Blockly.Msg.x_gamepad_read_joystick_when_left_iot = "Pushed to Left";
+Blockly.Msg.x_gamepad_read_joystick_when_right_iot = "Pushed to Right";
+Blockly.Msg.x_gamepad_read_joystick_when_not_iot = "Not Pushed to Anywhere";
+
+
+Blockly.Msg.x_gamepad_read_button_first_text_ai = "When Game Pad Button";
+Blockly.Msg.x_gamepad_read_button_first_text_pressed_ai = " is Pressed";
+Blockly.Msg.x_gamepad_read_button_first_text_released_ai = " is Released";
+Blockly.Msg.x_gamepad_read_button_status_first_text_ai = "Read the status of Game Pad Button ";
+Blockly.Msg.x_gamepad_read_button_status_after_text_ai = "the voltage level";
+Blockly.Msg.x_gamepad_read_joystick_read_ai = "Read the ";
+Blockly.Msg.x_gamepad_read_joystick_read_ai_x = "X-axis";
+Blockly.Msg.x_gamepad_read_joystick_read_ai_y = "Y-axis";
+Blockly.Msg.x_gamepad_read_joystick_read_after_ai = " value from Game Pad Joystick (0~1023)";
+Blockly.Msg.x_gamepad_read_joystick_when_ai = "When Game Pad Joystick is ";
+Blockly.Msg.x_gamepad_read_joystick_when_top_ai = "Pushed to Top";
+Blockly.Msg.x_gamepad_read_joystick_when_bottom_ai = "Pushed to Bottom";
+Blockly.Msg.x_gamepad_read_joystick_when_left_ai = "Pushed to Left";
+Blockly.Msg.x_gamepad_read_joystick_when_right_ai = "Pushed to Right";
+Blockly.Msg.x_gamepad_read_joystick_when_not_ai = "Not Pushed to Anywhere";
+
+
+/*
+     _    ___   ____            _      
+    / \  |_ _| | __ )  __ _ ___(_) ___ 
+   / _ \  | |  |  _ \ / _` / __| |/ __|
+  / ___ \ | |  | |_) | (_| \__ \ | (__ 
+ /_/   \_\___| |____/ \__,_|___/_|\___|
+*/
+
+
+Blockly.Msg.ai_basic_button_when = "When Button";
+Blockly.Msg.ai_basic_pressed = "is Pressed";
+Blockly.Msg.ai_basic_released = "is Released";
+Blockly.Msg.ai_basic_led_set = "Set";
+Blockly.Msg.ai_basic_led_blue = "Blue LED";
+Blockly.Msg.ai_basic_led_red = "LED2 (On the Right)";
+Blockly.Msg.ai_basic_led_on = "Light Up";
+Blockly.Msg.ai_basic_led_off = "Light Off";
+Blockly.Msg.ai_basic_rgb_set_on = "Turn on the RGB light and set the color to";
+Blockly.Msg.ai_basic_rgb_set_off = "Turn off RGB light";
+
+Blockly.Msg.ai_basic_led_analog_set = "Set ";
+Blockly.Msg.ai_basic_led_analog_led1 = "LED1";
+Blockly.Msg.ai_basic_led_analog_led2 = "LED2";
+Blockly.Msg.ai_basic_led_analog_brightness_text = "light up at brightness";
+Blockly.Msg.ai_basic_led_analog_range_text = "(Range: 0~100)";
+
+
+/*
+     _    ___   ___                              ____                              
+    / \  |_ _| |_ _|_ __ ___   __ _  __ _  ___  |  _ \ _ __ ___   ___ ___  ___ ___ 
+   / _ \  | |   | || '_ ` _ \ / _` |/ _` |/ _ \ | |_) | '__/ _ \ / __/ _ \/ __/ __|
+  / ___ \ | |   | || | | | | | (_| | (_| |  __/ |  __/| | | (_) | (_|  __/\__ \__ \
+ /_/   \_\___| |___|_| |_| |_|\__,_|\__, |\___| |_|   |_|  \___/ \___\___||___/___/
+                                    |___/                                          
+*/
+
+
+
+Blockly.Msg.image_process_lcd_init = "LCD Screen Setup";
+Blockly.Msg.image_process_lcd_direction = "Set screen orientation";
+Blockly.Msg.image_process_lcd_landscape_screen = "Landscape screen";
+Blockly.Msg.image_process_lcd_vertical_screen = "Portrait screen";
+Blockly.Msg.image_process_text_let_canvas = "Set Canvas";
+Blockly.Msg.image_process_text_image_canvas = "Picturization";
+Blockly.Msg.image_process_text_let_canvas_filled_with_color = "Filled With Color";
+
+Blockly.Msg.image_process_text_on_canvas = "On Canvas";
+Blockly.Msg.image_process_text_on_draw = "Draw";
+Blockly.Msg.image_text_on_draw = "Draw";
+Blockly.Msg.image_process_text_set_canvas_setup = "Set Canvas";
+Blockly.Msg.image_process_draw_qrcode = " QR code";
+Blockly.Msg.image_process_draw_qr_code_size = "QR code size";
+
+Blockly.Msg.image_process_text_filled = "Filled";
+Blockly.Msg.image_process_text_stroked = "Stroked";
+
+Blockly.Msg.image_process_statistical_chart_bar = "Bar";
+Blockly.Msg.image_process_statistical_chart_broken_line = "Broken Line";
+Blockly.Msg.image_process_statistical_chart_sector = "Sector";
+
+Blockly.Msg.image_process_sensor = "Sensor  ";
+Blockly.Msg.image_process_temperature = "Temperature";
+Blockly.Msg.image_process_humidity = "Humidity";
+Blockly.Msg.image_process_Ray_value = "Ray Value";
+Blockly.Msg.image_process_temperature_range = "Range  ";
+Blockly.Msg.image_process_nothing = "No Scope Definition(Except Temperature)";
+
+Blockly.Msg.image_process_interface = "Interface  ";
+Blockly.Msg.ai_speech_recognition_setup_set_english = "English";
+Blockly.Msg.ai_speech_recognition_setup_set_simplified_chinese = "Chinese";
+Blockly.Msg.ai_speech_recognition_setup_set_traditional_chinese = "Traditional Chinese";
+
+Blockly.Msg.image_process_text_start_coord_as = "'s Starting Coordinate as:";
+
+Blockly.Msg.image_process_text_start_coord = "Set Start Coordinate:";
+Blockly.Msg.image_process_text_end_coord = "Set End Coordinate:";
+Blockly.Msg.image_process_text_size = "Size:";
+Blockly.Msg.image_process_text_color = "Color:";
+Blockly.Msg.image_process_background_color = "BackgroundColor:";
+Blockly.Msg.image_process_text_thick = "Thickness:";
+Blockly.Msg.image_process_text_radius = "Radius:";
+Blockly.Msg.image_process_text_content = "Content";
+Blockly.Msg.image_process_statistical_chart_content = "Get the data to be drawn";
+Blockly.Msg.image_process_statistical_chart_y_property = "Define the y-axis as";
+
+Blockly.Msg.image_process_pixtovec_text_first = "Do";
+Blockly.Msg.image_process_pixtovec_v2p = "Vector to Pixel";
+Blockly.Msg.image_process_pixtovec_p2v = "Pixel to Vector";
+Blockly.Msg.image_process_pixtovec_conversion = "Conversion";
+Blockly.Msg.image_process_color_mode_gray = "Grayscale Mode";
+Blockly.Msg.image_process_color_mode_rgb = "RGB Color Mode";
+Blockly.Msg.image_process_imgcut_cutting = "Cut to:";
+Blockly.Msg.image_process_imgcut_start_coord = "Cutting Start Coordinate:";
+Blockly.Msg.image_process_imgcut_size = "Cutting Size:";
+Blockly.Msg.image_process_img_save = "Saved to Local Path:";
+Blockly.Msg.image_process_img_save_quality = "Set Image Compression Rate:";
+Blockly.Msg.image_process_color_invert = "Color Inverted";
+Blockly.Msg.image_process_resize_to = "Resize to ";
+Blockly.Msg.image_process_color_scheme_convert = "Convert to";
+Blockly.Msg.image_process_color_scheme_bw = "Black & White";
+Blockly.Msg.image_process_color_scheme_rgb = "RGB Color";
+Blockly.Msg.image_process_draw_cross_title = " Cross Sign";
+Blockly.Msg.image_process_draw_cross_centerpos = "Center Position:";
+Blockly.Msg.image_process_draw_cross_length = "Length:";
+Blockly.Msg.image_process_draw_cross_thick = "Thickness:";
+Blockly.Msg.image_process_draw_cross_color = "Color:";
+Blockly.Msg.image_process_draw_arrow_title = " Arrow";
+
+Blockly.Msg.image_process_draw_image_title = "Draw Image";
+Blockly.Msg.image_process_draw_image_title_image_path = "Set Image Path:";
+Blockly.Msg.image_process_draw_image_scale_x = "Set Length Scale by X Direction:";
+Blockly.Msg.image_process_draw_image_scale_y = "Set Height Scale by Y Direction:";
+
+Blockly.Msg.image_process_draw_sensor_image_title = "Draw Image Captured from Camera";
+Blockly.Msg.image_process_draw_sensor_image_path = "Set Image From:";
+
+Blockly.Msg.image_process_draw_arrow_start = "Start Coordinate:";
+Blockly.Msg.image_process_draw_arrow_end = "End Coordinate:";
+Blockly.Msg.image_process_draw_arrow_color = "Color:";
+Blockly.Msg.image_process_draw_arrow_thick = "Thickness:";
+Blockly.Msg.image_process_draw_rectangle_text = "Rectangle";
+Blockly.Msg.image_process_draw_circle_text = "Circle";
+Blockly.Msg.image_process_draw_ellipse_text = "Ellipse";
+Blockly.Msg.image_process_draw_circle_text_start = "Center coordinates";
+Blockly.Msg.image_process_draw_text_font_size = "Text Size: (Integer from 1 to 3)";
+Blockly.Msg.image_process_draw_text_if_monospace = "Set Monospace";
+Blockly.Msg.image_process_draw_text = " Text";
+Blockly.Msg.image_process_draw_statistical_chart = " Statistical chart";
+Blockly.Msg.image_process_draw_characters = " Hanzi Characters";
+Blockly.Msg.image_process_draw_line = " Line";
+Blockly.Msg.image_process_create_blank_canvas = "Create Blank Canvas:";
+Blockly.Msg.image_process_create_image_canvas = "Create Image Canvas:";
+Blockly.Msg.image_process_create_image_canvas_path = "Load Image from Path:";
+Blockly.Msg.image_process_show_canvas = "Show Canvas";
+Blockly.Msg.image_process_clear_canvas_1 = "Clear Canvas";
+Blockly.Msg.image_process_clear_canvas_2 = "All Content";
+
+Blockly.Msg.image_process_set_lcd_rotation = "Rotation to";
+Blockly.Msg.image_process_set_lcd_mirror_flip = "Set LCD Screen Mirror Flip";
+Blockly.Msg.image_process_set_filled_screen_color = "Set LCD Filled with Color in ";
+Blockly.Msg.image_process_set_filled_screen_color_red = "Red";
+Blockly.Msg.image_process_set_filled_screen_color_green = "Green";
+Blockly.Msg.image_process_set_filled_screen_color_blue = "Blue";
+Blockly.Msg.image_process_set_filled_screen_color_purple = "Purple";
+Blockly.Msg.image_process_set_filled_screen_color_cyan = "Cyan";
+Blockly.Msg.image_process_set_filled_screen_color_orange = "Orange";
+Blockly.Msg.image_process_set_filled_screen_color_yellow = "Yellow";
+Blockly.Msg.image_process_set_filled_screen_color_black = "Black";
+Blockly.Msg.image_process_set_filled_screen_color_white = "White";
+Blockly.Msg.image_process_clear_lcd = "Clear LCD Screen";
+Blockly.Msg.image_process_rgb_r = "Red";
+Blockly.Msg.image_process_rgb_g = "Green";
+Blockly.Msg.image_process_rgb_b = "Blue";
+Blockly.Msg.image_process_xy_x = "X";
+Blockly.Msg.image_process_xy_y = "Y";
+Blockly.Msg.image_process_wh_width = "Width";
+Blockly.Msg.image_process_wh_height = "Height";
+Blockly.Msg.image_process_lcd_show_text = "Display Text on LCD Screen";
+Blockly.Msg.image_process_lcd_show_text_color = "Text Color:";
+Blockly.Msg.image_process_lcd_show_text_bg_color = "Text Backgorund Color:";
+Blockly.Msg.image_process_lcd_show_text_color_red = "Red";
+Blockly.Msg.image_process_lcd_show_text_color_green = "Green";
+Blockly.Msg.image_process_lcd_show_text_color_blue = "Blue";
+Blockly.Msg.image_process_lcd_show_text_color_purple = "Purple";
+Blockly.Msg.image_process_lcd_show_text_color_cyan = "Cyan";
+Blockly.Msg.image_process_lcd_show_text_color_orange = "Orange";
+Blockly.Msg.image_process_lcd_show_text_color_yellow = "Yellow";
+Blockly.Msg.image_process_lcd_show_text_color_black = "Black";
+Blockly.Msg.image_process_lcd_show_text_color_white = "White";
+Blockly.Msg.image_process_get_statistics_to_canvas = "Get the Analyzed Result of Color Channel from Canvas:";
+Blockly.Msg.image_process_get_statistics_get_analysis = "The result of analyzing color channel information";
+Blockly.Msg.image_process_get_statistics_start_coord = "Set the Start Coordinate of Analyzing Region:";
+Blockly.Msg.image_process_get_statistics_size = "Set the Size of Analyzing Region:";
+Blockly.Msg.image_process_get_statistics_boxes = "Set the Bin Count of the Histogram Channel:";
+Blockly.Msg.image_process_lab_rgb_conversion_exec = "Run Color Mode Conversion";
+Blockly.Msg.image_process_lab_rgb_conversion_torgb = "LAB to RGB";
+Blockly.Msg.image_process_lab_rgb_conversion_tolab = "RGB to LAB";
+Blockly.Msg.image_process_lab_rgb_conversion_tuple = "Set the tuple source:";
+Blockly.Msg.image_process_rgb_grayscale_conversion_exec = "Run Color Mode Conversion";
+Blockly.Msg.image_process_rgb_grayscale_conversion_torgb = "Grayscale to RGB Color";
+Blockly.Msg.image_process_rgb_grayscale_conversion_togray = "RGB Color to Grayscale";
+Blockly.Msg.image_process_rgb_grayscale_conversion_set = "Set the tuple/value source:";
+Blockly.Msg.image_lcd_set_font = "Set the font to";
+
+
+/*
+     _    ___    ____                               
+    / \  |_ _|  / ___|__ _ _ __ ___   ___ _ __ __ _ 
+   / _ \  | |  | |   / _` | '_ ` _ \ / _ \ '__/ _` |
+  / ___ \ | |  | |__| (_| | | | | | |  __/ | | (_| |
+ /_/   \_\___|  \____\__,_|_| |_| |_|\___|_|  \__,_|
+
+*/
+
+
+Blockly.Msg.ai_camera_camera_init = "Camera Setup";
+Blockly.Msg.ai_camera_camera_set_size = "Set Image Capturing Size:";
+
+Blockly.Msg.ai_camera_camera_fit_set = "Set the Size of Captured Image";
+Blockly.Msg.ai_camera_camera_fit_to = "to";
+Blockly.Msg.ai_camera_camera_fit_1 = "Fit in Screen (240*240px)";
+Blockly.Msg.ai_camera_camera_fit_2 = " Fit for A.I. Model Inference (224*224px)";
+
+Blockly.Msg.ai_camera_camera_color_mode = "Set Image Capturing Color Mode:";
+Blockly.Msg.ai_camera_camera_color_mode_rgb = "Colorful";
+Blockly.Msg.ai_camera_camera_color_mode_bw = "Black & White";
+Blockly.Msg.ai_camera_windowing_resize = "Set Captured Image to a Windowing Size";
+Blockly.Msg.ai_camera_windowing_w = "Width:";
+Blockly.Msg.ai_camera_windowing_h = "Height:";
+Blockly.Msg.ai_camera_windowing_unit = " (in px)";
+Blockly.Msg.ai_camera_snapshot = "Get the Image Captured from Camera";
+Blockly.Msg.ai_camera_enable = "Enable";
+Blockly.Msg.ai_camera_disable = "Disable";
+Blockly.Msg.ai_camera_set_vflip = "Set Camera Source Image Vertically Flipped";
+Blockly.Msg.ai_camera_set_hmirror = "Set Camera Source Image Horizontally Mirrored";
+Blockly.Msg.ai_camera_set_auto_whitebal = "Set Camera Source Image Auto White Balanced";
+Blockly.Msg.ai_camera_set_auto_gain = "Set Camera Source Image Auto Gained";
+Blockly.Msg.ai_camera_set_auto_exposure = "Set Camera Source Image Auto Exposured";
+Blockly.Msg.ai_camera_set_contrast_to_value = "Set Camera Source Image's Contrast to:";
+Blockly.Msg.ai_camera_set_brightness_to_value = "Set Camera Source Image's Brightness to:";
+Blockly.Msg.ai_camera_set_saturation_value = "Set Camera Source Image's Saturation to:";
+Blockly.Msg.ai_camera_set_range = " (value from -3 to 3))";
+
+Blockly.Msg.ai_camera_set_lens_corr = "Set Lens Correction from";
+
+Blockly.Msg.ai_camera_bcs_set_text = "Set Camera Source Image's ";
+Blockly.Msg.ai_camera_bcs_contrast = "Contrast";
+Blockly.Msg.ai_camera_bcs_brightness = "Brightness";
+Blockly.Msg.ai_camera_bcs_saturation = "Saturation";
+Blockly.Msg.ai_camera_bcs_as = "to:";
+Blockly.Msg.ai_camera_bcs_set_text_2 = "Set Camera Source Image ";
+Blockly.Msg.ai_camera_bcs_vflip = "Vertically Flipped";
+Blockly.Msg.ai_camera_bcs_hmirror = "Horizontally Mirrored";
+Blockly.Msg.ai_camera_bcs_wb = "Auto White Balance Mode";
+Blockly.Msg.ai_camera_bcs_g = "Auto Gain Mode";
+Blockly.Msg.ai_camera_bcs_e = "Auto Exposure Mode";
+Blockly.Msg.ai_camera_bcs_as_2 = "to ";
+Blockly.Msg.ai_camera_bcs_status = "d";
+
+/*
+     _    ___  __     ___     _             
+    / \  |_ _| \ \   / (_)___(_) ___  _ __  
+   / _ \  | |   \ \ / /| / __| |/ _ \| '_ \ 
+  / ___ \ | |    \ V / | \__ \ | (_) | | | |
+ /_/   \_\___|    \_/  |_|___/_|\___/|_| |_|
+                                            
+*/
+
+
+Blockly.Msg.ai_vision_get_canvas = "From Canvas";
+Blockly.Msg.ai_vision_from_canvas = "From Canvas";
+Blockly.Msg.ai_vision_from = "From";
+
+Blockly.Msg.ai_vision_color_analyze_get_result = "Get the Color Analyze Result from Selected Region";
+Blockly.Msg.ai_vision_color_analyze_start_coord = "Set the start coordinate of the analyze region:";
+Blockly.Msg.ai_vision_color_analyze_size = "Set the size of the analyze region:";
+Blockly.Msg.ai_vision_find_blobs_color_region = "Find Desginated Color Range";
+Blockly.Msg.ai_vision_find_lines_color_region = "Looks for the specified color line";
+Blockly.Msg.ai_vision_find_lines_color_region_result = "Gets the result of finding a line";
+Blockly.Msg.ai_vision_find_blobs_color_threshold = "Set the color threshold for tracking:";
+Blockly.Msg.ai_vision_find_blobs_start_coord = "Set the start coordinate of the analyze region:";
+Blockly.Msg.ai_vision_find_blobs_size = "Set the size of the analyze region:";
+Blockly.Msg.ai_vision_find_blobs_region_threshold = "Set the threshold for bounding box region:";
+Blockly.Msg.ai_vision_find_blobs_pixel_threshold = "Set pixel threshold:";
+Blockly.Msg.ai_vision_find_blobs_filtered_region = "Merge all unfiltered color blobs";
+Blockly.Msg.ai_vision_get_blobs_result = "Get the Color Tracking Result's";
+Blockly.Msg.ai_vision_detection_box_x = "X-axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_vision_detection_box_y = "Y axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_vision_detection_box_width = "X-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_vision_detection_box_height = "Y-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_vision_detection_box_pixels = "Total Pixel Counts from a part of the Color blob";
+Blockly.Msg.ai_vision_detection_box_cx = "X Coordinate of the Center Position of the Bounding Box";
+Blockly.Msg.ai_vision_detection_box_cy = "Y Coordinate of the Center Position of the Bounding Box";
+Blockly.Msg.ai_vision_detection_box_degree = "Rotation Degree";
+Blockly.Msg.ai_vision_detection_box_total = "Total Counts";
+Blockly.Msg.ai_vision_find_blobs_margin = "Margin";
+Blockly.Msg.ai_vision_detection_color_threshold_set = "Get Default Color of";
+Blockly.Msg.ai_vision_detection_color_threshold_set_black = "Black";
+Blockly.Msg.ai_vision_detection_color_threshold_set_white = "White";
+Blockly.Msg.ai_vision_detection_color_threshold_set_red = "Light Red";
+Blockly.Msg.ai_vision_detection_color_threshold_set_green = "General Green";
+Blockly.Msg.ai_vision_detection_color_threshold_set_blue = "Light Blue";
+Blockly.Msg.ai_vision_detection_color_threshold_set_orange = "Orange";
+
+
+Blockly.Msg.ai_vision_qrcode_detected_result = "Get QR Code Detected Result";
+Blockly.Msg.ai_vision_apriltag_detected_result = "Get AprilTag Detected Result";
+Blockly.Msg.ai_vision_datamatrices_detected_result = "Get Data Matrices Detected Result";
+Blockly.Msg.ai_vision_barcode_detected_result = "Get Barcode Detected Result";
+
+Blockly.Msg.ai_vision_qrcode_get_result = "Get the detected QR Code's ";
+Blockly.Msg.ai_vision_apriltag_get_result = "Get the detected AprilTag's ";
+Blockly.Msg.ai_vision_data_matrices_get_result = "Get the detected Data Matrices' ";
+Blockly.Msg.ai_vision_barcode_matrices_get_result = "Get the detected Barcode's ";
+
+Blockly.Msg.ai_vision_pattern_detection_content = "Decoded Text";
+Blockly.Msg.ai_vision_pattern_detection_type = "Data Type";
+Blockly.Msg.ai_vision_pattern_detection_x = "X-axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_vision_pattern_detection_y = "Y axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_vision_pattern_detection_w = "X-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_vision_pattern_detection_h = "Y-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_vision_pattern_distance = "Distance";
+Blockly.Msg.ai_vision_pattern_detection_type_id = "Numeric ID";
+Blockly.Msg.ai_vision_pattern_detection_type_family = "Numeric Family";
+Blockly.Msg.ai_vision_pattern_detection_rows = "Row Counts";
+Blockly.Msg.ai_vision_pattern_detection_cols = "Column Counts";
+Blockly.Msg.ai_vision_pattern_detection_can_tolerate_count = "Characters could fit in this data matrix";
+Blockly.Msg.ai_vision_pattern_detection_can_not_tolerate_count = "Unused characters are in this data matrix";
+
+Blockly.Msg.ai_vision_find_circle = "Find Circle";
+Blockly.Msg.ai_vision_find_circle_start_coord = "Set start coordinate of the analyzing region:";
+Blockly.Msg.ai_vision_find_circle_region_size = "Set the size of the analyzing region:";
+Blockly.Msg.ai_vision_find_circle_hoffman_threshold = "Set the threshold of detected circle:";
+Blockly.Msg.ai_vision_find_circle_merge_x = "Set the X margin of the detected circle:";
+Blockly.Msg.ai_vision_find_circle_merge_y = "Set the Y margin of the detected circle:";
+Blockly.Msg.ai_vision_find_circle_merge_r = "Set the T margin of the detected circle:";
+Blockly.Msg.ai_vision_find_circle_min_radius = "Set the minimum radius to detect the Circle:";
+Blockly.Msg.ai_vision_find_circle_max_radius = "Set the maximum radius to detect the Circle:";
+Blockly.Msg.ai_vision_find_circle_step_radius = "Set step the radius detection by:";
+Blockly.Msg.ai_vision_find_circle_detected_result = "Get the detected Circle's ";
+Blockly.Msg.ai_vision_find_circle_detected_x = "X Coordinate of the Detected Circle";
+Blockly.Msg.ai_vision_find_circle_detected_y = "Y Coordinate of the Detected Circle";
+Blockly.Msg.ai_vision_find_circle_detected_radius = "Radius of the Detected Circle";
+
+
+Blockly.Msg.ai_vision_find_line = "Find Line";
+Blockly.Msg.ai_vision_find_line_start_coord = "Set start coordinate of the analyzing region:";
+Blockly.Msg.ai_vision_find_line_size = "Set the size of the analyzing region:";
+Blockly.Msg.ai_vision_find_line_hoffman_threshold = "Set the threshold of detected line:";
+Blockly.Msg.ai_vision_find_line_merge_theta = "Set merging of detected lines (theta):";
+Blockly.Msg.ai_vision_find_line_merge_rho = "Set merging of detected lines (rho):";
+Blockly.Msg.ai_vision_find_line_detected_result = "Get the detected Line's ";
+Blockly.Msg.ai_vision_find_line_detected_start_x = "X Coordinate of the Start Position of the Detected Line";
+Blockly.Msg.ai_vision_find_line_detected_start_y = "Y Coordinate of the Start Position of the Detected Line";
+Blockly.Msg.ai_vision_find_line_detected_end_x = "X Coordinate of the End Position of the Detected Line";
+Blockly.Msg.ai_vision_find_line_detected_end_y = "Y Coordinate of the End Position of the Detected Line";
+Blockly.Msg.ai_vision_find_line_detected_length = "Length of the detected Line";
+Blockly.Msg.ai_vision_find_line_detected_angle = "Rotation Degree of the detected Line";
+
+Blockly.Msg.ai_vision_find_rect = "Find Rectangle";
+Blockly.Msg.ai_vision_find_rect_start_coord = "Set start coordinate of the analyzing region:";
+Blockly.Msg.ai_vision_find_rect_region_size = "Set the size of the analyzing region:";
+Blockly.Msg.ai_vision_find_rect_bounding_threshold = "Set the threshold value of the rectangle's border:";
+Blockly.Msg.ai_vision_find_rect_detected_result = "Get the detected Rectangle's ";
+Blockly.Msg.ai_vision_find_rect_detected_tuple = "Rectangle tuple (x, y, width, height) of detected Rectangle";
+Blockly.Msg.ai_vision_find_rect_detected_corners = "X & Y Coordinate for Each Corner of the Rectangle";
+Blockly.Msg.ai_vision_find_rect_detected_x = "X coordinate of detected Rectangle";
+Blockly.Msg.ai_vision_find_rect_detected_y = "Y coordinate of detected Rectangle";
+Blockly.Msg.ai_vision_find_rect_detected_w = "Width of detected Rectangle";
+Blockly.Msg.ai_vision_find_rect_detected_h = "Height of detected Rectangle";
+
+Blockly.Msg.ai_vision_get_histogram_get = "Get Canvas";
+Blockly.Msg.ai_vision_get_histogram_compute = "Compute the Normalized Histogram";
+Blockly.Msg.ai_vision_get_histogram_region = "Set Color Tracking Region:";
+Blockly.Msg.ai_vision_get_histogram_region_xy = "Region Coordinate:";
+Blockly.Msg.ai_vision_get_histogram_region_wh = "Region Size:";
+Blockly.Msg.ai_vision_get_histogram_details_1 = "From Histogram";
+Blockly.Msg.ai_vision_get_histogram_details_get = "Get Computed CDF of the histogram channels (%)";
+
+Blockly.Msg.ai_vision_get_histogram_percentile_1 = "From Percentile";
+Blockly.Msg.ai_vision_get_histogram_percentile_2 = "Get";
+Blockly.Msg.ai_vision_get_histogram_percentile_3 = "The grayscale percentile value";
+Blockly.Msg.ai_vision_get_histogram_percentile_4 = "The RGB565 LAB L channel percentile value";
+Blockly.Msg.ai_vision_get_histogram_percentile_5 = "The RGB565 LAB A channel percentile value";
+Blockly.Msg.ai_vision_get_histogram_percentile_6 = "The RGB565 LAB B channel percentile value";
+
+
+Blockly.Msg.ai_vision_canvas_area_tuple = "Create Area Tuple";
+Blockly.Msg.ai_vision_canvas_area_tuple_xy = "Set Starting Coordinate:";
+Blockly.Msg.ai_vision_canvas_area_tuple_wh = "Set Size:";
+Blockly.Msg.ai_vision_lane_tracking_setup = "Lane  Detection Setup";
+Blockly.Msg.ai_vision_lane_tracking_setup_threshold = "Set the color to track";
+Blockly.Msg.ai_vision_lane_tracking_setup_l = "Set Left Detection Area:";
+Blockly.Msg.ai_vision_lane_tracking_setup_r = "Set Right Detection Area:";
+Blockly.Msg.ai_vision_lane_tracking_setup_axis = "Set the Position of Central axis:";
+Blockly.Msg.ai_vision_lane_tracking_run = "Run Lane Detection Process";
+Blockly.Msg.ai_vision_lane_tracking_run_get = "From Lane Detection Result Get ";
+Blockly.Msg.ai_vision_lane_tracking_run_ld = "Left Area Detection";
+Blockly.Msg.ai_vision_lane_tracking_run_lv = "Left Area Offset Value";
+Blockly.Msg.ai_vision_lane_tracking_run_rd = "Right Area Detection";
+Blockly.Msg.ai_vision_lane_tracking_run_rv = "Right Area Offset Value";
+
+
+
+/*
+     _    ___   __  __ _                      _                      
+    / \  |_ _| |  \/  (_) ___ _ __ ___  _ __ | |__   ___  _ __   ___ 
+   / _ \  | |  | |\/| | |/ __| '__/ _ \| '_ \| '_ \ / _ \| '_ \ / _ \
+  / ___ \ | |  | |  | | | (__| | | (_) | |_) | | | | (_) | | | |  __/
+ /_/   \_\___| |_|  |_|_|\___|_|  \___/| .__/|_| |_|\___/|_| |_|\___|
+                                       |_|                           
+ */
+
+
+Blockly.Msg.ai_microphone_init = "Microphone Setup";
+Blockly.Msg.ai_microphone_start_spectrum_analyze = "Start Reading Spectrum Analyze Result";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result = "Get the Spectrum Analyzing Result: ";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_1 = "Low Pitch 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_2 = "Low Pitch 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_3 = "Middle-low Pitch 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_4 = "Middle-low Pitch 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_5 = "Middle-high Pitch 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_6 = "Middle-high Pitch 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_7 = "High Pitch 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_8 = "High Pitch 2";
+Blockly.Msg.ai_mphone_Record_audio_init = "Microphone recording audio initialization";
+Blockly.Msg.ai_mphone_Record_audio_start = "Start Audio Record";
+Blockly.Msg.ai_mphone_Record_audio_start_path = "Set audio file saved path:";
+Blockly.Msg.ai_mphone_Record_audio_start_time = "Set recording time(s):";
+Blockly.Msg.ai_audio_stop_recording = "Stop recording audio";
+
+/*
+     _    ___      _             _ _       
+    / \  |_ _|    / \  _   _  __| (_) ___  
+   / _ \  | |    / _ \| | | |/ _` | |/ _ \ 
+  / ___ \ | |   / ___ \ |_| | (_| | | (_) |
+ /_/   \_\___| /_/   \_\__,_|\__,_|_|\___/
+*/
+
+
+Blockly.Msg.ai_audio_play_music_file = "Play Audio Files(Single tune circulation)";
+Blockly.Msg.ai_audio_play_music_file_list_loop = "Play Audio Files(Sequential play)";
+Blockly.Msg.ai_audio_play_music_file_list_random = "Play Audio Files(Random play)";
+Blockly.Msg.ai_audio_play_music_file_set_vol = "Set Volume:";
+Blockly.Msg.ai_audio_play_music_file_set_file_path = "To load the music file, go to:";
+Blockly.Msg.ai_audio_play_music_file_set_files_list = "Audio file list:";
+Blockly.Msg.ai_audio_play_music_file_set_first_index = "Starting point:";
+Blockly.Msg.ai_audio_files_list_set_file_path = "Current path:";
+Blockly.Msg.ai_audio_get_play_status = "Get the play state of playing file";
+Blockly.Msg.ai_audio_end_play = "End audio playing";
+Blockly.Msg.ai_audio_start_play = "audio playing";
+Blockly.Msg.ai_audio_init = "Speaker Setup";
+Blockly.Msg.ai_audio_set_music_vol = "Set Playing Volume:";
+Blockly.Msg.ai_audio_files_list = "Get a list of audio files";
+
+Blockly.Msg.ai_speech_recognition_setup = "Speech Recognition Setup";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi = "Set Background Noise Sensitivity:";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_normal = "Normal";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_high = "High";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_ehigh = "Extra High";
+Blockly.Msg.ai_speech_recognition_start_recording = "Speech Recognition: Start Recording Voice Samples";
+Blockly.Msg.ai_speech_recognition_start_recording_clip_text = "Set the total number of voice clip(s):";
+Blockly.Msg.ai_speech_recognition_start_recording_clip_note = "(No more than 6)";
+Blockly.Msg.ai_speech_recognition_start_recording_take_text = "Set the total count of sample(s) for each clip:";
+Blockly.Msg.ai_speech_recognition_start_recording_take_note = "(No more than 4)";
+Blockly.Msg.ai_speech_recognition_start_recognizing = "Speech Recognition: Start Recognition";
+Blockly.Msg.ai_speech_recognition_any_result_text = "When Speech Recognition Has Any Result";
+Blockly.Msg.ai_speech_recognition_any_result_text_do = "Do";
+Blockly.Msg.ai_speech_recognition_get_result = "Speech Recognition Result is Clip #";
+Blockly.Msg.ai_speech_recognition_get_result_after = "code snippet";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_setup = "Phonetic to Pinyin initialization";
+Blockly.Msg.ai_speech_recognition_setup_pinyin = "Set pinyin";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result = "Get the result of speech to pinyin";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param = "Set phonetic recognition parameters";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_1 = "Set priority";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_start_recognition = "Speech Recognition: Start Phonetic Recognition";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition = "Speech Recognition: End Phonetic Recognition";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition = "Clear phonetic pinyin recognition";
+Blockly.Msg.speech_recognition_number_of_recordings = "Number of clips recorded ";
+Blockly.Msg.speech_recognition_In_recording = "on the record ";
+Blockly.Msg.speech_recognition_Recorded_successfully = "Successfully recorded segment ";
+Blockly.Msg.speech_recognition_Start_speech_recognition = "Record the speech clip and identify the display in";
+Blockly.Msg.speech_recognition_Start_speech_recognition_title = "Record the speech snippet and identify the display";
+Blockly.Msg.speech_recognition_Speech_recognition_result = "Speech Recognition Result ";
+Blockly.Msg.speech_recognition_Clean_up_the_last_study_result = "Clean up the last study result";
+Blockly.Msg.speech_recognition_Recognition_success = "Recognition success";
+Blockly.Msg.speech_recognition_Recognition_fail = "Recognition failure";
+
+/*
+     _    ___  __     ___     _            
+    / \  |_ _| \ \   / (_) __| | ___  ___  
+   / _ \  | |   \ \ / /| |/ _` |/ _ \/ _ \ 
+  / ___ \ | |    \ V / | | (_| |  __/ (_) |
+ /_/   \_\___|    \_/  |_|\__,_|\___|\___/ 
+*/
+
+
+Blockly.Msg.ai_video_start_recording = "Start Video Record";
+Blockly.Msg.ai_video_start_recording_file_path = "Set video file saved path:";
+Blockly.Msg.ai_video_start_recording_width = "Set Video Width (in px):";
+Blockly.Msg.ai_video_start_recording_height = "Set Video Height (in px):";
+Blockly.Msg.ai_video_to_canvas = "Start Recording on Canvas";
+Blockly.Msg.ai_video_record = "recording";
+Blockly.Msg.ai_video_stop_recording = "Stop Video Recording";
+Blockly.Msg.ai_video_play_video = "Play Video File";
+Blockly.Msg.ai_video_play_video_2 = "Note: Only Support 320*240 Resolution";
+Blockly.Msg.ai_video_play_video_file_path = "Load Video file from path:";
+Blockly.Msg.ai_video_stop_video_playing = "Stop Playing Video";
+Blockly.Msg.ai_video_get_video_playing_status = "Get Current Playing Status";
+Blockly.Msg.ai_video_recording_and_save = "Record video file and save ";
+Blockly.Msg.ai_video_set_play = "Video file playing";
+Blockly.Msg.ai_video_set_play_stats = "Video Properties";
+Blockly.Msg.ai_video_set_play_init = "Video initialization";
+
+/*
+     _    ___   __  __           _      _     
+    / \  |_ _| |  \/  | ___   __| | ___| |___ 
+   / _ \  | |  | |\/| |/ _ \ / _` |/ _ \ / __|
+  / ___ \ | |  | |  | | (_) | (_| |  __/ \__ \
+ /_/   \_\___| |_|  |_|\___/ \__,_|\___|_|___/
+*/
+
+
+Blockly.Msg.ai_models_from = "From";
+
+Blockly.Msg.ai_models_init_title = "Initialize Preset A.I. Model:";
+Blockly.Msg.ai_model_allinit_language = "Set language as:";
+Blockly.Msg.ai_models_load_title = "Load Preset A.I. Model:";
+Blockly.Msg.ai_models_init_hand_written_model = "Handwritten Digit Recognition";
+Blockly.Msg.ai_models_init_object_model = "Object Detection Model";
+Blockly.Msg.ai_models_init_guesswork_model = "Guesswork recognition model";
+Blockly.Msg.ai_models_guesswork_model_if = "Test with guessing results";
+Blockly.Msg.ai_models_guesswork_model_get = "Obtain the results of the detected fist guessing";
+Blockly.Msg.ai_model_guesswork_look_attribute = "Guessing hand gesture attribute";
+Blockly.Msg.ai_models_init_object_model_title = "Object Detection Model(aeroplane,bicycle,bird,boat,bottle,bus,car,cat,chair,cow,diningtable,dog,horse,motorbike,person,pottedplant,sheep,sofa,train,tvmonitor)";
+Blockly.Msg.ai_models_init_face_model = "Face Detection Model";
+Blockly.Msg.ai_camera_camera_fit_set1 = "Set Captured Image:";
+Blockly.Msg.ai_models_init_source = "Recognize from:";
+Blockly.Msg.ai_models_init_source_written = "Recognize Hand-written from:";
+Blockly.Msg.ai_models_hand_written_model_result = "Get the Hand-written Digit recognition result";
+Blockly.Msg.ai_models_hand_written_model_number = "Get the number recognized (from 0 to 9)";
+Blockly.Msg.ai_models_hand_written_model_confidence = "Get the confidence rate of the number recognized (%)";
+Blockly.Msg.ai_model_digital = "Tested Digital attribute";
+Blockly.Msg.ai_model_digital_attribute = "The number is detected";
+Blockly.Msg.ai_models_object_model_if = "Recognized Any tested Object";
+Blockly.Msg.ai_models_object_model_get = "Get the recognized tested Object's";
+Blockly.Msg.ai_model_look_attribute = "Tested Objects attribute";
+Blockly.Msg.ai_models_object_model_name = "Name";
+Blockly.Msg.ai_models_object_model_x = "X-axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_models_object_model_y = "Y axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_models_object_model_w = "X-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_models_object_model_h = "Y-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_models_object_model_count = "Total Number";
+Blockly.Msg.ai_models_object_model_index = "Index";
+Blockly.Msg.ai_models_object_model_confidence = "Confidence Rate";
+Blockly.Msg.ai_models_face_model_if_new = "Face recognized";
+Blockly.Msg.ai_model_face_attribute_new = "Face recognition properties";
+Blockly.Msg.ai_models_face_model_if = "Recognized Any Human Face";
+Blockly.Msg.ai_model_face_attribute = "Face attribute";
+Blockly.Msg.ai_models_face_model_get = "Get the recognized Humand Face";
+Blockly.Msg.ai_models_face_model_x = "X-axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_models_face_model_y = "Y axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_models_face_model_w = "X-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_models_face_model_h = "Y-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_models_face_model_ws = "Width of the bounding box";
+Blockly.Msg.ai_models_face_model_hs = "Height of the bounding box";
+Blockly.Msg.ai_models_face_model_rect = "the bounding box";
+Blockly.Msg.ai_models_face_model_count = "Total Number";
+Blockly.Msg.ai_models_face_model_index = "Index";
+Blockly.Msg.ai_models_face_model_confidence = "Confidence Rate";
+Blockly.Msg.ai_models_face_model_confidence_1 = "Confidence (face detection)";
+Blockly.Msg.ai_model_human_attribute = "Human Body Attribute ";
+Blockly.Msg.ai_models_human_model_if = "Human body detected ";
+Blockly.Msg.ai_models_human_model_get = "Obtain detected human body ";
+Blockly.Msg.ai_models_init_humane_model = "human body detection model ";
+Blockly.Msg.ai_model_customized_init_setup_definition = "Setup for Loading Customized A.I. Model";
+Blockly.Msg.ai_models_customized_init_setup_title = "Initialize A.I. Model";
+Blockly.Msg.ai_model_customized_load_setup_title = "Load Customized A.I. Model";
+Blockly.Msg.ai_models_customized_init_setup_path = "Load model file from path";
+Blockly.Msg.ai_models_customized_init_setup_source = "Recognize from:";
+Blockly.Msg.v831_transmission_init_setup_source = "Set the image source to be transferred to:";
+Blockly.Msg.v831_transmission_setup_show = "The captured camera image is transferred to the computer and displayed";
+Blockly.Msg.v831_internet_transmission_setup_show = "Display the captured camera images on the web";
+Blockly.Msg.ai_models_init_card_model = "License plate recognition model";
+Blockly.Msg.ai_models_init_card_result = "License plate result";
+Blockly.Msg.ai_models_card_if_true = "License plate detected";
+Blockly.Msg.ai_models_card_attribute = "Detected license plate attribute";
+Blockly.Msg.ai_models_card_model_get = "Get the detection of the license plate";
+
+Blockly.Msg.ai_models_customized_init_type_set = "Set Recognition Mode:";
+Blockly.Msg.ai_models_customized_init_type_set_fast = "Single Face (Fast)";
+Blockly.Msg.ai_models_customized_init_type_set_slow = "Multiple Faces (Slow)";
+
+Blockly.Msg.ai_models_customized_init_setup_name = "Define class name by list:";
+Blockly.Msg.ai_models_customized_if_got = "Recognized any object from customized model";
+Blockly.Msg.ai_model_customized_attribute = "Custom model object attribute";
+Blockly.Msg.ai_models_customized_get_result_any = "Get the recognized Object's";
+Blockly.Msg.ai_models_customized_get_result_name = "Name";
+Blockly.Msg.ai_models_customized_get_result_x = "X-axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_models_customized_get_result_y = "Y axis coordinates of the starting point of the detection box";
+Blockly.Msg.ai_models_customized_get_result_w = "X-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_models_customized_get_result_h = "Y-axis coordinates of terminal point of detection frame";
+Blockly.Msg.ai_models_customized_get_result_count = "Total Number";
+Blockly.Msg.ai_models_customized_get_result_index = "Index";
+Blockly.Msg.ai_models_customized_get_result_confidence = "Confidence Rate";
+
+Blockly.Msg.ai_model_face_setup = "Customized Face Recognition";
+Blockly.Msg.ai_model_face = "Initializing face recognition model";
+Blockly.Msg.ai_face_detection_model = "Initialize face detection model";
+Blockly.Msg.ai_face_point_detection_model = "Initialization of face 5-point key point detection model";
+Blockly.Msg.ai_face_Vitter_eigenvalue_model = "Initialization of face 196 Vitter eigenvalue model";
+Blockly.Msg.ai_model_Calculation_of_196_eigenvalues = "Calculate 196 dimension eigenvalues of running face feature model";
+
+Blockly.Msg.ai_model_face_start_recognition = "Loading face detection model, ";
+Blockly.Msg.ai_model_face_model_load_finish = "Face detection model loading completed";
+Blockly.Msg.ai_model_face_load_point_detection_model = "Loading face 5-point key point detection model, ";
+Blockly.Msg.ai_model_face_load_point_detection_model_1 = "Get face image and save it to";
+Blockly.Msg.ai_model_face_load_point_detection_model_2 = "Set face detection box to";
+Blockly.Msg.ai_model_face_gather = "Gather new face data and save face data";
+Blockly.Msg.ai_model_face_gather_1 = "Save the face data and save the data in the file, the path is:";
+Blockly.Msg.ai_model_face_data_load = "Load saved face data";
+Blockly.Msg.ai_model_face_data_load_1 = "Set path to /sd/user to load face data fileName";
+Blockly.Msg.ai_model_face_model_list = "Face detection attribute";
+Blockly.Msg.ai_model_face_gather_num_judge = "Completed the face acquisition";
+Blockly.Msg.ai_model_face_recognition = "Gather or load face data and carry out face recognition";
+Blockly.Msg.ai_model_face_recognition_get_result = "Face recognition gets arbitrary results";
+Blockly.Msg.ai_model_show_face = "Image processing and display";
+Blockly.Msg.v831_face_recognition_load = "Load face recognition model, ";
+Blockly.Msg.v831_face_recognition_load_title = "Load the face model and set the image source to be detected ";
+Blockly.Msg.v831_setting_face_data_save = "Sets face data to save: ";
+Blockly.Msg.face_recognition_map_face_canvas = "On the canvas";
+Blockly.Msg.face_recognition_map_face_show = "Display control";
+Blockly.Msg.face_recognition_map_face_key_point = "Face key points";
+Blockly.Msg.v831_setting_face_data_save_title = "Set face data to save ";
+Blockly.Msg.v831_setting_face_data_remove = "Delete last saved face data";
+Blockly.Msg.v831_setting_face_data_remove_title = "Delete last saved face data ";
+Blockly.Msg.v831_face_recognition_result = "Image source recognition result: ";
+Blockly.Msg.v831_face_recognition_result_title = "Image source recognition Result ";
+Blockly.Msg.v831_model_face_name = "Name of face";
+Blockly.Msg.v831_models_face_model_confidence = "Confidence (face recognition)";
+
+Blockly.Msg.ai_model_class_setup = "Customized Object Recognition";
+Blockly.Msg.ai_class_model = "Initialize custom object feature extraction model";
+Blockly.Msg.ai_class_model_cluster = "Initialize custom object clustering parameters";
+Blockly.Msg.ai_model_class_start_load = "and process the image";
+Blockly.Msg.ai_model_class_gather = "Start gathering object";
+Blockly.Msg.ai_model_class_data_load = "Loading object data";
+Blockly.Msg.ai_model_class_data_load_1 = "Set path to /sd/user to load object data fileName";
+Blockly.Msg.ai_model_class_gather_load_finish = "Collect or load object data";
+Blockly.Msg.ai_model_class_cluster_train = "Start extract object features, and then cluster training";
+Blockly.Msg.ai_model_class_cluster_train_1 = "Set the fileName for saving object data to /sd/user";
+Blockly.Msg.ai_model_class_recognition = "Start object recognition";
+
+Blockly.Msg.ai_model_face_name = "Set the name of the model recognition object:";
+
+
+Blockly.Msg.ai_model_class = "Custom Initializing class recognition model";
+
+Blockly.Msg.ai_model_class_name = "Set the name of the model recognition object:";
+
+
+Blockly.Msg.ai_model_getface = "Custom Recognized face from customized model";
+Blockly.Msg.ai_model_getclass = "Recognized object from customized model";
+Blockly.Msg.face_information = "Face information";
+
+
+
+
+Blockly.Msg.ai_models_object_model_x_center = "X Coordinate of the center point";
+Blockly.Msg.ai_models_object_model_y_center = "Y Coordinate of the center point";
+Blockly.Msg.ai_models_face_model_x_center = "X Coordinate of the center point";
+Blockly.Msg.ai_models_face_model_y_center = "Y Coordinate of the center point";
+Blockly.Msg.ai_models_customized_get_result_x_center = "X Coordinate of the center point";
+Blockly.Msg.ai_models_customized_get_result_y_center = "Y Coordinate of the center point";
+
+Blockly.Msg.ai_models_edge_detection_model = "Edge Detection Model";
+Blockly.Msg.ai_models_load_edge_detection_model = "Load Edge Detection Model";
+Blockly.Msg.ai_models_get_edge_detection_result = "Get the edge detection model results";
+
+Blockly.Msg.ai_model_self_learning_init = "Initializing self-learning classification model";
+Blockly.Msg.ai_model_self_learning_load = "Load self-learning classification model";
+Blockly.Msg.ai_model_self_learning_recognize_load = "Load the self-learning classification recognition model";
+Blockly.Msg.ai_model_self_learning_add_class_category = "Add Category category";
+Blockly.Msg.ai_model_self_learning_make_data_set = "Data set for making model training";
+Blockly.Msg.ai_model_self_learning_picture = "picture self-learning";
+Blockly.Msg.ai_model_self_learning_save_modal = "Save model";
+Blockly.Msg.ai_model_self_learning_class_verification = "Self-learning Classification Model Verification";
+Blockly.Msg.ai_model_self_learning_result = 'Self-learning outcome';
+Blockly.Msg.ai_model_self_learning_result_name = "Name";
+/*
+     _    ___   ____            _                 
+    / \  |_ _| / ___| _   _ ___| |_ ___ _ __ ___  
+   / _ \  | |  \___ \| | | / __| __/ _ \ '_ ` _ \ 
+  / ___ \ | |   ___) | |_| \__ \ ||  __/ | | | | |
+ /_/   \_\___| |____/ \__, |___/\__\___|_| |_| |_|
+                      |___/                       
+*/
+
+
+Blockly.Msg.ai_system_restart = "Restart Module";
+Blockly.Msg.ai_system_off = "To turn it off";
+Blockly.Msg.ai_system_refresh = "Refreshing a file directory";
+Blockly.Msg.ai_system_enable_gc = "Enable Memory Optimization";
+Blockly.Msg.ai_system_run_python_code = "Run Python Code";
+Blockly.Msg.ai_system_run_python_code_file_path = "Load file from path:";
+
+
+
+/* 
+     _    ___  __        ___ _____ _ 
+    / \  |_ _| \ \      / (_)  ___(_)
+   / _ \  | |   \ \ /\ / /| | |_  | |
+  / ___ \ | |    \ V  V / | |  _| | |
+ /_/   \_\___|    \_/\_/  |_|_|   |_|
+                                     
+*/
+
+Blockly.Msg.ai_wifi_set_wifi = "Set Wi-Fi";
+Blockly.Msg.ai_wifi_enabled = "Enabled";
+Blockly.Msg.ai_wifi_disabled = "Disabled";
+Blockly.Msg.ai_wifi_start_wifi_scan = "Start Wi-Fi Scan";
+Blockly.Msg.ai_wifi_wifi_scan_result = "Get Wi-Fi Scan Result as List";
+Blockly.Msg.ai_wifi_connect_wifi = "Connect to Wi-Fi Network";
+Blockly.Msg.ai_wifi_connect_wifi_ssid = "SSID:";
+Blockly.Msg.ai_wifi_connect_wifi_pass = "Password:";
+Blockly.Msg.ai_wifi_get_connection_status = "Get Wi-Fi Connection Status";
+Blockly.Msg.ai_wifi_get_wifi_info = "Get Wi-Fi Info:";
+Blockly.Msg.ai_wifi_get_wifi_info_name = "Hotspot Name";
+Blockly.Msg.ai_wifi_get_wifi_info_ip = "IP";
+Blockly.Msg.ai_wifi_get_wifi_info_dns = "DNS";
+Blockly.Msg.ai_wifi_get_wifi_info_mac = "MAC Address";
+
+
+
+/*
+  _   _ _ _                             _        ____                            
+ | | | | | |_ _ __ __ _ ___  ___  _ __ (_) ___  / ___|  ___ _ __  ___  ___  _ __ 
+ | | | | | __| '__/ _` / __|/ _ \| '_ \| |/ __| \___ \ / _ \ '_ \/ __|/ _ \| '__|
+ | |_| | | |_| | | (_| \__ \ (_) | | | | | (__   ___) |  __/ | | \__ \ (_) | |   
+  \___/|_|\__|_|  \__,_|___/\___/|_| |_|_|\___| |____/ \___|_| |_|___/\___/|_|   
+
+*/
+
+
+Blockly.Msg.third_party_hcsr04_iot = "On IoT Module";
+Blockly.Msg.third_party_hcsr04_ai = "On A.I. Module ";
+Blockly.Msg.third_party_hcsr04_setup_title = "Setup HCSR-04 Ultrasonic Sensor";
+Blockly.Msg.third_party_hcsr04_trig_pin = "Set Trig Pin: GPIO #";
+Blockly.Msg.third_party_hcsr04_echo_pin = ", Set Echo Pin: GPIO #";
+Blockly.Msg.third_party_hcsr04_read_text = "Read Distance (Unit: CM) from Ultrasonic Sensor";
+Blockly.Msg.third_party_hcsr04_read_text_after = "Distance Detection Value (Unit: centimetres)";
+Blockly.Msg.Set_Auto_Wrap = "Set Auto Wrap";
+
+
+/*
+  ____  _     _____ 
+ | __ )| |   | ____|
+ |  _ \| |   |  _|  
+ | |_) | |___| |___ 
+ |____/|_____|_____|
+
+*/
+
+Blockly.Msg.esp32_ble_setup_sender_msg = "BLE (Bluetooth Low Energy)";
+Blockly.Msg.esp32_ble_setup_sender = "Sender Setup";
+Blockly.Msg.esp32_ble_send_data_msg = "BLE Send Data";
+Blockly.Msg.esp32_ble_setup_receiver_msg = "BLE (Bluetooth Low Energy)";
+Blockly.Msg.esp32_ble_setup_receiver = "Receiver Setup";
+Blockly.Msg.esp32_ble_get_data_msg = "From BLE Get Data Received";
+Blockly.Msg.esp32_ble_sender_connected_msg = "Sender is Connected";
+Blockly.Msg.esp32_ble_receiver_connected_msg = "Receiver is Connected";
+Blockly.Msg.esp32_ble_set_uuid = "Set UUID:";
+Blockly.Msg.esp32_ble_set_name = "Set Device Name:";
+Blockly.Msg.esp32_ble_set_name_limit = " (Must be shorter than 9 characters)";
+
+
+/* additional text */
+
+Blockly.Msg.text_additional_delimiter_string = "Split string to a list";
+Blockly.Msg.text_additional_delimiter_deli = "by delimiter:";
+Blockly.Msg.text_additional_delimiter_end = "Split and generate a list";
+
+
+/* mlx90614 */
+Blockly.Msg.MLX90614_READ_AMBIENT = "Get Current Ambient Temperature";
+Blockly.Msg.MLX90614_READ_OBJECT = "Get Targeted Object's Temperature";
+Blockly.Msg.MLX90614_READ_SET_TEMP = "Set Tempeature Unit:";
+Blockly.Msg.MLX90614_READ_SET_TEMP_C = "Celcius";
+Blockly.Msg.MLX90614_READ_SET_TEMP_F = "Fahrenheit";
+Blockly.Msg.MLX90614_SETUP_TEXT_1 = "Contactless Temperature Sensor";
+Blockly.Msg.MLX90614_SETUP_TEXT_2 = "MLX90614 Setup";
+
+/* DHT11 or DHT22 */
+Blockly.Msg.DHT_SETUP_TEXT_1 = "Temperature and humidity sensor";
+Blockly.Msg.DHT_SETUP_TEXT_2 = "Sensor type:  ";
+Blockly.Msg.DHT_SETUP_TEXT_3 = "Setup";
+Blockly.Msg.DHT_SETUP_TEXT_4 = "Set sensor data receiving GPIO #:   ";
+
+/* PM2.5 */
+Blockly.Msg.PM25_SETUP_TEXT = "PM2.5 Dust sensor";
+
+/* robot dog */
+Blockly.Msg.robot_dog_movement = "Speech control robot dog";
+Blockly.Msg.robot_dog_movement_action = "Set motion command";
+Blockly.Msg.robot_dog_phonetic_to_pinyin_get_result = "Get the result of speech recognition";
+Blockly.Msg.robot_dog_movement_action_0 = "Get down";
+Blockly.Msg.robot_dog_movement_action_1 = "Stand up";
+Blockly.Msg.robot_dog_movement_action_2 = "Crawl forward";
+Blockly.Msg.robot_dog_movement_action_3 = "Go round";
+Blockly.Msg.robot_dog_movement_action_4 = "No progress";
+Blockly.Msg.robot_dog_movement_action_5 = "Squat up";
+Blockly.Msg.robot_dog_movement_action_6 = "Rotate along the roll";
+Blockly.Msg.robot_dog_movement_action_7 = "Rotate along the pitch";
+Blockly.Msg.robot_dog_movement_action_8 = "Rotate along Yaw";
+Blockly.Msg.robot_dog_movement_action_9 = "Three axis rotation";
+Blockly.Msg.robot_dog_movement_action_10 = "pee";
+Blockly.Msg.robot_dog_movement_action_11 = "Sit down";
+Blockly.Msg.robot_dog_movement_action_12 = "Beckon";
+Blockly.Msg.robot_dog_movement_action_13 = "Stretch";
+Blockly.Msg.robot_dog_movement_action_14 = "Wave";
+Blockly.Msg.robot_dog_movement_action_15 = "Swing left and right";
+Blockly.Msg.robot_dog_movement_action_16 = "Pray for food";
+Blockly.Msg.robot_dog_movement_action_17 = "Foraging";
+Blockly.Msg.robot_dog_movement_action_18 = "Shake hands";
+Blockly.Msg.robot_dog_movement_action_19 = "Restore the initial state";
+Blockly.Msg.robot_dog_movement_action_20 = "go ahead";
+Blockly.Msg.robot_dog_movement_action_21 = "Back";
+Blockly.Msg.robot_dog_movement_action_22 = "Move left";
+Blockly.Msg.robot_dog_movement_action_23 = "Move right";
+Blockly.Msg.robot_dog_movement_action_24 = "Turn on the self-stabilization function";
+Blockly.Msg.robot_dog_movement_action_25 = "Turn off the self-stabilization function";
+Blockly.Msg.robot_dog_movement_action_30 = "Pay a New Year call";
+Blockly.Msg.robot_dog_setup = "Robot dog initialization";
+Blockly.Msg.robot_dog_execution = "Robot dog Execution";
+Blockly.Msg.robot_dog_action = "instruction";
+Blockly.Msg.robot_dog_servo_execution = "Set up";
+Blockly.Msg.robot_dog_front_left_leg = "Forward left";
+Blockly.Msg.robot_dog_back_left_leg = "Backward left";
+Blockly.Msg.robot_dog_front_right_leg = "Forward right";
+Blockly.Msg.robot_dog_back_right_leg = "Backward right";
+Blockly.Msg.robot_dog_leg = "Legs";
+Blockly.Msg.robot_dog_up = "Up (-31˚~31˚)";
+Blockly.Msg.robot_dog_up_1 = "Up";
+Blockly.Msg.robot_dog_middle = "Middle (-66˚~93˚)";
+Blockly.Msg.robot_dog_middle_1 = "Middle";
+Blockly.Msg.robot_dog_down = "Down (-65˚~73˚)";
+Blockly.Msg.robot_dog_down_1 = "Down";
+Blockly.Msg.robot_dog_servo_rotate = "joint servo rotates to";
+Blockly.Msg.robot_dog_ag = "Degree";
+Blockly.Msg.robot_dog_angle = "mm";
+Blockly.Msg.robot_dog_angle_speed = "Degree/s";
+Blockly.Msg.robot_dog_servo_set_speed = "Set ";
+Blockly.Msg.robot_dog_servo_speed = "the servo speed";
+Blockly.Msg.robot_dog_movement_speed = "the step frequency";
+Blockly.Msg.robot_dog_servo_to = "to";
+Blockly.Msg.robot_dog_servo_speed_1 = "Fast";
+Blockly.Msg.robot_dog_servo_speed_2 = "Normal";
+Blockly.Msg.robot_dog_servo_speed_3 = "Slow";
+Blockly.Msg.robot_dog_servo_movement_location = "direction position to";
+Blockly.Msg.robot_dog_leg_f = "Leg toe";
+Blockly.Msg.robot_dog_controll_action_0 = "Close";
+Blockly.Msg.robot_dog_controll_action_1 = "Open";
+Blockly.Msg.robot_dog_gyroscope = "Gyroscope";
+Blockly.Msg.robot_dog_open_performance_mode = "Performance mode of Robot dog";
+Blockly.Msg.robot_dog_open_calibration_mode = "Robot dog calibration mode";
+Blockly.Msg.robot_dog_get_power = "Get the current power of the robot dog";
+Blockly.Msg.robot_dog_get_servo_angle = "joint steering gear's angle";
+Blockly.Msg.robot_dog_servo_movement_distance = "Set the robot dog to execute the step length of";
+Blockly.Msg.robot_dog_movement_action_26 = "Move left (0mm~18mm)";
+Blockly.Msg.robot_dog_movement_action_27 = "Move right (-18mm~0mm)";
+Blockly.Msg.robot_dog_movement_action_28 = "go ahead (0mm~25mm)";
+Blockly.Msg.robot_dog_movement_action_29 = "Back (-25mm~0mm)";
+Blockly.Msg.robot_dog_servo_movement_distance_location = "direction translation to";
+Blockly.Msg.robot_dog_servo_movement_rotate = "Set the robot dog to execute";
+Blockly.Msg.robot_dog_servo_movement_rotate_location = "rotation speed to";
+Blockly.Msg.MOTION_ONDIRECTION_CLOCKWISE1 = "Turn left (0˚/s~150˚/s)";
+Blockly.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE1 = "Turn right (-150˚/s~0˚/s)";
+Blockly.Msg.robot_dog_servo_movement_standing_still = "Set the robot dog ";
+Blockly.Msg.robot_dog_servo_movement_standing_still_1 = "(10mm~35mm) to perform a standing gait at a fixed frequency";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_1 = "for";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_2 = "second";
+Blockly.Msg.robot_dog_servo_movement_distance_still = "Set the robot dog";
+Blockly.Msg.robot_dog_servo_movement_distance_still_1 = "direction translation to";
+Blockly.Msg.robot_dog_servo_movement_distance_still_2 = "(-128~127) cm";
+Blockly.Msg.robot_dog_servo_movement_rotate_still = "Set the robot dog around";
+Blockly.Msg.robot_dog_servo_movement_rotate_still1 = "axis rotation to";
+Blockly.Msg.robot_dog_servo_movement_rotate_still2 = "(-128~127)";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle = "Set the robot dog to cycle";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_1 = "s (1.5s~8s) translation to";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_2 = "Bi-directional translation";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle = "s (1.5s~8s) around";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_1 = "axis rotation";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_stop = "Stop the cycle translation of the robot dog towards";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_stop = "Stop the cycle of the robot dog around";
+Blockly.Msg.robot_dog_get_rotate_angle = "axis's angle";
+Blockly.Msg.robot_dog_get_rotate_angle_1 = "Get gyro";
+
+// UAV
+Blockly.Msg.uav_initialization = "Uav initialization";
+Blockly.Msg.numbers_for = "Numbers for";
+Blockly.Msg.uav_uav = "UAV";
+Blockly.Msg.uav_height = "Height";
+Blockly.Msg.uav_lock = "Lock";
+Blockly.Msg.uav_unlock = "Unlock";
+Blockly.Msg.uav_the_nose_direction = "The nose direction";
+Blockly.Msg.uav_landing = "Landing";
+Blockly.Msg.uav_brake = "Brake";
+Blockly.Msg.uav_hover = "Hover";
+Blockly.Msg.uav_scram = "Scram";
+Blockly.Msg.uav_calibration = "Calibration";
+Blockly.Msg.Take_off_altitude = "Unmanned aerial vehicle at an altitude of";
+Blockly.Msg.uav_switch = "UAV,switch";
+Blockly.Msg.uav_AI_switch = "UAV,Switch to the AI";
+Blockly.Msg.uav_fly_mode = "Flight mode";
+Blockly.Msg.uav_horizontal_velocity = "UAV,Horizontal velocity";
+Blockly.Msg.uav_speed_unit = "cm/s";
+Blockly.Msg.uav_vertical_speed = "UAV,Vertical speed";
+Blockly.Msg.uav_go_to = "UAV,to";
+Blockly.Msg.uav_patrol_flight = "Patrol flight";
+Blockly.Msg.uav_fly = "Fly";
+Blockly.Msg.uav_look_for_black_patches = "Cm,looking for black patches";
+Blockly.Msg.uav_look_for = "Cm,Looking for";
+Blockly.Msg.uav_the_label = "No tags";
+Blockly.Msg.uav_look_for_color_piece = "Cm,Looking for color piece";
+Blockly.Msg.uav_direct = "UAV Direct";
+Blockly.Msg.uav_rotating = "UAV Rotating";
+Blockly.Msg.uav_circle = "Circle";
+Blockly.Msg.uav_light_color = "The lighting color is (";
+Blockly.Msg.uav_off_led = "UAV Shut the lights";
+Blockly.Msg.uav_detection = "UAV Detection";
+Blockly.Msg.uav_black_spots = "Black spots";
+Blockly.Msg.uav_black_line = "The black line";
+Blockly.Msg.uav_black_label = "The label";
+Blockly.Msg.uav_code = "Qr code";
+Blockly.Msg.uav_bar_code = "Bar code";
+Blockly.Msg.uav_electromagnet = "Electromagnet";
+Blockly.Msg.uav_servo_ctrl = "The steering gear of a drone";
+Blockly.Msg.uav_role_ctrl = "Drone orders";
+Blockly.Msg.uav_continuous = "Continuous";
+Blockly.Msg.uav_laser = "laser";
+Blockly.Msg.uav_face_recognition = "Face recognition";
+Blockly.Msg.uav_object_tracking = "Object tracking";
+Blockly.Msg.uav_obj_recognition = "Object recognition";
+Blockly.Msg.uav_patrol_tracking = "Patrol tracking";
+Blockly.Msg.uav_color_recognition = "Color recognition";
+Blockly.Msg.uav_label_recognition = "Label recognition";
+Blockly.Msg.uav_object_classification = "Object classification";
+Blockly.Msg.uav_mode = "Mode";
+Blockly.Msg.uav_learing_ID = "UAV,learning-once ID";
+Blockly.Msg.uav_forget_data = "Drones forget all learning data";
+Blockly.Msg.uav_setup_ID = "UAV setup ID";
+Blockly.Msg.uav_name_is = "Name for";
+Blockly.Msg.uav_taking_pictures = "Taking pictures";
+Blockly.Msg.uav_screenshots = "Screenshots";
+Blockly.Msg.uav_save_SD = "Save SD";
+Blockly.Msg.optical_flow_localization = "Optical flow localization";
+Blockly.Msg.label_position = "Label position";
+Blockly.Msg.autonomous_patrol = "Autonomous patrol";
+Blockly.Msg.normally_on = "Normally on";
+Blockly.Msg.breathing_lamp = "Breathing lamp";
+Blockly.Msg.colour_change = "Colour change";
+
+Blockly.Msg.uav_detection_if = "UAV Detected";
+Blockly.Msg.uav_detection_color_block = "Color block";
+Blockly.Msg.uav_detection_if_line = "Have Line";
+Blockly.Msg.uav_get_distance_of_obstacles = "UAV";
+Blockly.Msg.uav_get_distance_of_obstacles_1 = "obstacles' distance";
+Blockly.Msg.uav_roll_angle = "Roll angle";
+Blockly.Msg.uav_pitch_angle = "Pitch angle";
+Blockly.Msg.uav_yaw_angle = "Yaw angle";
+Blockly.Msg.uav_abscissa = "Abscissa";
+Blockly.Msg.uav_ordinate = "Ordinate";
+Blockly.Msg.uav_height = "Height";
+Blockly.Msg.uav_voltage = "Voltage";
+Blockly.Msg.uav_get_AI_value = "AI recognition results";
+Blockly.Msg.uav_get_electronic_balance_value = "Electronic Balance Value";
+Blockly.Msg.uav_get_shooting_value = "Shooting";
+Blockly.Msg.uav_get_shooting_value_0 = "Serial Number";
+Blockly.Msg.uav_get_shooting_value_1 = "Result";
+Blockly.Msg.uav_get_msg_value = "News";
+Blockly.Msg.uav_get_msg_value_0 = "content";
+
+/* expand */
+Blockly.Msg.esp32_expand_io_from_digital_pin = "Get GPIO #";
+Blockly.Msg.esp32_expand_io_set_digital_pin = "Set the GPIO #";
+Blockly.Msg.esp32_expand_io_set_analog_pin = "Set GPIO #";
+Blockly.Msg.esp32_expand_io_set_analog_pin_digital_set_as = "PWM Output to";
+Blockly.Msg.esp32_expand_io_set_analog_pin_digital_set_af = "(0-255)";
+
+
+/* KUJU */
+Blockly.Msg.KUJU_title = "Connect with KUJU";
+Blockly.Msg.KUJU_username = "Username";
+Blockly.Msg.KUJU_password = "Password";
+Blockly.Msg.KUJU_controll_title = "Send data to KUJU";
+Blockly.Msg.KUJU_controll_content = "Control Smart Plug";
+Blockly.Msg.KUJU_controll_action_0 = "Off";
+Blockly.Msg.KUJU_controll_action_1 = "On";
+Blockly.Msg.KUJU_get_temperature_humidity_data_title = "Get the Temperature sensor 's";
+Blockly.Msg.KUJU_get_motion_data_title = "Get the Motion sensor 's";
+Blockly.Msg.basic_motion_data = "Whether to move";
+Blockly.Msg.basic_illumination_intensity = "Illumination intensity";
+Blockly.Msg.KUJU_get_sensor_data_title = "Get";
+Blockly.Msg.basic_water_sensor = "Water Sensor";
+Blockly.Msg.basic_door_sensor = "Door Sensor";
+
+/* Wetech */
+Blockly.Msg.wifiServices_WeTech_title = "Connect with WeTech";
+Blockly.Msg.wifiServices_WeTech_username = "Username";
+Blockly.Msg.wifiServices_WeTech_password = "Password";
+Blockly.Msg.WeTech_controll_title = "Send data to WeTech";
+Blockly.Msg.WeTech_controll_content = "Instructions";
+Blockly.Msg.WeTech_controll_action_0 = "Off";
+Blockly.Msg.WeTech_controll_action_1 = "On";
+Blockly.Msg.WeTech_controll_action_2 = "Stop";
+Blockly.Msg.wifiServices_WeTech_get_gateway_device_id_list_title = "get the device Id of a specific gateway id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY4 = "device ID";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY5 = "named ";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY6 = "Controlled Three Way Lamp Surface System Id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY7 = "Gateway Id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY8 = "Controlled Second Way Lamp Surface System Id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY9 = "Controlled Curtain Sensor (for projector Screen) Id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY10 = "Controlled Air Conditioner Id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY11 = "Controlled TV IR (for TV and Projector) Id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY12 = "Mac Address";
+Blockly.Msg.WeTech_controll_air_content = "Mode";
+Blockly.Msg.WeTech_controll_wind_speed_content = "Wind Speed";
+Blockly.Msg.WeTech_controll_temp_content = "Temperature(16℃-30℃)";
+Blockly.Msg.WeTech_controll_IR_content = "Order(0-255)";
+Blockly.Msg.WeTech_controll_power_meter = "Get the value";
+Blockly.Msg.WeTech_controll_power_meter_1 = "Power Meter Id";
+Blockly.Msg.Wetech_controll_pm25_sensor = "PM2.5 detector";
+Blockly.Msg.Wetech_controll_CO2_sensor = "CO2 detector";
+Blockly.Msg.Wetech_controll_Temperature_sensor = "Temperature detector";
+Blockly.Msg.Wetech_controll_Humidity_sensor = "Humidity detector";
+Blockly.Msg.Wetech_controll_sensor_title = " Id";
+
+Blockly.Msg.WeTech_controll_mode_0 = "Off";
+Blockly.Msg.WeTech_controll_mode_1 = "Automatic";
+Blockly.Msg.WeTech_controll_mode_2 = "Refrigeration";
+Blockly.Msg.WeTech_controll_mode_3 = "Heating";
+Blockly.Msg.WeTech_controll_mode_4 = "Emergency Heating";
+Blockly.Msg.WeTech_controll_mode_5 = "Precooling";
+Blockly.Msg.WeTech_controll_mode_6 = "Air Supply";
+Blockly.Msg.WeTech_controll_mode_7 = "Arefaction";
+Blockly.Msg.WeTech_controll_mode_8 = "Sleep";
+Blockly.Msg.WeTech_controll_mode_9 = "Energy Conservation";
+Blockly.Msg.WeTech_controll_mode_10 = "Low";
+Blockly.Msg.WeTech_controll_mode_11 = "Medium";
+Blockly.Msg.WeTech_controll_mode_12 = "High";
+Blockly.Msg.WeTech_controll_mode_13 = "Automatic";
+
+// tuya
+Blockly.Msg.iot_service_tuya_title = "Connect with Tuya";
+Blockly.Msg.iot_service_tuya_access_id = "Access ID/Client ID";
+Blockly.Msg.iot_service_tuya_access_secret = "Access Secret/Client Secret";
+Blockly.Msg.iot_service_tuya_setToken_text = "When gets the access token by connecting tuya";
+Blockly.Msg.iot_service_tuya_getDeviceList_text = "Get device list";
+Blockly.Msg.iot_service_tuya_controll_light_belt_title = "Control intelligent light belt";
+Blockly.Msg.iot_service_tuya_controll_light_belt_device_id = "Device ID";
+Blockly.Msg.iot_service_tuya_controll_light_belt_des = "Status";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_0 = "Off";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_1 = "On";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_2 = "Soft Light";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_3 = "Fun mode";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_4 = "Colorful mode";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_5 = "Gorgeous mode";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_6 = "Good night scene";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_7 = "Reading scene";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_8 = "Party scene";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_9 = "Casual scene";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_title = "Control the intelligent light belt";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_title1 = "Color to";
+
+// turtle 
+Blockly.Msg.TURTLE_CREATE_NE_TURTLE = "create new turtle";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_BY = "make turtle move forward by";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_BY = "make turtle move backward by";
+Blockly.Msg.TURTLE_MAKE_TURN_LEFT_BY = "make turtle turn left by";
+Blockly.Msg.TURTLE_DEGREE = "degree";
+Blockly.Msg.TURTLE_MAKE_TURN_RIGHT_BY = "make turtle turn right by";
+Blockly.Msg.TURTLE_MAKE_TURRLE_COLOR = "make turtle color";
+Blockly.Msg.TURTLE_MAKE_TURRLE_PEN = "make turtle pen";
+Blockly.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X = "make turtle goto location X:";
+Blockly.Msg.TURTLE_MAKE_TURTLE_SET_POSITION = "Set the position of the turtle brush to X:";
+Blockly.Msg.TURTLE_MAKE_SET_HEADING = "Let the turtle spin to";
+Blockly.Msg.TURTLE_RESET = "Reset the position of the brush";
+Blockly.Msg.TURTLE_CLEAR = "Clear";
+Blockly.Msg.TURTLE_PEN_UP = "Up";
+Blockly.Msg.TURTLE_PEN_DOWN = "Down";
+
+Blockly.Msg.SYSTEM = "Restart System";
+Blockly.Msg.SYSTEM_GC = "Start memory reclaim";
+Blockly.Msg.SYSTEM_RUN = "Execute Python Code:";
+Blockly.Msg.SYSTEM_RUN_F = "Filename:";
+Blockly.Msg.SYSTEM_CREATE = "Create Text file";
+Blockly.Msg.SYSTEM_CREATE_FILE = "Create file";
+Blockly.Msg.SYSTEM_CREATE_F = "Filename:";
+Blockly.Msg.SYSTEM_CREATE_F_1 = "File Path:";
+Blockly.Msg.SYSTEM_WRITE = "Create Text file";
+Blockly.Msg.SYSTEM_OPEN_FILE = "Open file";
+Blockly.Msg.SYSTEM_WRITE_FILE = "Write file";
+Blockly.Msg.SYSTEM_CLOSE_FILE = "Close file";
+Blockly.Msg.SYSTEM_WRITE_F = "Filename:";
+Blockly.Msg.SYSTEM_WRITE_W = "Write content:";
+Blockly.Msg.SYSTEM_WRITE_S = "The separator is:";
+Blockly.Msg.SYSTEM_WRITE_S_N = "newline";
+Blockly.Msg.SYSTEM_WRITE_S_C = "comma";
+Blockly.Msg.SYSTEM_WRITE_S_S = "space";
+Blockly.Msg.SYSTEM_WRITE_S_SE = "semicolon";
+Blockly.Msg.SYSTEM_INPUT = "Read Text File as List";
+Blockly.Msg.SYSTEM_INPUT_FILE = "Read File as List";
+
+// v831
+// 在线文本转语音
+Blockly.Msg.Text_to_speech_initialization = "Online text-to-speech initialization";
+Blockly.Msg.Content_of_text = "Content of text";
+Blockly.Msg.text_conversion_voice = "Content of text";
+Blockly.Msg.Voice_path = "Audio file saving path";
+// 在线人脸识别
+Blockly.Msg.online_face_result = "Number of online face detection";
+Blockly.Msg.online_face_loading = "Online face detection model loading";
+Blockly.Msg.online_face_init = "Initialization of online face detection";
+Blockly.Msg.online_face_init_path = "Detecting picture path";
+// 在线语音识别
+Blockly.Msg.online_voice_result = "Online speech recognition results";
+Blockly.Msg.online_voice_loading = "Load online speech recognition"
+Blockly.Msg.online_voice_init = "Online speech recognition initialization"
+Blockly.Msg.online_voice_init_path = "Recognizing speech paths"
+
+// 图像处理
+Blockly.Msg.read_img_path_to = "Read the picture file from";
+Blockly.Msg.take_the_picture = "will picture ";
+
+// Machine translation
+Blockly.Msg.machine_translation_result = "Online machine translation result ";
+Blockly.Msg.machine_translation_load = "Online machine translation load ";
+Blockly.Msg.machine_translation_init = "Machine translation initialization ";
+Blockly.Msg.machine_translation_to = "Translate to";
+
+// License plate recognition
+Blockly.Msg.online_card_result = "Online License plate recognition Result ";
+Blockly.Msg.online_card_load = "Online License plate recognition load ";
+Blockly.Msg.online_card_init = "Initializing online License Plate Recognition ";
+
+// Object recognition
+Blockly.Msg.online_object_init = "Online object recognition initialization ";
+Blockly.Msg.online_object_load = "Online object recognition load ";
+Blockly.Msg.online_object_result = "Online object recognition result ";
+
+// 手写文字识别
+Blockly.Msg.handwritten_text_result = "Online handwritten character recognition result ";
+Blockly.Msg.handwritten_text_load = "Online handwritten text recognition load ";
+Blockly.Msg.handwritten_text_init = "handwritten text recognition initialization ";
+Blockly.Msg.handwritten_text_language_init = "Set identification language";
+Blockly.Msg.system_voice = "Setting the system volume"
+
+// 手势识别
+Blockly.Msg.gesture_result = "Gesture recognition result ";
+Blockly.Msg.gesture_load = "Gesture recognition load ";
+Blockly.Msg.gesture_init = "Gesture recognition initialization ";
+// 情绪识别
+Blockly.Msg.emotion_result = "emotion recognition result ";
+Blockly.Msg.emotion_load = "Emotional recognition load ";
+Blockly.Msg.emotion_init = "Emotion recognition initialization ";
+Blockly.Msg.set_dictionary = "Set dictionary";
+Blockly.Msg.dictionary_contain = "Dictionary contains()age、emotion、gender、expression)";
+Blockly.Msg.emotion_result_age = "Age ";
+Blockly.Msg.emotion_result_emotion = "Emotion ";
+Blockly.Msg.emotion_result_gender = "Gender ";
+Blockly.Msg.emotion_result_expression = "Expression ";
+// 公式识别
+Blockly.Msg.formula_result = "Formula recognition result ";
+Blockly.Msg.formula_load = "Formula recognition load ";
+Blockly.Msg.formula_init = "formula recognition initialization ";
+// 神經網絡
+Blockly.Msg.numpy_mnist_get_result = "Get recognition results";
+Blockly.Msg.numpy_mnist_loading_model = "Load saved model";
+Blockly.Msg.numpy_mnist_setting_training_argument = "Set training parameters";
+Blockly.Msg.numpy_mnist_input_trait_dimensionality = "Dimensions of input features:";
+Blockly.Msg.numpy_mnist_setting_training_argument_number_node = "Number of nodes:";
+Blockly.Msg.numpy_mnist_output_dimensionality = "Output dimensions:";
+Blockly.Msg.numpy_mnist_setting_training_argument_learning_rate = "Learning rate:";
+Blockly.Msg.numpy_mnist_setting_training_argument_frequency = "Training times:";
+Blockly.Msg.numpy_mnist_is_training_start = "Determine whether the training module is started";
+Blockly.Msg.numpy_mnist_loading_train_and_test_set = "Load training set and test set";
+Blockly.Msg.numpy_mnist_train_set_url = "Training set path:";
+Blockly.Msg.numpy_mnist_test_set_url = "Test Path";
+Blockly.Msg.numpy_mnist_model_init = "Numpy + mnist Training model initialization";
+Blockly.Msg.numpy_mnist_clear = "Clear numpy module";
+
+
+
+
+export default Blockly.Msg;

+ 10729 - 0
src/blockly/msg/zh-hans.js

@@ -0,0 +1,10729 @@
+
+'use strict';
+
+var Blockly = Blockly || { Msg: Object.create(null) };
+
+Blockly.Msg["ADD_COMMENT"] = "添加注释";
+Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "不能删除变量“%1”,因为它是函数“%2”定义的一部分";
+Blockly.Msg["CHANGE_VALUE_TITLE"] = "更改值:";
+Blockly.Msg["CLEAN_UP"] = "整理块";
+Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "已收起的信息块内包含警告。";
+Blockly.Msg["COLLAPSE_ALL"] = "折叠块";
+Blockly.Msg["COLLAPSE_BLOCK"] = "折叠块";
+Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "颜色1";
+Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "颜色2";
+Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp";  // untranslated
+Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例";
+Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合";
+Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "把两种颜色以一个给定的比例(0.0-1.0)进行混合。";
+Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/颜色";
+Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "从调色板中选择一种颜色。";
+Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com";  // untranslated
+Blockly.Msg["COLOUR_RANDOM_TITLE"] = "随机颜色";
+Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "随机选择一种颜色。";
+Blockly.Msg["COLOUR_RGB_BLUE"] = "蓝色";
+Blockly.Msg["COLOUR_RGB_GREEN"] = "绿色";
+Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html";  // untranslated
+Blockly.Msg["COLOUR_RGB_RED"] = "红色";
+Blockly.Msg["COLOUR_RGB_TITLE"] = "颜色";
+Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "跳出循环";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "继续下一轮循环";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "跳出包含它的循环。";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳过本轮循环的剩余部分,并继进行续下一轮循环。";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:这个块只能在循环内使用。";
+Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
+Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "遍历列表 %2 里的每一项 %1";
+Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍历列表中的每一项,将变量“%1”设为所选项,并执行一些语句。";
+Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
+Blockly.Msg["CONTROLS_FOR_TITLE"] = "变量 %1 从 %2 数到 %3 每次增加 %4";
+Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "让变量“%1”记录开始数到结束数之间指定间隔的值,并执行指定的块。";
+Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "在这个if语句块中增加一个条件。";
+Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "在这个if语句块中添加一个最终的,包括所有其余情况的条件。";
+Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
+Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "增加、删除或重新排列各节来重新配置这个if语句块。";
+Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否则";
+Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否则如果";
+Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "如果值为真,执行一些语句。";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "如果值为真,则执行第一块语句。否则,则执行第二块语句。";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。";
+Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For循环";
+Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "执行";
+Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重复 %1 次";
+Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "多次执行一些语句。";
+Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
+Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重复直到条件满足";
+Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "当条件满足时重复";
+Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "只要值为假,就一直循环执行一些语句。";
+Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "只要值为真,就一直循环执行一些语句。";
+Blockly.Msg["DELETE_ALL_BLOCKS"] = "删除所有 %1 个块吗?";
+Blockly.Msg["DELETE_BLOCK"] = "删除块";
+Blockly.Msg["DELETE_VARIABLE"] = "删除变量“%1”";
+Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "要删除对变量“%2”的%1个引用吗?";
+Blockly.Msg["DELETE_X_BLOCKS"] = "删除 %1 个块";
+Blockly.Msg["DIALOG_CANCEL"] = "取消";
+Blockly.Msg["DIALOG_OK"] = "确认";
+Blockly.Msg["DISABLE_BLOCK"] = "禁用块";
+Blockly.Msg["DUPLICATE_BLOCK"] = "复制";
+Blockly.Msg["DUPLICATE_COMMENT"] = "复制注释";
+Blockly.Msg["ENABLE_BLOCK"] = "启用块";
+Blockly.Msg["EXPAND_ALL"] = "展开块";
+Blockly.Msg["EXPAND_BLOCK"] = "展开块";
+Blockly.Msg["EXTERNAL_INPUTS"] = "外部输入";
+Blockly.Msg["HELP"] = "帮助";
+Blockly.Msg["INLINE_INPUTS"] = "单行输入";
+Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list";  // untranslated
+Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "创建空列表";
+Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一个列表,长度为 0,不包含任何数据记录";
+Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "列表";
+Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "增加、删除或重新排列各部分以此重新配置这个列表块。";
+Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "创建列表,内容:";
+Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "将一个项添加到列表中。";
+Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一个具有任意数量项目的列表。";
+Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一项";
+Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒数第#项";
+Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#";
+Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得";
+Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得并移除";
+Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最后一项";
+Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "随机的一项";
+Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除";
+Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "";  // untranslated
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回列表中的第一项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在列表中的指定位置的项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回列表中的最后一项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回列表中的随机一项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除并返回列表中的第一项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除并返回列表中的指定位置的项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除并返回列表中的最后一项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除并返回列表中的随机一项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除列表中的第一项";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在列表中的指定位置的项。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除列表中的最后一项";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "删除列表中的随机一项。";
+Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到倒数第#项";
+Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到第#项";
+Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到最后一项";
+Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
+Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "获取子列表,从第一项";
+Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "获取子列表,从倒数第#项";
+Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "获取子列表,从第#项";
+Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "";  // untranslated
+Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "复制列表中指定的部分。";
+Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1是最后一项。";
+Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1是第一项。";
+Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "寻找第一次出现的项";
+Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";  // untranslated
+Blockly.Msg["LISTS_INDEX_OF_LAST"] = "寻找最后一次出现的项";
+Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。";
+Blockly.Msg["LISTS_INLIST"] = "在列表中";
+Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
+Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1是空的";
+Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果改列表为空,则返回真。";
+Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
+Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1的长度";
+Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回列表的长度。";
+Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立列表使用项 %1 重复 %2 次";
+Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立包含指定重复次数的值的列表。";
+Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";  // untranslated
+Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "倒转%1";
+Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "倒转一个列表,返回副本。";
+Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
+Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "值为";
+Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "插入在";
+Blockly.Msg["LISTS_SET_INDEX_SET"] = "设置";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "在列表的起始处添加该项。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "在列表中指定位置插入项。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "在列表的末尾处添加该项。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "在列表的随机位置插入该项。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "设置列表中的第一项。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "设置在列表中指定位置的项。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "设置列表中的最后一项。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "设置列表中的随机一项。";
+Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";  // untranslated
+Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序";
+Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序";
+Blockly.Msg["LISTS_SORT_TITLE"] = "排序%1 %2 %3";
+Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序一个列表,返回副本。";
+Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "按字母(忽略大小写)";
+Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "按数字";
+Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "按字母";
+Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";  // untranslated
+Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "从文本制作列表";
+Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "将列表合并为文本";
+Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "加入文本列表至一个文本,由分隔符分隔。";
+Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "将文本按指定的分隔符拆分为文本组成的列表。";
+Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "分隔符:";
+Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false";
+Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
+Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回 true 或 false。";
+Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true";
+Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果两个输入结果相等,则返回真。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一个输入结果比第二个大,则返回真。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一个输入结果大于或等于第二个输入结果,则返回真。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一个输入结果比第二个小,则返回真。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一个输入结果小于或等于第二个输入结果,则返回真。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果两个输入结果不相等,则返回真。";
+Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not";  // untranslated
+Blockly.Msg["LOGIC_NEGATE_TITLE"] = "非 %1";
+Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果输入结果为false,则返回true;如果输入结果为true,则返回false。";
+Blockly.Msg["LOGIC_NULL"] = "空";
+Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type";  // untranslated
+Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。";
+Blockly.Msg["LOGIC_OPERATION_AND"] = "并且";
+Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
+Blockly.Msg["LOGIC_OPERATION_OR"] = "或";
+Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果两个输入结果都为真,则返回真。";
+Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少有一个输入结果为真,则返回真。";
+Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "断言";
+Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/条件运算符";
+Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果为 false";
+Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果为 true";
+Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。";
+Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+";  // untranslated
+Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算术";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回两个数的和。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回两个数的商。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回两个数的差。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回两个数的积。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回第一个数的第二个数次幂。";
+Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/反正切2";
+Blockly.Msg["MATH_ATAN2_TITLE"] = "点(x:%1,y:%2)的方位角";
+Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "返回点(X,Y)的反正切值,范围为-180到180度。";
+Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法";
+Blockly.Msg["MATH_CHANGE_TITLE"] = "给 %1 加 %2";
+Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "把数加到变量“%1”。";
+Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/数学常数";
+Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一个以下常见常数:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号½ (0.707…)或∞ (无穷)。";
+Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)";  // untranslated
+Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "将 %1 限制在 最低 %2 到最高 %3 之间";
+Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "把一个数限制在指定的极限(含)之间。";
+Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷";  // untranslated
+Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可整除被";
+Blockly.Msg["MATH_IS_EVEN"] = "是偶数";
+Blockly.Msg["MATH_IS_NEGATIVE"] = "是负数";
+Blockly.Msg["MATH_IS_ODD"] = "是奇数";
+Blockly.Msg["MATH_IS_POSITIVE"] = "是正数";
+Blockly.Msg["MATH_IS_PRIME"] = "是质数";
+Blockly.Msg["MATH_IS_TOOLTIP"] = "检查一个数是否是偶数、奇数、质数、整数、正数、负数,或者是否能被某数整除。返回真或假。";
+Blockly.Msg["MATH_IS_WHOLE"] = "是整数";
+Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 的余数";
+Blockly.Msg["MATH_MODULO_TOOLTIP"] = "返回两个数相除的余数。";
+Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×";  // untranslated
+Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/数";
+Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一个数。";
+Blockly.Msg["MATH_ONLIST_HELPURL"] = "";  // untranslated
+Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "列表的平均";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "列表的最大数";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "列表的中位数";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "列表的最小数";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "列表的众数";
+Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "列表的随机项";
+Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "列表的标准差";
+Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "列表的和";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回列表内数值的平均(算术平均)。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回列表内的最大数。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回列表内数的中位数。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回列表内的最小数。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回列表中的出现次数最多的项的列表。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "返回列表内的一个随机元素。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回列表的标准差。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回列表内的所有数的和。";
+Blockly.Msg["MATH_POWER_SYMBOL"] = "^";  // untranslated
+Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "随机小数";
+Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "返回一个从0.0(含)到1.0(不含)之间的随机数。";
+Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "从 %1 到 %2 范围内的随机整数";
+Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "返回两个指定的极限(含)之间的随机整数。";
+Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/数值修约";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四舍五入";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "向下舍入";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "向上舍入";
+Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数向上或向下取整。";
+Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "绝对值";
+Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回一个数的绝对值。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回e的一个数次幂。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回一个数的自然对数。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回一个数的以10为底的对数。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回一个数的相反数。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回10的一个数次幂。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回一个数的平方根。";
+Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-";  // untranslated
+Blockly.Msg["MATH_TRIG_ACOS"] = "反余弦";
+Blockly.Msg["MATH_TRIG_ASIN"] = "反正弦";
+Blockly.Msg["MATH_TRIG_ATAN"] = "反正切";
+Blockly.Msg["MATH_TRIG_COS"] = "余弦";
+Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函数";
+Blockly.Msg["MATH_TRIG_SIN"] = "正弦";
+Blockly.Msg["MATH_TRIG_TAN"] = "正切";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回一个数的反余弦。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回一个数的反正弦。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回一个数的反正切。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回角度(非弧度)的余弦。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回角度(非弧度)的正弦。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回角度(非弧度)的正切。";
+Blockly.Msg["NEW_COLOUR_VARIABLE"] = "创建颜色变量...";
+Blockly.Msg["NEW_NUMBER_VARIABLE"] = "创建数变量...";
+Blockly.Msg["NEW_STRING_VARIABLE"] = "创建字符串变量...";
+Blockly.Msg["NEW_VARIABLE"] = "创建变量...";
+Blockly.Msg["NEW_VARIABLE_TITLE"] = "新变量的名称:";
+Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新变量的类型:";
+Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "";  // untranslated
+Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允许声明";
+Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "与:";
+Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "运行用户定义的函数“%1”。";
+Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "运行用户定义的函数“%1”,并使用它的输出值。";
+Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "与:";
+Blockly.Msg["PROCEDURES_CREATE_DO"] = "创建“%1”";
+Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述该功能...";
+Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "";  // untranslated
+Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做点什么";
+Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "至";
+Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "创建一个不带输出值的函数。";
+Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回";
+Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "创建一个有输出值的函数。";
+Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告:此函数具有重复参数。";
+Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "突出显示函数定义";
+Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "https://c2.com/cgi/wiki?GuardClause";  // untranslated
+Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值为真,则返回第二个值。";
+Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:这个块只能在函数内部使用。";
+Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "输入名称:";
+Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加函数输入。";
+Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "输入";
+Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、移除或重新排此函数的输入。";
+Blockly.Msg["REDO"] = "重做";
+Blockly.Msg["REMOVE_COMMENT"] = "删除注释";
+Blockly.Msg["RENAME_VARIABLE"] = "重命名变量...";
+Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:";
+Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2";
+Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。";
+Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "转为小写";
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "转为首字母大写";
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "转为大写";
+Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "用不同的大小写模式复制并返回这段文字。";
+Blockly.Msg["TEXT_CHARAT_FIRST"] = "获取第一个字符";
+Blockly.Msg["TEXT_CHARAT_FROM_END"] = "获取倒数第#个字符";
+Blockly.Msg["TEXT_CHARAT_FROM_START"] = "获取第#个字符";
+Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
+Blockly.Msg["TEXT_CHARAT_LAST"] = "获取最后一个字符";
+Blockly.Msg["TEXT_CHARAT_RANDOM"] = "获取随机一个字符";
+Blockly.Msg["TEXT_CHARAT_TAIL"] = "";  // untranslated
+Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文本%1 里 %2";
+Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位于指定位置的字符。";
+Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";  // untranslated
+Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "计算%1在%2里出现的次数";
+Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "计算在一段文本中,某个部分文本重复出现了多少次。";
+Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "将一个项添加到文本中。";
+Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "拼接";
+Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、移除或重新排列各节来重新配置这个文本块。";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到倒数第#个字符";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到第#个字符";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最后一个字符";
+Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";  // untranslated
+Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "从文本";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "获取子串,从第一个字符";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "获取子串,从倒数第#个字符";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "获取子串,从第#个字符";
+Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "";  // untranslated
+Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回文本中指定的一部分。";
+Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
+Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "寻找第一次出现的文本";
+Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "寻找最后一次出现的文本";
+Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文本 %1 里 %2  %3";
+Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。";
+Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
+Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1是空的";
+Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果给定的文本为空,则返回真。";
+Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
+Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "创建文本,内容:";
+Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通过串起任意数量的项以建立一段文本。";
+Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1的长度";
+Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回给定文本的字母数(包括空格)。";
+Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
+Blockly.Msg["TEXT_PRINT_TITLE"] = "输出%1";
+Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "打印指定的文字、数或其他值。";
+Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
+Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "提示用户输入一个数。";
+Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "要求用户输入一些文本。";
+Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "提示输入数并显示消息";
+Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "要求输入文本,并显示提示消息";
+Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";  // untranslated
+Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "把%3中的%1替换为%2";
+Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "在一段文本中,将出现过的某部分文本都替换掉。";
+Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";  // untranslated
+Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "倒转文本%1";
+Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "将文本中各个字符的顺序倒转。";
+Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字符串";
+Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一个字、词或一行文本。";
+Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
+Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除其两侧的空格";
+Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除其左侧的空格";
+Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除其右侧的空格";
+Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。";
+Blockly.Msg["TODAY"] = "今天";
+Blockly.Msg["UNDO"] = "撤销";
+Blockly.Msg["UNNAMED_KEY"] = "未命名";
+Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "项目";
+Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "创建“设定%1”";
+Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
+Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此变量的值。";
+Blockly.Msg["VARIABLES_SET"] = "赋值 %1 为 %2";
+Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "创建“获得%1”";
+Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
+Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "设置此变量,以使它和输入值相等。";
+Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "名字叫“%1”的变量已经存在了。";
+Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "名字叫“%1”的变量已经有了另一个类型:“%2”。";
+Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作区";
+Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "说点什么...";
+Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
+Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
+Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
+Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
+Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
+Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
+Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
+Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
+Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+
+Blockly.Msg["MATH_HUE"] = "230";
+Blockly.Msg["LOOPS_HUE"] = "120";
+Blockly.Msg["LISTS_HUE"] = "260";
+Blockly.Msg["LOGIC_HUE"] = "210";
+Blockly.Msg["VARIABLES_HUE"] = "330";
+Blockly.Msg["TEXTS_HUE"] = "160";
+Blockly.Msg["PROCEDURES_HUE"] = "290";
+Blockly.Msg["COLOUR_HUE"] = "20";
+Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
+
+
+
+Blockly.Msg.TEXT_IS_NUMBER_HELPURL = '';
+Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP = '判断文本%1,并返回True或False';
+Blockly.Msg.TEXT_IS_NUMBER_MESSAGE0 = '%1 %2';
+
+Blockly.Msg.TEXT_IS_DIGIT = '是数字';
+Blockly.Msg.TEXT_IS_ALPHA = '是字母';
+Blockly.Msg.TEXT_IS_ALNUM = '是数字和字母的组合';
+
+Blockly.Msg.TEXT_LIST_START = "初始化列表 [";
+Blockly.Msg.TEXT_LIST_END = "]";
+Blockly.Msg.TEXT_TUPLE_START = "初始化元组 (";
+Blockly.Msg.TEXT_TUPLE_END = ")";
+Blockly.Msg.TEXT_DICT_START = "初始化字典 {";
+Blockly.Msg.TEXT_DICT_END = "}";
+Blockly.Msg.TEXT_SET_START = "初始化集合 {";
+Blockly.Msg.TEXT_SET_END = "}";
+Blockly.Msg.TEXT_SET_HELPURL = "https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";
+Blockly.Msg.ADD_COMMENT = "添加注释";
+Blockly.Msg.CHANGE_VALUE_TITLE = "更改值:";
+Blockly.Msg.CLEAN_UP = "整理块";
+Blockly.Msg.COLLAPSE_ALL = "折叠块";
+Blockly.Msg.COLLAPSE_BLOCK = "折叠块";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "颜色1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "颜色2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";  // untranslated
+Blockly.Msg.COLOUR_BLEND_RATIO = "比例";
+Blockly.Msg.COLOUR_BLEND_TITLE = "混合";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "用一个给定的比率(0.0-1.0)混合两种颜色。";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://zh.wikipedia.org/wiki/颜色";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "从调色板中选择一种颜色。";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";  // untranslated
+Blockly.Msg.COLOUR_RANDOM_TITLE = "随机颜色";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "随机选择一种颜色。";
+Blockly.Msg.COLOUR_RGB_BLUE = "蓝色";
+Blockly.Msg.COLOUR_RGB_GREEN = "绿色";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";  // untranslated
+Blockly.Msg.COLOUR_RGB_RED = "红色";
+Blockly.Msg.COLOUR_RGB_TITLE = "颜色";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须介于0和100之间。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "中断循环";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "继续下一次循环";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "中断包含它的循环。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "跳过这个循环的剩余部分,并继续下一次迭代。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "警告:此块仅可用于在一个循环内。";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "在列表 %2 中以 %1 遍历每个项目";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "遍历每个列表中的项目,将变量“%1”设定到该项中,然后执行某些语句。";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
+Blockly.Msg.CONTROLS_FOR_TITLE = "使用 %1 从范围 %2 到 %3 每隔 %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "从起始数到结尾数中取出变量“%1”的值,按指定的时间间隔,执行指定的块。";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "在if语句块中增加一个条件。";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "添加一个最终的,包括所有情况的节到if块中。";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
+Blockly.Msg.TRY_EXCEPT_HELPURL = "https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "增加、删除或重新排列各节来重新配置“if”块。";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "否则";
+
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "否则如果";
+
+Blockly.Msg.TRY_EXCEPT_FINALLY = "最后";
+Blockly.Msg.TRY_EXCEPT_FINALLY_TOOLTIP = "";
+Blockly.Msg.TRY_EXCEPT_EXCEPT = "除了";
+Blockly.Msg.TRY_EXCEPT_EXCEPT_TOOLTIP = "";
+Blockly.Msg.TRY_EXCEPT_TRY = "尝试";
+Blockly.Msg.TRY_EXCEPT_TRY_TOOLTIP = "";
+
+Blockly.Msg.CONTROLS_IF_MSG_IF = "如果";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "如果值为真,执行一些语句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "如果值为真,则执行第一块语句。否则,则执行第二块语句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。";
+Blockly.Msg.CONTROLS_REPEAT_FOREVER = "一直重复";
+Blockly.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP = "一直执行一些语句。";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://zh.wikipedia.org/wiki/For循环";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "执行";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "重复 %1 次";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "多次执行一些语句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "重复直到";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "重复当";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "只要值为假,执行一些语句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "只要值为真,执行一些语句。";
+Blockly.Msg.DELETE_ALL_BLOCKS = "删除所有%1块吗?";
+Blockly.Msg.DELETE_BLOCK = "删除块";
+Blockly.Msg.DELETE_VARIABLE = "删除“%1”变量";
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "删除“%2”变量的%1种用途么?";
+Blockly.Msg.DELETE_X_BLOCKS = "删除块";//"删除 %1 块";
+Blockly.Msg.DISABLE_BLOCK = "禁用块";
+Blockly.Msg.DUPLICATE_BLOCK = "复制";
+Blockly.Msg.ENABLE_BLOCK = "启用块";
+Blockly.Msg.EXPAND_ALL = "展开块";
+Blockly.Msg.EXPAND_BLOCK = "展开块";
+Blockly.Msg.EXTERNAL_INPUTS = "多行输入";
+Blockly.Msg.HELP = "帮助";
+Blockly.Msg.INLINE_INPUTS = "单行输入";
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "创建空列表";
+Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE = "创建空元组";
+Blockly.Msg.DICT_CREATE_EMPTY_TITLE = "创建空字典";
+Blockly.Msg.SET_CREATE_EMPTY_TITLE = "创建空集合";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "返回一个列表,长度为 0,不包含任何数据记录";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "列表";
+Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD = "元组";
+Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD = "字典";
+Blockly.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD = "集合";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "增加、删除或重新排列各部分以此重新配置这个列表块。";
+Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP = "增加、删除或重新排列各部分以此重新配置这个元组块。";
+Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP = "增加、删除或重新排列各部分以此重新配置这个字典块。";
+Blockly.Msg.SET_CREATE_WITH_CONTAINER_TOOLTIP = "增加、删除或重新排列各部分以此重新配置这个集合块。";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+/* Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "建立数组 使用"; */
+Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "初始化列表";
+Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH = "初始化元组";
+Blockly.Msg.DICT_CREATE_WITH_INPUT_WITH = "初始化字典";
+Blockly.Msg.SET_CREATE_WITH_INPUT_WITH = "初始化集合";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "将一个项添加到列表中。";
+Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP = "将一个项添加到元组中。";
+Blockly.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP = "将一个项添加到字典中。";
+Blockly.Msg.SET_CREATE_WITH_ITEM_TOOLTIP = "将一个项添加到集合中。";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "建立一个具有任意数量项目的列表。";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "第一";
+// Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒数第#";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒数第";
+// Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "第";
+Blockly.Msg.LISTS_GET_INDEX_GET = "获得";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "取出并移除";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "最后";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "随机";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "移除";
+
+Blockly.Msg.LISTS_POP_HELPURL = "";
+Blockly.Msg.LISTS_POP_TOOLTIP = "";
+Blockly.Msg.LISTS_POP_MESSAGE0 = "在列表 %1 中移除 %2 项";
+
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "返回列表中的第一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "返回在列表中的指定位置的项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "返回列表中的最后一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "随机返回列表中的一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "移除并返回列表中的第一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "移除并返回列表中的指定位置的项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "移除并返回列表中的最后一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "移除并返回列表中的一个随机项目中。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "移除列表中的第一项";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "移除在列表中的指定位置的项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "移除列表中的最后一项";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "删除列表中的一个随机的项。";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "到倒数第#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "到#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "到最后";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "从头获得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "从倒数#取得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "从#取得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "复制列表中指定的部分。";
+Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1是最后一项。";
+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1是第一个项目。";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "找出第一个项出现";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";  // untranslated
+Blockly.Msg.LISTS_INDEX_OF_LAST = "找出最后一个项出现";
+/* Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。"; */
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回0";
+Blockly.Msg.LISTS_INLIST = "在列表中";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "如果改列表为空,则返回真。";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
+Blockly.Msg.LISTS_LENGTH_TITLE = "%1的长度";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "返回列表的长度。";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+/* Blockly.Msg.LISTS_REPEAT_TITLE = "建立列表使用项 %1 重复 %2 次"; */
+Blockly.Msg.LISTS_REPEAT_TITLE = "建立列表 项 %1 重复 %2 次";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "建立包含指定重复次数的值的列表。";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "为";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "插入在";
+Blockly.Msg.LISTS_SET_INDEX_SET = "设置";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "在列表的起始处添加该项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "插入在列表中指定位置的项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "将该项追加到列表的末尾。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "在列表中随机插入项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "设置列表中的第一个项目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "设置在列表中指定位置的项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "设置列表中的最后一项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "设置列表中一个随机的项目。";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "升序";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "降序";
+Blockly.Msg.LISTS_SORT_TITLE = "排序%1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "排序一个列表的拷贝。";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "按字母排序,忽略大小写";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "按数字排序";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "按字母排序";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "从文本制作列表";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "从列表组合文本";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "加入文本列表至一个文本,由分隔符分隔。";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "拆分文本到文本列表,按每个分隔符拆分。";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "用分隔符";
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "假";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "返回真或假。";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "真";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "如果两个输入结果相等,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "如果第一个输入结果比第二个大,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "如果第一个输入结果大于或等于第二个输入结果,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "如果第一个输入结果比第二个小,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "如果第一个输入结果小于或等于第二个输入结果,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "如果两个输入结果不相等,则返回真。";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "非%1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "如果输入结果为假,则返回真;如果输入结果为真,则返回假。";
+Blockly.Msg.LOGIC_NULL = "空";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";  // untranslated
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "返回空值。";
+Blockly.Msg.LOGIC_OPERATION_AND = "和";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
+Blockly.Msg.LOGIC_OPERATION_OR = "或";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "如果两个输入结果都为真,则返回真。";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "如果至少有一个输入结果为真,则返回真。";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "测试";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://zh.wikipedia.org/wiki/条件运算符";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "如果为假";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "如果为真";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "检查“test”中的条件。如果条件为真,则返回“if true”的值,否则,则返回“if false”的值。";
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+";  // untranslated
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://zh.wikipedia.org/wiki/算术";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "返回两个数字的和。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "返回两个数字的商。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "返回两个数字的区别。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "返回两个数字的乘积。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "返回第一个数的第二个数次幂。";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://zh.wikipedia.org/wiki/%E5%8A%A0%E6%B3%95";
+Blockly.Msg.MATH_CHANGE_TITLE = "将变量 %1 的值增加 %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "将一个数添加到变量“%1”。";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://zh.wikipedia.org/wiki/数学常数";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "返回一个常见常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(无穷大)。";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";  // untranslated
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "限制数字 %1 介于 (低) %2 到 (高) %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "限制数字介于两个指定的数字之间";
+Blockly.Msg.MATH_CONVERT_HELPURL = "";
+Blockly.Msg.MATH_CONVERT_MESSAGE0 = "%1 %2";
+Blockly.Msg.MATH_CONVERT_TOOLTIP = "强制转换数据类型";
+Blockly.Msg.MATH_DIVISION_CONSULT_HELPURL = "";
+Blockly.Msg.MATH_DIVISION_CONSULT_TITLE = "%1 ÷ %2 商的整数部分";
+Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP = "返回两数商的整数部分";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";  // untranslated
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "可被整除";
+Blockly.Msg.MATH_IS_EVEN = "是偶数";
+Blockly.Msg.MATH_IS_NEGATIVE = "为负";
+Blockly.Msg.MATH_IS_ODD = "是奇数";
+Blockly.Msg.MATH_IS_POSITIVE = "为正";
+Blockly.Msg.MATH_IS_PRIME = "是质数";
+Blockly.Msg.MATH_IS_TOOLTIP = "如果数字是偶数、奇数、非负整数、正数、负数或如果它可被某数字整除,则返回真或假。";
+Blockly.Msg.MATH_IS_WHOLE = "为整数";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg.MATH_MODULO_TITLE = "%1 ÷ %2 的余数";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "返回这两个数字相除后的余数。";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";  // untranslated
+Blockly.Msg.MATH_NUMBER_BITS_OPS_HELPURL = "";
+Blockly.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0 = "%1 %2 %3";
+Blockly.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP = "对数字进行位运算";
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://zh.wikipedia.org/wiki/数";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "一个数字。";
+Blockly.Msg.MATH_ONLIST_HELPURL = "";  // untranslated
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "列表中的平均数";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "列表中的最大值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "列表中位数";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "列表中的最小值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "列表模式";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "列表的随机项";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "列表中的标准差";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "列表中的数的总和";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "返回列表中的数值的平均值。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "返回列表中最大数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "返回列表中的中位数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "返回列表中最小数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "返回列表中的最常见的项的列表。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "从列表中返回一个随机的元组。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "返回列表的标准偏差。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "返回列表中的所有数字的和。";
+Blockly.Msg.MATH_POWER_SYMBOL = "**";  // untranslated
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "随机小数";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "返回介于(包含)0.0到1.0之间的随机数。";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "从 %1 到 %2 之间的随机整数";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "返回两个指定的范围(含)之间的随机整数。";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://zh.wikipedia.org/wiki/数值修约";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "四舍五入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "向下舍入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "向上舍入";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "数字向上或向下舍入。";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "绝对";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "平方根";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "返回一个数的绝对值。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "返回数的e次幂。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "返回一个数的自然对数。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "返回数字的对数。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "返回数的逻辑非。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "返回数的10次幂。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "返回数的平方根。";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";  // untranslated
+Blockly.Msg.MATH_TRIG_ACOS = "acos";  // untranslated
+Blockly.Msg.MATH_TRIG_ASIN = "asin";  // untranslated
+Blockly.Msg.MATH_TRIG_ATAN = "atan";  // untranslated
+Blockly.Msg.MATH_TRIG_COS = "cos";  // untranslated
+Blockly.Msg.MATH_TRIG_HELPURL = "https://zh.wikipedia.org/wiki/三角函数";
+Blockly.Msg.MATH_TRIG_SIN = "sin";  // untranslated
+Blockly.Msg.MATH_TRIG_TAN = "tan";  // untranslated
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "返回一个数的反余弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "返回一个数的反正弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "返回指定角度的反正切值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "返回指定角度的余弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg.NEW_VARIABLE = "创建变量...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "新变量的名称:";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "";
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "允许声明";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "参数:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "运行用户定义的函数“%1”。";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "运行用户定义的函数“%1”,并使用它的输出值。";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "与:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "创建“%1”";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "";//"描述该功能...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "my_func";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "定义函数";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "创建一个不带输出值的函数。";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "返回";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "创建一个有输出值的函数。";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "警告: 此函数具有重复参数。";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "突出显示函数定义";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "如果值为真,则返回第二个值。";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "警告: 仅在定义函数内可使用此块。";
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "输入名称:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "添加函数输入。";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "输入";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "添加、删除或重新排此函数的输入。";
+Blockly.Msg.REDO = "重做";
+Blockly.Msg.REMOVE_COMMENT = "删除注释";
+Blockly.Msg.RENAME_VARIABLE = "重命名变量...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "将所有“%1”变量重命名为:";
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "追加文本";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+/* Blockly.Msg.TEXT_APPEND_TO = "在"; */
+Blockly.Msg.TEXT_APPEND_TO = "";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "将一些文本追加到变量“%1”。";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "转为小写";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "转为首字母大写";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "转为大写";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "使用不同的大小写复制这段文字。";
+Blockly.Msg.TEXT_CHARAT_FIRST = "获得第一个字符";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "获得倒数第#个字符";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "获得字符#";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
+/* Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "于文本中"; */
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "从文本";
+Blockly.Msg.TEXT_CHARAT_LAST = "获得最后一个字符";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "获取随机的字母";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "返回位于指定位置的字母。";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "将一个项添加到文本中。";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "加入";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "添加、移除或重新排列各节来重新配置这个文本块。";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "到倒数第#个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "到字符#";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "到最后一个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";  // untranslated
+/* Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "自文本"; */
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "从文本";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "取得一段字串自第一个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "取得一段字串自倒数第#个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "取得一段字串自#";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "返回指定的部分文本。";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
+/* Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "自文本"; */
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "在文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "中查找 最先 出现";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "中查找 最后 出现";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "的位置";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "返回在第二个字串中的第一/最后一个匹配项的索引值。如果未找到则返回%1。";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "如果提供的文本为空,则返回真。";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
+/* Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "建立字符串 使用"; */
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "转为文本";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "通过串起任意数量的项以建立一段文字。";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg.TEXT_LENGTH_TITLE = "%1的长度";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "返回提供文本的字母数(包括空格)。";
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
+Blockly.Msg.TEXT_PRINT_TITLE = "打印%1";
+Blockly.Msg.CocoRobo_INPUT_MESSAGE0 ='输入%1';
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "打印指定的文字、数字或其他值。";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "提示用户输入数字。";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "提示用户输入一些文本。";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "输入数字并显示提示消息";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "输入数字并显示提示消息";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://zh.wikipedia.org/wiki/字符串";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "一个字母、单词或一行文本。";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "消除两侧空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "消除左侧空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "消除右侧空格";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "复制这段文字的同时删除两端多余的空格。";
+Blockly.Msg.TODAY = "今天";
+Blockly.Msg.UNDO = "撤销";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "item";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "创建“设定%1”";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "返回此变量的值。";
+Blockly.Msg.VARIABLES_SET = "将变量 %1 设定为 %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "创建“获得%1”";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "设置此变量,以使它和输入值相等。";
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "已存在名为“%1”的变量。";
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+
+Blockly.Msg.TRY_EXCEPT_TRY = '尝试';
+
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.DICT_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.SET_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+/**
+*原生end
+*/
+
+
+Blockly.Msg.CocoRobo_OPEN = '开启';
+Blockly.Msg.CocoRobo_CLOSE = '关闭';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT = '左移';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT = '右移';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP = '上移';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN = '下移';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE = '灰度';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW = '彩虹';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE = '数字反转';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT = '黑白翻转';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR = '线性极';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR = '对数极';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE = '灰度';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR = '彩色';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_START = '开始抓取图像';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP = '停止抓取图像';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H = '水平镜像';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V = '垂直翻转';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST = '对比度';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS = '亮度';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION = '饱和度';
+
+Blockly.Msg.CocoRobo_AI2_FACE_YOLO = '人脸检测';
+Blockly.Msg.CocoRobo_AI2_CLASS_20_YOLO = '20类识别';
+Blockly.Msg.CocoRobo_AI2_MNIST_NET = '数字识别';
+
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_FACE_YOLO = '人脸';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_CLASS_20_YOLO = '20类';
+
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE = '矩形';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_CROSS = '十字';
+
+
+/*文本- 开始 */
+Blockly.Msg.TEXT_APPEND_TEXT_HELPURL = '';
+Blockly.Msg.TEXT_APPEND_TEXT_TOOLTIP = '在指定文本后追加文本,并返回结果';
+Blockly.Msg.TEXT_APPEND_TEXT_MESSAGE0 = '%1 追加文本 %2';
+
+
+
+/*文本 - 结束 */
+
+
+Blockly.Msg.CHINA_CITY_MESSAGE0 = '%1 %2';
+Blockly.Msg.CHINA_CITY_TOWN_MESSAGE0 = '%1 %2 %3 返回 %4';
+Blockly.Msg.CHINA_CITY_CNNAME = '中文简称';
+Blockly.Msg.CHINA_CITY_PINYIN = '拼音';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_1 = '简体中文';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_2 = '正體中文';
+
+Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_HELPURL = '';
+Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_MESSAGE0 = '[心知天气] %1 信息 %2 地理位置 %3 API私钥 %4 %5 语言 %6 %7 温度单位 %8';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_1 = '天气实况';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_2 = '3天天气预报';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_3 = '6项生活指数';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_1 = '摄氏度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_2 = '华氏度';
+
+Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_HELPURL = '';
+Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_MESSAGE0 = '设定 %1 为 %2';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_TOOLTIP = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_MESSAGE0 = '%1 [心知天气] 通用字段 %2';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_TOOLTIP = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_MESSAGE0 = '%1 [心知天气] 天气实况 %2';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_TOOLTIP = '风向角度,范围0~360\n风速,单位km/h(当unit=c时)、mph(当unit=f时)';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_MESSAGE0 = '%1 [心知天气] 3天天气预报 %2 的 %3';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_TOOLTIP = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_MESSAGE0 = '%1 [心知天气] 6项生活指数 %2';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_city_name = '城市名称';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_city_id = '城市ID';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_country = '国家代码';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_path = '行政归属';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_timezone = '时区';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_timezone_offset = 'UTC偏移量';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_last_update_date = '数据更新日期';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_last_update = '数据更新时间';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_object = '原始字典对象';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text = '天气现象';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code = '天气现象代码';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_temperature = '温度';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_today = '今天';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_tomorrow = '明天';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_the_day_after_tomorrow = '后天';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_date = '日期';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text_day = '白天天气现象';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code_day = '白天天气现象代码';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text_night = '晚间天气现象';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code_night = '晚间天气现象代码';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_high = '当天最高温度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_low = '当天最低温度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction = '风向';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction_degree = '风向角度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_speed = '风速';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_scale = '风力等级';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_car_washing = '洗车指数';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_dressing = '穿衣指数';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_flu = '感冒指数';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_sport = '运动指数';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_travel = '旅游指数';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_uv = '紫外线指数';
+
+/*
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_CODE = '天气现象代码';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEMP_C = '气温(摄氏度)';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEMP_F = '气温(华氏度)';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEXT_ZHS = '天气现象文字';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEXT_ZHT = '天氣現象文字';*/
+
+/*教科板 - 扩展 - Bluebit - 开始 */
+Blockly.Msg.CocoRobo_RED = '红';
+Blockly.Msg.CocoRobo_GREEN = '绿';
+Blockly.Msg.CocoRobo_BLUE = '蓝';
+
+Blockly.Msg.CocoRobo_BLUEBIT_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_MESSAGE0 ='I2C超声波';
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_MESSAGE0 ='%1 被触发 引脚%2';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_MESSAGE0 ='%1 模拟值 引脚%2';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_MESSAGE0 ='设置LED灯 输出%1 引脚%2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_MESSAGE0 ='循迹传感器 检测为黑 引脚%1';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_MESSAGE0 ='打开 %1 引脚 %2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_MESSAGE0 ='关闭 %1 引脚 %2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_MESSAGE0 = '打开录放器 %1 %2 REC %3  PLAY %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_MESSAGE0 = '关闭录放器 %1  REC %2  PLAY %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY = '播放';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_REC = '录音';
+
+Blockly.Msg.CocoRobo_BLUEBIT_IR_RECEIVE = '红外探测';
+Blockly.Msg.CocoRobo_BLUEBIT_SOUND  = '麦克风';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER  = '循迹';
+Blockly.Msg.CocoRobo_BLUEBIT_VIBRATION  = '震动';
+Blockly.Msg.CocoRobo_BLUEBIT_RFID  = '射频卡';
+Blockly.Msg.CocoRobo_BLUEBIT_FINGERPRINT_SCANNER  = '指纹';
+Blockly.Msg.CocoRobo_BLUEBIT_PIR  = '人体感应';
+Blockly.Msg.CocoRobo_BLUEBIT_MAGNETIC  = '门磁开关';
+Blockly.Msg.CocoRobo_BLUEBIT_BUTTON  = '按键';
+
+Blockly.Msg.CocoRobo_BLUEBIT_FAN  = '风扇';
+Blockly.Msg.CocoRobo_BLUEBIT_LASER  = '激光';
+
+Blockly.Msg.CocoRobo_BLUEBIT_NTC_TEMP  = '热敏电阻';
+Blockly.Msg.CocoRobo_BLUEBIT_WATER  = '水位';
+Blockly.Msg.CocoRobo_BLUEBIT_SOIL_MOISTURE  = '土壤湿度';
+Blockly.Msg.CocoRobo_BLUEBIT_ROTATE_DIMMER  = '旋钮电位器';
+Blockly.Msg.CocoRobo_BLUEBIT_LINEAR_SLIDING_POTENTIOMETER  = '直滑电位器';
+Blockly.Msg.CocoRobo_BLUEBIT_ANALOG_LIGHT  = '模拟光线';
+Blockly.Msg.CocoRobo_BLUEBIT_LM35_TEMP  = 'LM35温度';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE  = '正转';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE  = '反转';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_HELPURL  = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_TOOLTIP  = '速度:-100~100 映射至 -1023~1023';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_MESSAGE0  ='打开直流电机 %1 速度 %2 引脚AIN1 %3 引脚AIN2 %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_HELPURL  = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_TOOLTIP  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_MESSAGE0  = '停止直流电机 %1 引脚AIN1 %2 引脚AIN2 %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_HELPURL  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_TOOLTIP  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_MESSAGE0 = '扩展板 打开风扇 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_HELPURL  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_TOOLTIP  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_MESSAGE0  = '扩展板 关闭风扇 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_HELPURL = 'http://wiki.CocoRobo_BLUEBIT.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE';
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_MESSAGE0 = '四向按键模組 引脚 %1 按键 %2 被按下';
+Blockly.Msg.BLUE = 'A';
+Blockly.Msg.GREEN = 'B';
+Blockly.Msg.RED = 'C';
+Blockly.Msg.YELLOW = 'D';
+
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_MESSAGE0 = '摇杆 引脚A0 %1 引脚A1 %2   %3 轴的值';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_TOOLTIP = '速度:0~100';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_MESSAGE0 = '扩展板 打开直流电机 %1  %2 速度 %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_BLUEBIT_MOTOR_OFF_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_TOOLTIP = '速度:0~100';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_MESSAGE0 = '扩展板 关闭直流电机';
+
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_TOOLTIP = '速度:-1023~1023';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_MESSAGE0 = '编码电机 模式 %1 拨码 %2  M1速度 %3  M2速度 %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_TOOLTIP = '停止编码电机转动';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_MESSAGE0 = '停止编码电机转动 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_MESSAGE0 = 'I2C %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_TEMPERATURE = '温度';
+Blockly.Msg.CocoRobo_BLUEBIT_HUMIDITY = '湿度';
+
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_MESSAGE0 = '初始化MIDI TX引脚 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_MESSAGE0 = '设MIDI音量 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_TOOLTIP = '音量 0~127';
+
+Blockly.Msg.MIDI_PIANO = "平台钢琴"; //ACOUSTIC GRAND PIANO
+Blockly.Msg.MIDI_BRIGHTACOUSTICPIANO = "亮音钢琴";
+Blockly.Msg.MIDI_ELECTRICGRANDPIANO = "电钢琴";
+Blockly.Msg.MIDI_HARPSICHORD = "大键琴";
+Blockly.Msg.MIDI_CELESTA = "钢片琴";
+Blockly.Msg.MIDI_GLOCKENSPIEL = "钟琴";
+Blockly.Msg.MIDI_MUSICALBOX = "音乐盒";
+Blockly.Msg.MIDI_MARIMBA = "马林巴琴";
+Blockly.Msg.MIDI_XYLOPHONE = "木琴";
+Blockly.Msg.MIDI_TUBULARBELL = "管钟";
+Blockly.Msg.MIDI_DULCIMER = "洋琴";
+Blockly.Msg.MIDI_VIBRAPHONE = "颤音琴"; //VIBRAPHONE
+Blockly.Msg.MIDI_ORGAN = "音栓风琴"; //DRAWBAR ORGAN
+Blockly.Msg.MIDI_ACOUSTIC_GUITAR = "木吉他"; //ACOUSTIC GUITAR
+Blockly.Msg.MIDI_ELECTRIC_GUITAR = "电吉他"; //ELECTRIC GUITAR
+Blockly.Msg.MIDI_ACOUSTIC_BASS = "民谣贝斯";  //ACOUSTIC BASS
+Blockly.Msg.MIDI_STRING_ENSEMBLE = "弦乐合奏";  //STRING ENSEMBLE
+Blockly.Msg.MIDI_VIOLIN = "小提琴";  //VIOLIN
+Blockly.Msg.MIDI_TRUMPET = "小号";  //TRUMPET
+Blockly.Msg.MIDI_SAX = "萨克斯";  //SAX
+Blockly.Msg.MIDI_STEEL_DRUMS = "钢鼓";  //STEEL DRUMS
+Blockly.Msg.MIDI_LEAD = "合成音主旋律";  //LEAD
+Blockly.Msg.MIDI_PAD = "合成音衬底";  //PAD
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_MESSAGE0 = '设MIDI乐器 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_MESSAGE0 = 'MIDI %1 音调 %2';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_MESSAGE0 = '设点阵亮度等級 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_TOOLTIP = '亮度等級 0~15';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_MESSAGE0 = '点阵 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_MESSAGE0 = '设置点阵  %1 %2 %3 %4 %5 %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 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_MESSAGE0 = '点阵设置生效';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_MESSAGE0 = '设MP3音量 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_TOOLTIP = '音量:0~30';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_MESSAGE0 = '初始化MP3 TX引脚 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_TOOLTIP = '教科板的 tx 引脚连接音乐模組的 RXI 引脚';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_MESSAGE0 = 'MP3 音量 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_TOOLTIP = '';
+Blockly.Msg.CocoRobo_PLUS_1 = '加1';
+Blockly.Msg.CocoRobo_MINUS_1 = '減1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_MESSAGE0 = 'MP3 播放第 %1 首歌';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_MESSAGE0 = 'MP3 播放 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_MESSAGE0 = 'MP3 单曲循环 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_MESSAGE0 = '设扩展端口 IO %2 为 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_TOOLTIP = 'IO: 0~7';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_MESSAGE0 = '扩展端口值 IO %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_MESSAGE0 = '设扩展端口 IO %2 为 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_OBJECT_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_OBJECT_MESSAGE0 = 'LCD1602 初始化';
+Blockly.Msg.CocoRobo_LCD_OBJECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_PRINT_MESSAGE0 = 'LCD1602 显示 %1';
+Blockly.Msg.CocoRobo_LCD_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_HOME_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_HOME_MESSAGE0 = 'LCD1602 光标 回到原点';
+Blockly.Msg.CocoRobo_LCD_HOME_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_CURSOR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_CURSOR_MESSAGE0 = 'LCD1602 光标 %1';
+Blockly.Msg.CocoRobo_LCD_CURSOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0 = 'LCD1602 起始点 行 %2 列 %1';
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP = '行列从0开始计数';
+
+Blockly.Msg.CocoRobo_LCD_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_CLEAR_MESSAGE0 = 'LCD1602 清屏';
+Blockly.Msg.CocoRobo_LCD_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_CURSOR_BLINK = '闪烁';
+Blockly.Msg.CocoRobo_LCD_CURSOR_NO_BLINK = '不闪烁';
+
+Blockly.Msg.CocoRobo_LEFT_TO_RIGHT = '从左向右';
+Blockly.Msg.CocoRobo_RIGHT_TO_LEFT = '从右向左';
+
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0 = 'LCD1602 文字方向 %1';
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_MOVE_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_MOVE_MESSAGE0 = 'LCD1602 向 %1 滚动一格';
+Blockly.Msg.CocoRobo_LCD_MOVE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IR_TRANS_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_TRANS_MESSAGE0 = '红外发送 单字节字符串 %1 tx 引脚 %2';
+Blockly.Msg.CocoRobo_IR_TRANS_TOOLTIP = 
+`
+单字节字符串:
+'A', 'b', '1'等
+`
+
+Blockly.Msg.OUTPUT_PIN_HELPURL = '';
+Blockly.Msg.OUTPUT_PIN_MESSAGE0 = '%1';
+Blockly.Msg.OUTPUT_PIN_TOOLTIP = "";
+
+Blockly.Msg.INPUT_PIN_HELPURL = '';
+Blockly.Msg.INPUT_PIN_MESSAGE0 = '%1';
+Blockly.Msg.INPUT_PIN_TOOLTIP = ""; 
+
+Blockly.Msg.READ_ANALOG_PIN_HELPURL = ''
+Blockly.Msg.READ_ANALOG_PIN_MESSAGE0 = '%1'
+Blockly.Msg.READ_ANALOG_PIN_TOOLTIP = ""
+
+Blockly.Msg.SET_DIGITAL_HELPURL = ''
+Blockly.Msg.SET_DIGITAL_MESSAGE0 = '%1'
+Blockly.Msg.SET_DIGITAL_TOOLTIP = ""
+
+Blockly.Msg.SET_ANALOG_HELPURL = ''
+Blockly.Msg.SET_ANALOG_MESSAGE0 = '%1'
+Blockly.Msg.SET_ANALOG_TOOLTIP = ""
+
+Blockly.Msg.ALL_PIN_HELPURL = ''
+Blockly.Msg.ALL_PIN_MESSAGE0 = '%1'
+Blockly.Msg.ALL_PIN_TOOLTIP = ""
+
+Blockly.Msg.PWM_PIN_HELPURL = ''
+Blockly.Msg.PWM_PIN_MESSAGE0 = '%1'
+Blockly.Msg.PWM_PIN_TOOLTIP = ""
+
+Blockly.Msg.DH11_HUM_TEM_PIN_HELPURL = ''
+Blockly.Msg.DH11_HUM_TEM_PIN_MESSAGE0 = '%1'
+Blockly.Msg.DH11_HUM_TEM_PIN_TOOLTIP = ""
+
+Blockly.Msg.UART_TX_PIN_HELPURL = ''
+Blockly.Msg.UART_TX_PIN_MESSAGE0 = '%1'
+Blockly.Msg.UART_TX_PIN_TOOLTIP = ""
+
+Blockly.Msg.UART_RX_PIN_HELPURL = ''
+Blockly.Msg.UART_RX_PIN_MESSAGE0 = '%1'
+Blockly.Msg.UART_RX_PIN_TOOLTIP = ""
+
+Blockly.Msg.I2C_PIN_HELPURL = ''
+Blockly.Msg.I2C_PIN_MESSAGE0 = '%1'
+Blockly.Msg.I2C_PIN_TOOLTIP = ""
+
+
+
+
+
+
+Blockly.Msg.MQTT_COMMON_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_COMMON_SETUP_MESSAGE0 = 'MQTT %1 client_id %2 server %3 port %4 user %5 password %6 keepalive %7';
+Blockly.Msg.MQTT_COMMON_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_TENCENT_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_TENCENT_SETUP_MESSAGE0 = 'MQTT 腾讯物联网 %1 服务器 %2 Port %3 AppId %4 Device %5 -- 传出参数 -- %6 ReportTopic %7 ControlTopic %8';
+Blockly.Msg.MQTT_TENCENT_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_TENCENT_SETUPS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_TENCENT_SETUPS_MESSAGE0 = 'MQTT 腾讯物联网 %1 服务器 %2 Port %3 AppId %4 Device %5 -- 传出参数 -- %6 ReportTopic %7 ControlTopic %8';
+Blockly.Msg.MQTT_TENCENT_SETUPS_TOOLTIP = "";
+
+Blockly.Msg.MQTT_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_SETUP_MESSAGE0 = 'MQTT-Easy IoT %1 服务器 %2  Client ID %5 Iot_id %3 Iot_pwd %4';
+Blockly.Msg.MQTT_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_CONNECT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_CONNECT_MESSAGE0 = '连接 MQTT';
+Blockly.Msg.MQTT_CONNECT_TOOLTIP = "";
+
+
+Blockly.Msg.MQTT_PUBLISH_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_PUBLISH_MESSAGE0 = '发布 %1  至  主题 %2';
+Blockly.Msg.MQTT_PUBLISH_TOOLTIP = "";
+
+Blockly.Msg.MQTT_REC_FROM_TOPIC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_REC_FROM_TOPIC_MESSAGE0 = '当从主题 %1 接收到 %2 时';
+Blockly.Msg.MQTT_REC_FROM_TOPIC_TOOLTIP = "";
+
+Blockly.Msg.MQTT_RECEIVE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_RECEIVE_MESSAGE0 = '当从主题 %1 接收到 %2 时';
+Blockly.Msg.MQTT_RECEIVE_TOOLTIP = "参数\"主题\"只接受变量";
+
+Blockly.Msg.MQTT_WAIT_MSG_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_WAIT_MSG_MESSAGE0 = '等待主题消息 以 %1 模式';
+Blockly.Msg.MQTT_WAIT_MSG_TOOLTIP = "建议放在'一直重复'中运行";
+
+
+Blockly.Msg.MQTT_DISCONNECT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_DISCONNECT_MESSAGE0 = 'MQTT 断开连接';
+Blockly.Msg.MQTT_DISCONNECT_TOOLTIP = "";
+
+
+Blockly.Msg.MQTT_LAST_WILL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will'
+Blockly.Msg.MQTT_LAST_WILL_MESSAGE0 = '设置 MQTT 主题 %2 离线消息 %1';
+Blockly.Msg.MQTT_LAST_WILL_TOOLTIP = "设置 MQTT last will 消息。应该在 connect() 之前调用。";
+
+Blockly.Msg.MQTT_LAST_WILL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will'
+Blockly.Msg.MQTT_LAST_WILL_MESSAGE0 = '设置 MQTT 主题 %2 离线消息 %1';
+Blockly.Msg.MQTT_LAST_WILL_TOOLTIP = "设置 MQTT last will 消息。应该在 connect() 之前调用。";
+
+Blockly.Msg.CocoRobo_IR_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_RECV_MESSAGE0 = '红外接收 整型  rx 引脚 %1';
+Blockly.Msg.CocoRobo_IR_RECV_TOOLTIP = '第一次接收总为空';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_MESSAGE0 = 'bluebit LCD 显示 %1 x %2 y %3';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_MESSAGE0 = 'bluebit LCD 初始化 tx %1 rx %2';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_MESSAGE0 = 'bluebit LCD 清空';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_MESSAGE0 = 'bluebit LCD 显示图像 x %1 y %2 宽 %3 高 %4 16进制图像数据 %5';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_TOOLTIP = '';
+
+
+
+/*教科板 - 扩展 - Bluebit - 结束 */
+
+/*掌控实验箱*/
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0 = 'BME280 %1';
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP = '气压单位Pa, 温度单位摄氏度, 环境湿度单位%';
+
+Blockly.Msg.CocoRobobox_sound_MESSAGE0 ='声音值';
+Blockly.Msg.CocoRobobox_sound_TOOLTIP = '采样数据,为0~4095。';
+Blockly.Msg.CocoRobobox_sound_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo.html';
+
+Blockly.Msg.CocoRoboBOX_SLIDER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_SLIDER_MESSAGE0 = '滑杆';
+Blockly.Msg.CocoRoboBOX_SLIDER_TOOLTIP = '返回滑杆电阻采样值。范围0~4095。';
+
+Blockly.Msg.CocoRoboBOX_5BUTTON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_5BUTTON_MESSAGE0 = '五向按键%1';
+Blockly.Msg.CocoRoboBOX_5BUTTON_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_MOTOR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_MOTOR_MESSAGE0 = '马达 速度%1';
+Blockly.Msg.CocoRoboBOX_MOTOR_TOOLTIP = '马达速度,范围±100。正值表示正转,负值则反。';
+
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key';
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_MESSAGE0 = '超声波';
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_TOOLTIP = '超声波测距,获取超声波传感器测距值,单位cm。范围3~340CM';
+
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key';
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_MESSAGE0 = '人体红外';
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_TOOLTIP = '返回人体红外触发值。当为1时,表示已触发;当为0时,表示未触发。';
+
+Blockly.Msg.CocoRoboBOX_RGB_pixel_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_MESSAGE0 = '设定第 %1列 %2行  R%3 G%4 B%5';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_TOOLTIP = '设定第多少列,行的RGB顏色';
+
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_HELPURL = ''; 
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_MESSAGE0 = '返回 第%1列 %2行 RGB颜色';
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_TOOLTIP = '返回第多少列,行位置的RGB颜色';
+
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_MESSAGE0 = '滚动显示文本%1  速度%2';
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_TOOLTIP = '滚动显示文本,亮度为0不亮,9最亮';
+
+Blockly.Msg.CocoRoboBOX_RGB_Image_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_Image_MESSAGE0 = '显示图像%1';
+Blockly.Msg.CocoRoboBOX_RGB_Image_TOOLTIP = '显示图像';
+
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_MESSAGE0 = '创建图像 %1 第一行%2第二行%3第三行%4第四行%5第五行%6';
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_TOOLTIP = '创建新图像,每行每位数代表第几位灯,默认红色;亮度为0不亮,9最亮。';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_MESSAGE0 = '显示图像/文本 %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_TOOLTIP = '显示图像或文本消息。';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_MESSAGE0 = '显示图像 %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_TOOLTIP = '显示图像。';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_MESSAGE0 = '复制图像 %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_TOOLTIP = '复制图像。';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_MESSAGE0 = '切剪图像%1  列%2  行%3 宽%4 高%5';
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_TOOLTIP = '切剪图像';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_MESSAGE0 = '内置图像 %1';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_TOOLTIP = '选择一个内置的图像。';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_MESSAGE0 = '平移图像 %1 %2 %3 位';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_TOOLTIP = '向特定方向移动图像,并返回移动后的结果。';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_clear_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_clear_MESSAGE0 = '关闭所有 RGB 灯';
+Blockly.Msg.CocoRoboBOX_RGB_clear_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_MESSAGE0 = '返回第 %1列 %2行 颜色';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_TOOLTIP = '返回第多少列,行的RGB顏色';
+
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_MESSAGE0 = '%1轴加速度';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_TOOLTIP = '单位g,范围-2~+2g。';
+
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_MESSAGE0 = '%1轴角速度';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_TOOLTIP = '范围±500°/秒';
+
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_MESSAGE0 = '%1欧拉角';
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_TOOLTIP = '返回当前欧拉角(Pitch,Roll,Yaw),单位角度';
+
+Blockly.Msg.CocoRoboBOX_QUATERNION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_QUATERNION_MESSAGE0 = '%1四元数';
+Blockly.Msg.CocoRoboBOX_QUATERNION_TOOLTIP = '返回当前四元数(w,x,y,z)';
+
+Blockly.Msg.LIST_FIRST_INDEX_HELPURL = '';
+Blockly.Msg.LIST_FIRST_INDEX_MESSAGE0 = '项 %1 在列表 %2 %3 出现的位置';
+Blockly.Msg.LIST_FIRST_INDEX_TOOLTIP = '返回指定字符串在列表中%3出现的位置';
+
+/*AI类*/
+Blockly.Msg.CocoRobo_AI_LCD_INIT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.init';
+Blockly.Msg.CocoRobo_AI_LCD_INIT_MESSAGE0 = '屏幕 初始化 ';
+Blockly.Msg.CocoRobo_AI_LCD_INIT_TOOLTIP = '初始化 屏幕显示';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0';
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_MESSAGE0 = '摄像头 初始化';
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_TOOLTIP = '初始化单目摄像头';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_MESSAGE0 = '摄像头%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_TOOLTIP = '获取图像';
+
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MESSAGE0 = '显示文本 x %1 y %2 内容 %3';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_TOOLTIP = '仅支持字母和数字';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7';
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_MESSAGE0 = '摄像头 跳过帧数%1 毫秒%2内的图像 ';
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_TOOLTIP = '摄像头跳过指定帧数或者跳过指定时间内的图像';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6';
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_MESSAGE0 = '测 摄像头 获取%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_TOOLTIP = '(AI)摄像头返回参数(宽高,图像帧的格式,图像帧的大小)';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_MESSAGE0 = '摄像头 设置%1 为%2';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_TOOLTIP = '设置摄像头对比度,亮度,饱和度范围为[-2,+2]';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_MESSAGE0 = '摄像头 自动增益%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_TOOLTIP = '1开启摄像头自动增益 0关闭摄像头自动增益';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_MESSAGE0 = '摄像头 白平衡%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_TOOLTIP = '设置摄像自动白平衡模式,默认打开。True为打开, False为关闭自动白平衡。若您想追踪颜色,则需关闭白平衡。';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_MESSAGE0 = '摄像头 %1 %2';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_TOOLTIP = '1 表示开启水平镜像 0 表示关闭水平镜像';
+
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_MESSAGE0 = '屏幕 显示生效';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_TOOLTIP = '可以在液晶屏上显示';
+
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_MESSAGE0 = '图像 显示生效 x%1 y%2 宽%3 高%4';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_TOOLTIP = '可以在液晶屏上显示一张图片';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_MESSAGE0 = '摄像头 获取图像';
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_TOOLTIP = '控制摄像头捕捉图像';
+
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C';
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_MESSAGE0 = '人脸检测';
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_MESSAGE0 = '矩形%1 x%3 y%4 宽%5 高%6 颜色为 R%7 G%8 B%9  加粗%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_TOOLTIP = '在图像上绘制矩形';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_MESSAGE0 = '线条  x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7 加粗%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_TOOLTIP = '在图像上绘制线条';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_MESSAGE0 = '屏幕 显示清空';
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_TOOLTIP = '将液晶屏清空为黑色或者指定的颜色';
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_MESSAGE0 = 'LCD 返回 x%1 y%2 颜色';
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_TOOLTIP = '返回某个坐标点的颜色';
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_MESSAGE0 = '圆形%1 x%2 y%3 半径%4 颜色为 R%5 G%6 B%7 加粗%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_TOOLTIP = '在图像上绘制圆形';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_MESSAGE0 = '显示文本 x %1 y %2 内容 %3 颜色为R%4 G%5 B%6 字号%7';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_TOOLTIP = '仅支持字母和数字';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_MESSAGE0 = '十字线  x%1 y%2 颜色为R%3 G%4 B%5 尺寸%6 加粗%7';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_TOOLTIP = '在图像上绘制十字线';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_MESSAGE0 = '箭头  x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7  加粗%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_TOOLTIP = '在图像上绘制一个箭头';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL = '.https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0 = '显示图像 路径%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP = '显示图像';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.invert';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_MESSAGE0 = '图像转换为%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_TOOLTIP = '黑白翻转是将二进制图像0(黑色)变为1(白色),1(白色)变为0(黑色),非常快速地翻转二进制图像中的所有像素值。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.linpolar';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_MESSAGE0 = '图像 从笛卡尔坐标到%1 坐标重新投影  反向%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.dilate';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_MESSAGE0 = '图像 膨胀 级别%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_TOOLTIP = '膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.midpoint';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_MESSAGE0 = '图像 中点滤波 级别%1 滤波%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_TOOLTIP = '控制图像混合的最小/最大程度。0只适用于最小滤波,1仅用于最大滤波。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.modehttps://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mode';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_MESSAGE0 = '图像 众数滤波 级别%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_TOOLTIP = '在图像上运行众数滤波,用相邻像素的模式替换每个像素。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mean';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_MESSAGE0 = '图像 模糊滤波 级别%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_TOOLTIP = '使用盒式滤波器的标准均值模糊滤波。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.cartoon';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_MESSAGE0 = '图像 卡通化 级别%1 起始像素差异%2 相邻像素差异%3';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_TOOLTIP = '使图像卡通化';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.rotation_corr';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_MESSAGE0 = '图像 3D旋转 上下旋转%1 左右旋转%2 度数%3 左右移动%4 上下移动%5 缩放%6';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_TOOLTIP = '通过执行帧缓冲区的3D旋转来纠正图像中的透视问题。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.copy';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_MESSAGE0 = '将图像的副本保存到SD卡 图像名%1 图像显示区域  x%2 y%3 宽%4 高%5';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_TOOLTIP = '将图像的副本保存到SD卡';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.save';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0 = '创建一个图像对象的副本  复制图像区域  x%1 y%2 宽%3 高%4';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP = '创建一个图像对象的副本';
+
+//人脸检测
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_MESSAGE0 = '选择训练模型 人脸';
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_TOOLTIP = '可以识别并且追踪人脸,显示人脸大小等';
+
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_MESSAGE0 = '调用摄像头进行 人脸检测';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_TOOLTIP = '可以识别并且追踪人脸,显示人脸大小等';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_MESSAGE0 = '获取识别后人脸的 所有参数';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_TOOLTIP = '获取识别后人脸的 所有参数';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_MESSAGE0 = '获取识别后人脸的 x坐标';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_TOOLTIP = '获取识别后人脸的 x坐标';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_MESSAGE0 = '获取识别后人脸的 y坐标';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_TOOLTIP = '获取识别后人脸的 y坐标';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_MESSAGE0 = '获取识别后人脸的 宽度';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_TOOLTIP = '获取识别后人脸的 宽度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_MESSAGE0 = '获取识别后人脸的 高度';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_TOOLTIP = '获取识别后人脸的 高度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_MESSAGE0 = '获取识别后人脸的 置信度';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_TOOLTIP = '获取识别后人脸的 置信度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_MESSAGE0 = '获取识别后人脸的 数量';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_TOOLTIP = '获取识别后人脸的 数量';
+
+//20分类
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_MESSAGE0 = '选择训练模型 20类';
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_TOOLTIP = '可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视';
+
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_MESSAGE0 = '调用摄像头进行 20类识别';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_TOOLTIP = '调用摄像头进行 20类识别';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_MESSAGE0 = '获取识别后20类的 所有参数';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_TOOLTIP = '获取识别后20类的 所有参数';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_MESSAGE0 = '获取识别后20类的 x坐标';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_TOOLTIP = '获取识别后20类的 x坐标';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_MESSAGE0 = '获取识别后20类的 y坐标';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_TOOLTIP = '获取识别后20类的 y坐标';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_MESSAGE0 = '获取识别后20类的 宽度';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_TOOLTIP = '获取识别后20类的 宽度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_MESSAGE0 = '获取识别后20类的 高度';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_TOOLTIP = '获取识别后20类的 高度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_MESSAGE0 = '获取识别后20类的 置信度';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_TOOLTIP = '获取识别后20类的 置信度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_MESSAGE0 = '获取识别后20类的 数量';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_TOOLTIP = '获取识别后20类的 数量';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_MESSAGE0 = '获取识别后20类的 类型';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_TOOLTIP = '获取识别后20类的 类型可以放入获取识别的参数,可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_MESSAGE0 = '获取识别后20类的 类型数量';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_TOOLTIP = '获取识别后20类的 类型数量';
+
+
+//手写数字
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0 = '选择训练模型  手写数字';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP = '选择训练模型  手写数字识别';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_MESSAGE0 = '调用摄像头进行 手写数字识别';
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_TOOLTIP = '调用摄像头进行 手写数字识别';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_MESSAGE0 = '获取识别后手写数字的 所有参数';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_TOOLTIP = '手写数字识别参数';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_MESSAGE0 = '获取识别后手写数字的 数字';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_TOOLTIP = '手写数字识别 数字';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_MESSAGE0 = '获取识别后手写数字的 置信度';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_TOOLTIP = '手写数字 识别数字 置信度';
+
+
+//追踪色块
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_MESSAGE0 = '追踪色块 LAB颜色%1 边界框小于%2 像素小于%3 过滤';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_TOOLTIP = '追踪色块';
+
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL = '';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0 = '追踪颜色 显示%1';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_MESSAGE0 = '%1获取识别后色块的 所有参数';
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_X_MESSAGE0 = '%1获取识别后色块的 x坐标';
+Blockly.Msg.CocoRobo_AI_BLOB_X_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_Y_MESSAGE0 = '%1获取识别后色块的 y坐标';
+Blockly.Msg.CocoRobo_AI_BLOB_Y_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_W_MESSAGE0 = '%1获取识别后色块的 宽度';
+Blockly.Msg.CocoRobo_AI_BLOB_W_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_H_MESSAGE0 = '%1获取识别后色块的 高度';
+Blockly.Msg.CocoRobo_AI_BLOB_H_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_MESSAGE0 = '%1获取识别后色块的 数量';
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_MESSAGE0 = '%1获取识别后色块的 中心x坐标';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_MESSAGE0 = '%1获取识别后色块的 中心y坐标';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_MESSAGE0 = '%1获取识别后色块的 矩形';
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html?highlight=get_pixel#CocoRobo_classroom_kit.image.set_pixel';
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_MESSAGE0 = '屏幕 x%1 y%2  显示颜色 R%3 G%4 B%5';
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_TOOLTIP = '屏幕显示颜色';
+
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.clear';
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_MESSAGE0 = '屏幕 初始化 显示颜色 R%1 G%2 B%3';
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_TOOLTIP = '屏幕显示颜色';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.camera.set_pixformat';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_MESSAGE0 = '摄像头 初始化 像素模式 %1';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_TOOLTIP = '用于设置摄像头像素模式,有黑白和rgb彩色';
+
+
+//Pythons 训练身高体重比例
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_MESSAGE0 = '初始化 训练 %1';
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_MESSAGE0 = '实例化 线性回归直线';
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_TITLE_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_TITLE_MESSAGE0 = '标题%1 字号%2';
+Blockly.Msg.CocoRobo_DRILL_TITLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_LABEL_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LABEL_MESSAGE0 = '标签%1 标题%2 字号%3';
+Blockly.Msg.CocoRobo_DRILL_LABEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_MESSAGE0 = '真实数据 符号标记%1 颜色为r%2 g%3 b%4 标题%5';
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_MESSAGE0 = '预测线性回归直线 符号标记%1 颜色为r%2 g%3 b%4 标题%5';
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_LEGEND_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LEGEND_MESSAGE0 = '展示图例';
+Blockly.Msg.CocoRobo_DRILL_LEGEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_SHOW_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_SHOW_MESSAGE0 = '显示图片';
+Blockly.Msg.CocoRobo_DRILL_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_MESSAGE0 = '返回对应键值%1';
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_full_line = '实线';
+Blockly.Msg.CocoRobo_DRILL_DRILL_dash_line = '破折线';
+Blockly.Msg.CocoRobo_DRILL_DRILL_chain_line = '点划线';
+Blockly.Msg.CocoRobo_DRILL_DRILL_imaginary_line = '虚线';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_dot = '点';
+Blockly.Msg.CocoRobo_DRILL_DRILL_pixel = '像素';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_rim = '实心圈';
+Blockly.Msg.CocoRobo_DRILL_DRILL_down_triangle = '下三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_up_triangle = '上三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_right_triangle = '右三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_left_triangle = '左三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_down_flower_triangle = '下花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_up_flower_triangle = '上花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_right_flower_triangle = '右花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_left_flower_triangle = '左花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_square = '实心方形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_pentagon = '实心五角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_star = '星形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_vertical_hexagon = '竖六边形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_across_hexagon = '横六边形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_cross = '十字';
+Blockly.Msg.CocoRobo_DRILL_DRILL_X = 'X';
+Blockly.Msg.CocoRobo_DRILL_DRILL_rhombus = '菱形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_thin_rhombus = '瘦菱形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_vertical_line = '垂直线';
+
+
+
+
+//pythons 鸢尾花
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_MESSAGE0 = '初始化 鸢尾花数据集';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_TOOLTIP = '采用Python的Sklearn机器学习库中自带的数据集——鸢尾花数据集。简单分析数据集之间特征的关系图,根据花瓣长度、花瓣宽度、花萼长度、花萼宽度四个特征进行绘图Iris plants 数据集可以从KEEL dataset数据集网站获取,也可以直接从Sklearn.datasets机器学习包得到。数据集共包含4个特征变量、1个类别变量,共有150个样本。类别变量分别对应鸢尾花的三个亚属,分别是山鸢尾 (Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica) 分别用[0,1,2]来做映射';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_MESSAGE0 = '鸢尾花 主成分分析';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_MESSAGE0 = '鸢尾花 因子分析 3D';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_MESSAGE0 = '鸢尾花 因子分析';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_MESSAGE0 = '预测图示 鸢尾花类型%1 呈现内容  x%3 y%4 呈现种类%2 颜色为 r%5 g%6 b%7 标题%8 向上合并%9';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_MESSAGE0 = '预测图示 呈现内容  x%1 y%2 呈现种类%3 颜色为 r%4 g%5 b%6 标题%7';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_MESSAGE0 = '3D 预测图示 呈现内容  x朝向%1 y朝向%2 z朝向%3 颜色为 r%4 g%5 b%6 标题%7';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_MESSAGE0 = '标题%1 字号%2';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_MESSAGE0 = '标签%1 标题%2 字号%3';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_MESSAGE0 = '3D 标题%1 字号%2';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_MESSAGE0 = '3D 标签%1 标题%2 字号%3';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_MESSAGE0 = '展示图例';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_MESSAGE0 = '显示图片';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_MESSAGE0 = '花萼和花瓣的x,y坐标';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_TOOLTIP = '共150条记录,分别代表50条山鸢尾 (Iris-setosa)、变色鸢尾(Iris-versicolor)、维吉尼亚鸢尾(Iris-virginica)';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_setosa = '山鸢尾';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_versicolor = '变色鸢尾';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_virginica = '维吉尼亚鸢尾';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_scatter_diagram = '散点图';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_kde_diagram = 'kde图';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_box_diagram = '箱图';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_merge = '合并';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_not_merge = '不合并';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_length = '花萼长度';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_width = '花萼宽度';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_length = '花瓣长度';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_width = '花瓣宽度';
+
+
+//Pythons 数字识别
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_MESSAGE0 ='将图片转换为28²二值图%1  待处理的图片存储路径%2 处理后的图片存储路径%3 格式%4';
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_TOOLTIP = '教科板通过串口把WIF传给语音助手';
+
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_MESSAGE0 ='查找解析 手写数字数据 存储路径%1';
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_TOOLTIP = '使用手写数字字符库';
+
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_HELPURL = '';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_MESSAGE0 ='手写数字图像 存储路径%1';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_TOOLTIP = '手写数字图像的路径';
+
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_HELPURL = '';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_MESSAGE0 ='显示手写数字图像';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_TOOLTIP = '显示手写数字图像';
+
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_MESSAGE0 ='识别手写数字图像 存储路径%1';
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_TOOLTIP = '识别手写数字图像的路径';
+
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_MESSAGE0 ='创建变量%1 初始化 神经网络张量 变量名%2';
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_MESSAGE0 = '创建变量%1 将输入照片变量 %2 转换为 神经网络输出张量%3';
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_MESSAGE0 = '创建变量%1 共享变量名%2 初始化模式%3';
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_MESSAGE0 = '产生截断正态分布随机数 输出张量%1 标准差%2';
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_MESSAGE0 = '创建常量 数值%1 输出张量%2';
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_MESSAGE0 = '神经网络输出张量%1 共享变量%2 步长%3 填充%4';
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_MESSAGE0 = '张量%1';
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_MESSAGE0 = '卷积二维层 变量%1 %2';
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_RELU_MESSAGE0 = '创建变量%1 Relu正向激励函数 卷积二维层%2';
+Blockly.Msg.CocoRobo_NUMBER_RELU_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_RELU_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_MESSAGE0 = '池化二维层 变量%1 卷积层%2 池化窗口%3 步长%4 填充%5';
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_MESSAGE0 = '两个参数的对应元组各自相乘 x%1 y%2';
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_ADD_MESSAGE0 = '全连接层 变量%1 两个参数的元组相加 x%2 y%3';
+Blockly.Msg.CocoRobo_NUMBER_ADD_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_ADD_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_MESSAGE0 = '创建变量%1 预测模型准确度 变量名%2';
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_MESSAGE0 = '创建变量%1 损失函数%2';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_LOG_MESSAGE0 = '自然对数 %1';
+Blockly.Msg.CocoRobo_NUMBER_LOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_LOG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_MESSAGE0 = '压缩求和%1 维度%2';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_TOOLTIP = '因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化L了。';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_HELPURL = 'https://www.cnblogs.com/guoyaohua/p/9217206.html';
+
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_MESSAGE0 = '优化学习速率 %1';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_MESSAGE0 = '创建变量%1 优化张量%2';
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_INIT_MESSAGE0 = '初始化模型 完成';
+Blockly.Msg.CocoRobo_NUMBER_INIT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_INIT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_MESSAGE0 = '选择 手写数字集%1 数量%2';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_MESSAGE0 = '启动数据流图会话进行计算 会话%1 图片%2 标签%3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_MESSAGE0 = '启动数据流图会话进行计算 会话%1 图片%2 标签%3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_MESSAGE0 = '预测模型%1 拟合度%2 会话%3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_MESSAGE0 = '两个张量的每一维是否相等 x%1 y%2';
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_MESSAGE0 = '张量 %1 按%2比较返回最大值的索引';
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CAST_MESSAGE0 = '转为浮点型 %1';
+Blockly.Msg.CocoRobo_NUMBER_CAST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CAST_HELPURL = '';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_MESSAGE0 ='手写数字识别模型 变量名%1 存储路径%2';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_TOOLTIP = 'MNIST手写数字识别模型保存路径';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_MESSAGE0 ='加载模型 %1 存储路径%2';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_TOOLTIP = '加载模型';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAME ='包含边界';
+Blockly.Msg.CocoRoboS_NUMBER_VALID = '不包含边界';
+
+Blockly.Msg.CocoRoboS_NUMBER_train ='训练';
+Blockly.Msg.CocoRoboS_NUMBER_test = '测试';
+
+Blockly.Msg.CocoRoboS_NUMBER_row ='行';
+Blockly.Msg.CocoRoboS_NUMBER_rank = '列';
+
+//Pythons 人脸检测
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_MESSAGE0 = '调用摄像头 %1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_TOOLTIP = '调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_MESSAGE0 = '关闭摄像头';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_MESSAGE0 = '删除所有窗口';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_MESSAGE0 ='加载模型 存储路径%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_MESSAGE0 ='从摄像头读取图片';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_TOOLTIP = 'ret如果有读取图片就True,否则false;第二个参数是frame,是当前截取一帧的图片。';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_MESSAGE0 ='转为灰度图片';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_MESSAGE0 = '检测人脸 每次图像尺寸减小比例%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_MESSAGE0 ='人脸区域显示矩形框  颜色为 红%1 绿%2 蓝%3';
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_MESSAGE0 ='保存图像 位置%1 ID%2 编号%3';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_MESSAGE0 ='窗口中显示图像 文件名%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_MESSAGE0 ='通过esc键 退出';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_TOOLTIP = '在窗口置顶时使用才有效果';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_MESSAGE0 = '获得人脸在图像中的坐标值  人脸%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_MESSAGE0 = '是否有读取图片';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_MESSAGE0 = '是否打开摄像头';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_MESSAGE0 ='获取照片及id 照片存储路径%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_MESSAGE0 ='初始化训练模型';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_TOOLTIP = '初始化训练模型';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_MESSAGE0 ='开始训练模型';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_MESSAGE0 ='%1训练模型 存储路径%2';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_MESSAGE0 ='人脸模型训练 数目';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_MESSAGE0 = '窗口显示 识别的名字%1 设置字体为%2 颜色为 红%3 绿%4 蓝%5';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_MESSAGE0 = '窗口显示 识别的置信度%1 设置字体为%2 颜色为 红%3 绿%4 蓝%5';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_MESSAGE0 = '预测人脸 名字%1 置信度%2';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Write= '写入';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Read= '读取';
+
+
+
+
+
+
+
+
+
+Blockly.Msg.FIRST = '第一次';
+Blockly.Msg.LAST = '最后一次';
+
+Blockly.Msg.CocoRobo_USOCKET_BLOCK = '阻塞';
+Blockly.Msg.CocoRobo_USOCKET_UNBLOCK = '非阻塞';
+
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket';
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_MESSAGE0 = '设置socket %1 地址 %2 类型 %3';
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_TOOLTIP = '设置给定套接字选项的值。所需的符号常量在套接字模組中定义(SO_ *等)。该值可以是整数或表示缓冲区的类字节对象。';
+
+Blockly.Msg.CocoRobo_USOCKET_READLINE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.accept';
+Blockly.Msg.CocoRobo_USOCKET_READLINE_MESSAGE0 = 'socket %1 接收一行数据,遇换行符结束并返回接收数据的对象';
+Blockly.Msg.CocoRobo_USOCKET_READLINE_TOOLTIP = ' 接收一行数据,遇换行符结束,并返回接收数据的对象';
+
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.setblocking';
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_MESSAGE0 = '设 socket %1 为 %2 模式';
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_READ_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.read';
+Blockly.Msg.CocoRobo_USOCKET_READ_MESSAGE0 = '从socket %1 读取 %2 字节并返回字节对象';
+Blockly.Msg.CocoRobo_USOCKET_READ_TOOLTIP = '若未给定读取数量 ,则按照类似 socket.readall() 的模式运行';
+
+Blockly.Msg.CocoRobo_ESC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.setblocking';
+Blockly.Msg.CocoRobo_ESC_MESSAGE0 = '设 socket %1 为 %2 模式';
+Blockly.Msg.CocoRobo_ESC_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.settimeout';
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_MESSAGE0 = 'socket %1 设超时时间 %2 秒';
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_MESSAGE0 = 'socket %1 连续发送 %2 并返回发送的字节数';
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_TOOLTIP = '将所有数据发送到套接字。套接字必须连接到远程套接字。与 send() 此不同,此方法将尝试通过连续发送数据块来发送所有数据。';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SENDS_MESSAGE0 = 'socket %1 发送 %2 并返回发送的字节数';
+Blockly.Msg.CocoRobo_USOCKET_SENDS_TOOLTIP = '将数据发送到套接字。套接字必须连接到远程套接字。返回发送的字节数,可能小于数据长度 ("short write")。';
+
+Blockly.Msg.CocoRobo_USOCKET_SEND_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SEND_MESSAGE0 = 'socket %1 发送 %2 并返回发送的字节数';
+Blockly.Msg.CocoRobo_USOCKET_SEND_TOOLTIP = 'Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.sendto';
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_MESSAGE0 = 'socket %1 发送 %2 到地址 %3';
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_TOOLTIP = 'Send data to the socket. The socket should not be connected to a remote socket, since the destination socket is specified by address.';
+
+Blockly.Msg.CocoRobo_USOCKET_RECV_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.recv';
+Blockly.Msg.CocoRobo_USOCKET_RECV_MESSAGE0 = 'socket %1 接收并返回接收到的数据对象 最大数据量为 %2';
+Blockly.Msg.CocoRobo_USOCKET_RECV_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TEXT_ESC_HELPURL = '';
+Blockly.Msg.CocoRobo_TEXT_ESC_MESSAGE0 = '文本转义字符 %1';
+Blockly.Msg.CocoRobo_TEXT_ESC_TOOLTIP = '文本转义字符';
+
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.recvfrom';
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_MESSAGE0 = 'socket %1 接收并返回接收到的数据元组 最大数据量为 %2';
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_TOOLTIP = '元组格式 (bytes, address)';
+
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.connect';
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_MESSAGE0 = 'socket %1 连接 host %2 端口 %3';
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.getaddrinfo';
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_MESSAGE0 = '解析 host %1 端口 %2 并返回 ip';
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_TOOLTIP = '需联网';
+
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.accept';
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_MESSAGE0 = 'socket %1 接收连接请求并返回socket元组';
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_TOOLTIP = '接收连接请求。socket需要指定地址并监听连接。返回值是 (conn, address)。\nconn:新的socket对象,可以用来收发消息\naddress:连接到服务器的客户端地址';
+
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.listen';
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_MESSAGE0 = '监听socket %1 backlog个数 %2';
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_TOOLTIP = 'backlog :接受套接字的最大个数,至少为0,如果没有指定,则默认一个合理值。';
+
+Blockly.Msg.CocoRobo_USOCKET_BIND_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.bind';
+Blockly.Msg.CocoRobo_USOCKET_BIND_MESSAGE0 = 'socket %1 绑定地址 %2 端口 %3';
+Blockly.Msg.CocoRobo_USOCKET_BIND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket.close';
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_MESSAGE0 = 'socket %1 关闭';
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_INIT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/pythonStd/usocket.html#usocket.socket';
+Blockly.Msg.CocoRobo_USOCKET_INIT_MESSAGE0 = '创建 socket %1 地址 %2 类型 %3';
+Blockly.Msg.CocoRobo_USOCKET_INIT_TOOLTIP = 'AF_INET:=2 — TCP/IP – IPv4\nAF_INET6 :=10 — TCP/IP – IPv6\nSOCK_STREAM:=1 — TCP流\nSOCK_DGRAM:=2 — UDP数据报\nSOCK_RAW :=3 — 原始套接字\nSO_REUSEADDR : =4 — socket可重用\n';
+
+
+Blockly.Msg.CocoRobo_GET_POST_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_POST_MESSAGE0 = '%1 请求网址 %2 提交字段 %3';
+//Blockly.Msg.CocoRobo_GET_POST_TOOLTIP = '*data*(可选)在请求正文中发送的字典或元组列表[(键,值)](将是表单编码的),字节或类文件对象。\n*json*(可选)在请求正文中发送的json数据。\n*headers*(可选)要与请求一起发送的HTTP标头字典。';
+Blockly.Msg.CocoRobo_GET_POST_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_HELPURL = '';
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_MESSAGE0 = '%1 请求网址 %2 提交字段 %3';
+
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_MESSAGE0 = 'Post 提交文件 %1 请求网址 %2 文件路径 %3 Mime类型 %4 附加字段 %5';
+
+Blockly.Msg.CocoRobo_RESPONSE_HELPURL = '';
+Blockly.Msg.CocoRobo_RESPONSE_MESSAGE0 = '响应内容 形式 %1';
+Blockly.Msg.CocoRobo_RESPONSE_TOOLTIP = '';
+
+Blockly.Msg.STRING = '字符串';
+Blockly.Msg._BYTE = '二进制';
+Blockly.Msg.BYTES = '字节';
+Blockly.Msg.TEXT = '文本';
+
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_HELPURL = '';
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_MESSAGE0 = '响应属性 %1';
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_TOOLTIP = '';
+
+
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/board/hardware.html#CocoRobopindesc';
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP =  '右键帮助,查看引脚声明';
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0 =  '设置引脚 %1 为 %2 模式 %3 并设置值为 %4';
+
+Blockly.Msg.CocoRobo_SET_PIN_IN = '输入';
+Blockly.Msg.CocoRobo_SET_PIN_PUSH_PULL_OUT = '推挽输出';
+Blockly.Msg.CocoRobo_SET_PIN_LEAKY_OUT = '开漏输出';
+
+Blockly.Msg.CocoRobo_SET_PIN_NO_PULL = '无上下拉';
+Blockly.Msg.CocoRobo_SET_PIN_DOWN_PULL = '下拉';
+Blockly.Msg.CocoRobo_SET_PIN_UP_PULL = '上拉';
+
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL = '';
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0 = '线程锁对象 %1 请求锁';
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_START_NEW_THREAD_HELPURL = '';
+Blockly.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0 = '子线程 %1';
+Blockly.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP = '';
+
+
+Blockly.Msg.CocoRobo_UART_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_INIT_MESSAGE0 = '串口 %4 初始化 波特率 %1 tx %2 rx %3';
+Blockly.Msg.CocoRobo_UART_INIT_TOOLTIP = '教科板支持3组串口。0用于REPL,剩下1、2两组串口可用。所有引脚均可以作为串口的输入RX,除 P2、P3 、P4 、P10 只能作为输入,其余所有的引脚理论上都可以作为输出TX。';
+
+Blockly.Msg.CocoRobo_UART_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_DEINIT_MESSAGE0 = '关闭串口 %1';
+Blockly.Msg.CocoRobo_UART_DEINIT_TOOLTIP = '关闭 UART 总线';
+
+Blockly.Msg.CocoRobo_UART_WRITE_STR_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0 = '串口 %1 写入文本 %2 %3';
+Blockly.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP = '将文本写入总线。\n返回值:写入或 None 超时的字节数。';
+
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_MESSAGE0 = '串口 %1 发送16进制字符串 %2 %3';
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_UART_HAS_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_HAS_DATA_MESSAGE0 = '串口 %1 有可读数据';
+Blockly.Msg.CocoRobo_UART_HAS_DATA_TOOLTIP = '返回一个整数,计算可以无阻塞地读取的字符数。\n如果没有可用字符,它将返回0,如果有字符,则返回正数。\n即使有多个可读的字符,该方法也可以返回1。';
+
+Blockly.Msg.CocoRobo_UART_READLINE_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READLINE_MESSAGE0 = '串口 %1 读取一行数据';
+Blockly.Msg.CocoRobo_UART_READLINE_TOOLTIP = '读一行,以换行符结尾。\n返回值:读取行或 None 超时。';
+
+Blockly.Msg.CocoRobo_UART_READ_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READ_MESSAGE0 = '串口 %1 读取数据';
+Blockly.Msg.CocoRobo_UART_READ_TOOLTIP = '读取尽可能多的串口数据\n返回值:包含读入字节的字节列表。若读取超时则返回 None。';
+
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_MESSAGE0 = '串口 %1 读取数据 长度 %2';
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_TOOLTIP = '读取指定长度字节数据\n返回值:包含读入字节的字节列表。若读取超时则返回 None。';
+
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0 = '串口 %1 写入单字节 %2';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP = '参数取值为 0~255 整数\n将字节写入总线。\n返回值:写入或 None 超时的字节数。';
+
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0 = '串口 %1 写入字节数组 %2';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP = '将字节数组写入总线。\n返回值:写入或 None 超时的字节数。';
+
+
+Blockly.Msg.CocoRobo_BAUDRATE_HELPURL = '';
+Blockly.Msg.CocoRobo_BAUDRATE_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_BAUDRATE_TOOLTIP = '';
+
+
+Blockly.Msg.CocoRobo_HIGH_LOW_HELPURL = '';
+Blockly.Msg.CocoRobo_HIGH_LOW_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_HIGH_LOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL = '';
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0 = '10进制整数 %1 转化为 %2 字符串';
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP = '将10进制整数转化为%2字符串,并返回结果';
+
+Blockly.Msg.CocoRobo_BIN = '二进制';
+Blockly.Msg.CocoRobo_OCT = '八进制';
+Blockly.Msg.CocoRobo_HEX = '十六进制';
+
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL = '';
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0 = '%1 字符串 %2 转 10进制整数';
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP = '将%2字符串转化为10进制整数,并返回结果';
+
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL = '';
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0 = '10进制整数 %2 转 %1 字节';
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP = '将10进制整数转为%1字节,并返回结果';
+
+Blockly.Msg.CocoRobo_INT_TO_CHR_HELPURL = '';
+Blockly.Msg.CocoRobo_INT_TO_CHR_MESSAGE0 = '整型 %1 转  ASCII 单字符';
+Blockly.Msg.CocoRobo_INT_TO_CHR_TOOLTIP = 'ASCII:基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。';
+
+Blockly.Msg.CocoRobo_CHR_TO_INT_HELPURL = '';
+Blockly.Msg.CocoRobo_CHR_TO_INT_MESSAGE0 = 'ASCII 单字符 %1 转 整型';
+Blockly.Msg.CocoRobo_CHR_TO_INT_TOOLTIP = 'ASCII是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。';
+
+
+Blockly.Msg.CocoRobo_STR_TO_HEX_HELPURL = '';
+Blockly.Msg.CocoRobo_STR_TO_HEX_MESSAGE0 = '字符串 %1 转 十六进制 字节';
+Blockly.Msg.CocoRobo_STR_TO_HEX_TOOLTIP = '返回结果中用空格分隔两个十六进制数';
+
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL = '';
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0 = '十六进制字符串 %1 转 二进制 字节';
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP = '十六进制字符串转二进制字节,并返回结果';
+
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_HELPURL = '';
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0 = '%1 以 base64 格式编码 返回字节对象';
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP = 'Base64编码是从二进制到字符的过程';
+
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0 = '解码 base64 数据 %1 返回字节对象';
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP = 'Base64编码是从二进制到字符的过程';
+
+Blockly.Msg.CocoRobo_UJSON_DUMPS_HELPURL = '';
+Blockly.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0 = '%1 转 json 字符串';
+Blockly.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP = 'JSON 格式的 key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 none)';
+
+Blockly.Msg.CocoRobo_UJSON_LOADS_HELPURL = '';
+Blockly.Msg.CocoRobo_UJSON_LOADS_MESSAGE0 = '解析 json 字符串 %1 返回对象';
+Blockly.Msg.CocoRobo_UJSON_LOADS_TOOLTIP = 'JSON 格式的 key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 none)';
+
+Blockly.Msg.CocoRobo_code_annotation_HELPURL = '';
+Blockly.Msg.CocoRobo_code_annotation_MESSAGE0 = '注释 # %1';
+Blockly.Msg.CocoRobo_code_annotation_TOOLTIP = '生成代码注释';
+
+/* 教科板_物联网 */
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0 = '自定义终端部件 Terminal 虚拟管脚 V %1';
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_MESSAGE0 = '同步虚拟管脚的状态 V %1';
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_MESSAGE0 = '当 Blynk 断开连接时';
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_MESSAGE0 = '当 Blynk 连接时';
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_MESSAGE0 = '运行 Blynk 定时器进程';
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_TOOLTIP = '建议放在 \'一直重复\' 中循环执行';
+
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_MESSAGE0 = '可用的 Blynk 定时器';
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_MESSAGE0 = '停止 Blynk 定时器 %1';
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_TOOLTIP = 
+    '注意:\n定时器序号为自动获取,自上而下,从0开始且连续,不可"定时器0,定时器2",此处暴露序号参数为方便查看!\n参数:\nno_timers_err=False-如果所有计时器都停止,禁用异常触发';
+
+Blockly.Msg.CocoRobo_UART_INPUT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_INPUT_MESSAGE0 = '从串口获取文本 提示语句 %1';
+Blockly.Msg.CocoRobo_UART_INPUT_TOOLTIP = ''
+
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_MESSAGE0 = '给虚拟管脚添加   属性 %1 值 %2';
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_TOOLTIP = "放于 read 或 write 事件中,虚拟管脚由事件决定,与该管脚绑定的组件会拥有添加的属性";
+
+
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_MESSAGE0 = '向预设邮箱发邮件 %1 主题 %2 正文 %3';
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_TOOLTIP = "";
+
+
+Blockly.Msg.CocoRobo_BLYNK_RUN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_RUN_MESSAGE0 = '运行 Blynk 进程';
+Blockly.Msg.CocoRobo_BLYNK_RUN_TOOLTIP = '建议放在 \'一直重复\' 中循环执行';
+
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_MESSAGE0 = 'Blynk APP 显示通知 %1';
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNKTIMER_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNKTIMER_MESSAGE0 = 'Blynk 定时器 %1 %2 周期 %3 秒';
+Blockly.Msg.CocoRobo_BLYNKTIMER_TOOLTIP = '注意:\n定时器序号为自动获取,自上而下,从0开始且连续,不可"定时器0,定时器2",此处暴露序号参数为方便查看!\n参数:\nno_timers_err=False-如果所有计时器都停止,禁用异常触发';
+
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0 = '发送数据 %1 到 Blynk APP 的 虚拟管脚 V %2';
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP = '虚拟管脚:V0 ~ V255';
+
+Blockly.Msg.CocoRobo_BLYNK_SETUP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SETUP_MESSAGE0 = 'Blynk 设置 %1 服务器 %2 端口 %3 授权码 %4';
+Blockly.Msg.CocoRobo_BLYNK_SETUP_TOOLTIP = '服务器可填 blynk-cloud.com(官网) 或者 blynk.cocorobo.cn(国内)\n默认端口为 8080\n注意:手机APP访问端口为 9443';
+
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_MESSAGE0 = '当 从 Blynk APP 收到 虚拟管脚 V %1 的值 %2';
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_TOOLTIP = '虚拟管脚:V0 ~ V255';
+
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_MESSAGE0 = 'OneNET 断开连接';
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_RECV_MESSAGE0 = '当 从 OneNET 收到消息 %1 时';
+Blockly.Msg.CocoRobo_ONENET_RECV_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_MESSAGE0 = '当 从 OneNET 收到特定消息 %1 时';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_MESSAGE0 = '向 OneNET 发送数据流 名称 %1 值 %2';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_MESSAGE0 = '向 OneNET 发送数据流 %1';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_MESSAGE0 = '向 小程序 发送数据流 名称 %1 值 %2';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_HELPURL = '';
+
+Blockly.Msg.INT_TO_CHR_HELPURL = ''
+Blockly.Msg.INT_TO_CHR_MESSAGE0 = '整数 %1 转 ASCII 单字符';
+Blockly.Msg.INT_TO_CHR_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_ONENET_ACCEPT_MESSAGE = '收到消息';
+Blockly.Msg.CocoRobo_ONENET = 'OneNET 设置';
+Blockly.Msg.CocoRobo_ONENET_WECHAT_APP = '小程序 设置';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS = '可选教科板';
+Blockly.Msg.CocoRobo_ONENET_TITLE = 'OneNET';
+Blockly.Msg.CocoRobo_SERVER = '服务器';
+Blockly.Msg.CocoRobo_DEVICE_ID = '设备ID';
+Blockly.Msg.CocoRobo_PRODUCT_ID = '产品ID';
+Blockly.Msg.CocoRobo_API_KEY = '产品APIKey';
+Blockly.Msg.CocoRobo_ONENET_CALLBACK = '回调函数';
+Blockly.Msg.CocoRobo_TOPIC = '主题';
+Blockly.Msg.CocoRobo_ONENET_CALLBACK_TITLE = "OneNET回调函数";
+
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_MESSAGE0 = '小程序  选择教科板应用 %1';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0 = '%1 hcsr04 超声波距离 测量单位 %2';
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0 = '%1 hcsr04 超声波(mm)';
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_HCSR04_OBJ_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0 = 'hcsr04 超声波初始化  名称 %1  trigger %2 echo %3';
+Blockly.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_PM2_5_MIC_HELPURL = ''
+Blockly.Msg.CocoRobo_PM2_5_MIC_MESSAGE0 = 'rx引脚%1 PM值浓度%2';
+Blockly.Msg.CocoRobo_PM2_5_MIC_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_HELPURL = ''
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0 = 'rx引脚%1 0.1升空气中直径在%2 颗颗物个数';
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_MESSAGE0 = '红外接收 %1 回调地址 %2 回调命令 %3';
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_MESSAGE0 = '红外发送 %1 地址 %2 命令 %3';
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_TOOLTIP = '';
+
+
+// 格式化字符串 % 方式
+Blockly.Msg.TEXT_FORMAT_MESSAGE0 ='格式化字符串 %1 % %2';
+Blockly.Msg.TEXT_FORMAT_TOOLTIP = '使用"%"的方式格式化字符串,并返回结果';
+Blockly.Msg.TEXT_FORMAT_HELPURL = '';
+
+// 格式化字符串 format 方式
+Blockly.Msg.TEXT_FORMAT2_MESSAGE0 ='格式化字符串 %1 format %2';
+Blockly.Msg.TEXT_FORMAT2_TOOLTIP = '使用"format"的方式格式化字符串,并返回结果';
+Blockly.Msg.TEXT_FORMAT2_HELPURL = '';
+
+// text转字节
+Blockly.Msg.TEXT_TO_BYTE_MESSAGE0 ='转字节 %1';
+Blockly.Msg.TEXT_TO_BYTE_TOOLTIP = '支持数据类型:string';
+Blockly.Msg.TEXT_TO_BYTE_HELPURL = '';
+
+
+Blockly.Msg.CocoRobo_BYTES_DECODE_HELPURL = '';
+Blockly.Msg.CocoRobo_BYTES_DECODE_MESSAGE0 = '字节 %1 转 字符串';
+Blockly.Msg.CocoRobo_BYTES_DECODE_TOOLTIP = "返回指定字节转字符串的结果";
+
+
+// 非文本转字节
+Blockly.Msg.OTHER_TO_BYTE_MESSAGE0 ='非文本转字节 %1';
+Blockly.Msg.OTHER_TO_BYTE_TOOLTIP = '';
+Blockly.Msg.OTHER_TO_BYTE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_TOOLTIP = '创建OneNET连接';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_MESSAGE0 ='物联网 确保连接到 Wi-Fi 名称 %1 密码 %2';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_MESSAGE0 = '当从小程序收到 %1 和 %2 时';
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_TOOLTIP = '';
+
+/* 教科板_物联网 */
+
+
+/* 教科板start */
+Blockly.Msg.CocoRobo_MAC_ADDRESS_HELPURL = '';
+Blockly.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0 = 'MAC 地址';
+Blockly.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_RADIO_REC_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_REC_MESSAGE0 = '无线广播  接收消息';
+Blockly.Msg.CocoRobo_RADIO_REC_TOOLTIP = "所接收为字节型";
+
+Blockly.Msg.CocoRobo_RADIO_SEND_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_SEND_MESSAGE0 = '无线广播  发送 %1';
+Blockly.Msg.CocoRobo_RADIO_SEND_TOOLTIP = "频道: 1~13";
+
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_MESSAGE0 = '设无线广播  频道为 %1';
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_TOOLTIP = "频道: 1~13";
+
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_MESSAGE0 = '%1 无线广播';
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_TOOLTIP = "频道: 1~13";
+
+Blockly.Msg.CocoRobo_RADIO_RECV_MESSAGE0 = '当 收到无线广播消息 %1 时';
+Blockly.Msg.CocoRobo_RADIO_RECV_TOOLTIP = "频道: 1~13";
+Blockly.Msg.CocoRobo_RADIO_RECV_HELPURL = '';
+
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_MESSAGE0 = '当 收到特定无线广播消息 %1 时';
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_TOOLTIP = "频道: 1~13";
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_MESSAGE0 = '设音频音量 %1';
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_1 = '普通';
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_2 = '反转';
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_3 = '透明';
+
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_MESSAGE0 = 'TTS 语音播放 %1';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_TOOLTIP = "需要在 讯飞开放平台 www.xfyun.cn 上开通“在线语音合成”服务";
+
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/extboard/tutorials/tutorials_parrot.html#id3';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_MESSAGE0 = 'TTS 语音配置 APPID %1 APIKey %2';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_TOOLTIP = "输入在 讯飞开放平台 www.xfyun.cn 获取的 APPID 与 APIKey\n注意:要设置IP白名单";
+
+Blockly.Msg.CocoRobo_AUDIO_PLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_PLAY_MESSAGE0 = '音频 播放  %1';
+Blockly.Msg.CocoRobo_AUDIO_PLAY_TOOLTIP = "需要有源音箱\nP8 左声道\nP9 右声道\nGND 接地\n播放参数: \n网络 MP3 的 url 或已上传至教科板的 MP3, 如'music_1.mp3' ";
+
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_MESSAGE0 = '音频 释放缓存';
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AUDIO_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_INIT_MESSAGE0 = '音频 初始化';
+Blockly.Msg.CocoRobo_AUDIO_INIT_TOOLTIP = '为音频解码开辟缓存';
+
+Blockly.Msg.CocoRobo_AUDIO_CMD_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_CMD_MESSAGE0 = '音频  %1';
+Blockly.Msg.CocoRobo_AUDIO_CMD_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_RECORD_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_INIT_MESSAGE0 = '测试 -- 录音 初始化';
+Blockly.Msg.CocoRobo_RECORD_INIT_TOOLTIP = '录音初始化。\n此功能测试中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_RECORD_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_DEINIT_MESSAGE0 = '测试 -- 录音 释放资源';
+Blockly.Msg.CocoRobo_RECORD_DEINIT_TOOLTIP = '录音结束后释放资源。\n此功能测试中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_RECORD_WAV_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_WAV_MESSAGE0 = '测试 -- 录制音频 存储路径 %1 时长 %2 秒';
+Blockly.Msg.CocoRobo_RECORD_WAV_TOOLTIP = '录制音频,并以 WAV 格式存储。\n此功能测试中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_ASR_HELPURL = '';
+Blockly.Msg.CocoRobo_ASR_MESSAGE0 = '测试 -- 识别语音,并返回结果';
+Blockly.Msg.CocoRobo_ASR_TOOLTIP = '语音指令需要在2秒内完成。\n此功能测试中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_button_A = 'P5(按键A)';
+Blockly.Msg.CocoRobo_button_B = 'P11(按键B)';
+Blockly.Msg.CocoRobo_PIN7_RGB = 'P7(板载RGB)';
+
+Blockly.Msg.CocoRobo_PWM_PIN_P7 = 'P7 (教科板)';
+Blockly.Msg.CocoRobo_PWM_PIN_P9 = 'P9 (掌控实验箱)';
+
+Blockly.Msg.CocoRobo_tem = '温度';
+Blockly.Msg.CocoRobo_hum = '湿度';
+Blockly.Msg.CocoRobo_pre = '气压';
+Blockly.Msg.CocoRobo_left_right = '左右';
+Blockly.Msg.CocoRobo_LEFT = '左';
+Blockly.Msg.CocoRobo_RIGHT = '右';
+Blockly.Msg.CocoRobo_front_back = '前后';
+Blockly.Msg.CocoRobo_vertical = '垂直';
+Blockly.Msg.CocoRobo_horizontal = '水平';
+Blockly.Msg.CocoRobo_run_in_back = '后台运行';
+Blockly.Msg.CocoRobo_run_in_front = '前台运行';
+Blockly.Msg.CocoRobo_draw = '绘制';
+Blockly.Msg.CocoRobo_clear  = '清除';
+Blockly.Msg.CocoRobo_s = '秒';
+Blockly.Msg.CocoRobo_ms = '毫秒';
+Blockly.Msg.CocoRobo_us = '微秒';
+Blockly.Msg.CocoRobo_year = '年';
+Blockly.Msg.CocoRobo_month = '月';
+Blockly.Msg.CocoRobo_date = '日';
+Blockly.Msg.CocoRobo_hour = '时';
+Blockly.Msg.CocoRobo_minute = '分';
+Blockly.Msg.CocoRobo_week = '星期数';
+Blockly.Msg.CocoRobo_days = '天数';
+
+Blockly.Msg.CocoRobo_ORDER = '第';
+Blockly.Msg.CocoRobo_REVERSE_ORDER  = '倒数第';
+
+Blockly.Msg.MATH_RANDOM_RANDRANGE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP = '返回指定递增基数集合中的一个随机数,基数缺省值为1';
+Blockly.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0 = '随机数 从递增区间 [%1 ,%2) 递增步长%3';
+
+Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL = '';
+Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP = '返回指定值保留小数点的结果';
+Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0 = '%1 保留 %2 位小数';
+
+Blockly.Msg.CocoRobo_MIN = '最小值';
+Blockly.Msg.CocoRobo_MAX = '最大值';
+Blockly.Msg.CocoRobo_LENTH = '长度';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP = '返回元组的%2';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0 = '元组 %1 %2';
+
+Blockly.Msg.TUPLE_ITEM_EXIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_ITEM_EXIST_TOOLTIP= '判断是否包含指定值,并返回True或False';
+Blockly.Msg.TUPLE_ITEM_EXIST_MESSAGE0= '元组%1 包含%2';
+
+Blockly.Msg.LIST_ITEM_EXIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LIST_ITEM_EXIST_TOOLTIP= '列表包含特定的字符串';
+Blockly.Msg.LIST_ITEM_EXIST_MESSAGE0= '列表%1 包含%2';
+
+Blockly.Msg.PARTS_OF_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_TUPLE_TOOLTIP = '正序计数从0开始,倒序计数从1开始';
+Blockly.Msg.PARTS_OF_TUPLE_MESSAGE0 = '返回元组%1 取第%2 项到尾项';
+
+Blockly.Msg.PARTS_OF_TUPLE2_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_TUPLE2_TOOLTIP = '递增顺序取项\n举例:\n 倒数第5到倒数第2;\n 第0到第5';
+Blockly.Msg.PARTS_OF_TUPLE2_MESSAGE0 = '返回元组%1 取%2 %3 项到 %4 %5 项';
+
+Blockly.Msg.PARTS_OF_LIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_LIST_TOOLTIP = '递增顺序取项\n举例:\n 倒数第5到倒数第2;\n 第0到第5';
+Blockly.Msg.PARTS_OF_LIST_MESSAGE0 = '返回列表%1 取%2 %3 项到 %4 %5 项';
+
+Blockly.Msg.LIST_TO_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LIST_TO_TUPLE_TOOLTIP = '列表转元组';
+Blockly.Msg.LIST_TO_TUPLE_MESSAGE0 = '列表%1 转元组';
+
+
+Blockly.Msg.tuple_create_with_MESSAGE0 = '定义元组 %1 = %2 ';
+Blockly.Msg.tuple_create_with_TOOLTIP = '只包含一个元组时,需要在元组后面添加逗号';
+Blockly.Msg.tuple_create_with_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.tuple_order_item_MESSAGE0 = '元组%1 %2 %3 项';
+Blockly.Msg.tuple_order_item_TOOLTIP = '正序计数从0开始,倒序计数从1开始';
+Blockly.Msg.tuple_order_item_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.LIST_ORDER_ITEM_MESSAGE0 = '列表%1 %2 %3 项';
+Blockly.Msg.LIST_ORDER_ITEM_TOOLTIP = '正序计数从0开始,倒序计数从1开始';
+Blockly.Msg.LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.SET_LIST_ORDER_ITEM_MESSAGE0 = '设列表%1 %2 %3 项为%4';
+Blockly.Msg.SET_LIST_ORDER_ITEM_TOOLTIP = '正序计数从0开始,倒序计数从1开始';
+Blockly.Msg.SET_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0 = '插入列表%1 %2 %3 项为%4';
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP = '正序计数从0开始,倒序计数从1开始';
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_MESSAGE0 = '设元组%1 %2 %3 项为%4';
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_TOOLTIP = '正序计数从0开始,倒序计数从1开始';
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+
+Blockly.Msg.DICT_CREATE_WITH_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_CREATE_WITH_TOOLTIP = '定义一个字典';
+Blockly.Msg.DICT_CREATE_WITH_MESSAGE0 = '定义字典 %1 = %2';
+
+Blockly.Msg.SET_CREATE_WITH_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_CREATE_WITH_TOOLTIP = '定义集合';
+Blockly.Msg.SET_CREATE_WITH_MESSAGE0 = '定义集合 %1 = %2';
+
+Blockly.Msg.SET_UPDATE_WITH_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_UPDATE_WITH_TOOLTIP = '添加参数可为字符串、列表、元组、集合、字典(只添加key),已有元组则不进行操作';
+Blockly.Msg.SET_UPDATE_WITH_MESSAGE0 = '集合 %1 添加 %2';
+
+Blockly.Msg.INTERSECTION_OF_SETS_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP = '返回两集合的%1';
+Blockly.Msg.INTERSECTION_OF_SETS_MESSAGE0 = '取 %1 集合 %2 集合 %3';
+Blockly.Msg.CocoRobo_INTERSECTION = '交集';
+Blockly.Msg.CocoRobo_UNION = '并集';
+Blockly.Msg.CocoRobo_DIFFERENCE = '差集';
+Blockly.Msg.SETS_UPDATE_WAYS_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP = '集合更新为与指定集合的%3';
+Blockly.Msg.SETS_UPDATE_WAYS_MESSAGE0 = '集合 %1 更新为 与集合 %2 的 %3';
+Blockly.Msg.SUBSET_SUPERSET_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SUBSET_SUPERSET_TOOLTIP = '集合为集合的%3';
+Blockly.Msg.SUBSET_SUPERSET_MESSAGE0 = '集合 %1 为集合 %2 的 %3';
+Blockly.Msg.CocoRobo_SUBSET = '子集';
+Blockly.Msg.CocoRobo_SUPERSET = '超集';
+
+Blockly.Msg.LEN_OF_SETS_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LEN_OF_SETS_TOOLTIP = '返回指定集合的长度';
+Blockly.Msg.LEN_OF_SETS_MESSAGE0 = '集合 %1 长度';
+
+Blockly.Msg.GET_SETS_POP_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.GET_SETS_POP_TOOLTIP = '返回移除随机项后的集合';
+Blockly.Msg.GET_SETS_POP_MESSAGE0 = '返回随机项并移除之  从集合 %1';
+
+Blockly.Msg.CREATE_EMPTY_SET_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CREATE_EMPTY_SET_TOOLTIP = '';
+Blockly.Msg.CREATE_EMPTY_SET_MESSAGE0 = '创建空集合 %1';
+
+Blockly.Msg.BIT_INVERSION_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.BIT_INVERSION_TOOLTIP = '对数据的每个二进制位取反';
+Blockly.Msg.BIT_INVERSION_MESSAGE0 = '二进制取反 %1';
+
+
+Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP = '正序计数从0开始,倒序计数从1开始';
+
+Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_TOOLTIP = '项可为字符串、已创建变量变量、元组';
+
+Blockly.Msg.DICT_CREATE_WITH_ITEMS_INSERT_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_CREATE_WITH_ITEMS_INSERT_TOOLTIP = '初始化字典';
+
+
+Blockly.Msg.DICT_KEY_VALUE_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_VALUE_TOOLTIP = '返回字典指定键的值';
+Blockly.Msg.DICT_KEY_VALUE_MESSAGE0 = '字典%1 键%2 的值';
+
+Blockly.Msg.ADD_DICT_KEY_VALUE_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.ADD_DICT_KEY_VALUE_TOOLTIP = '已有该键则更新该键';
+Blockly.Msg.ADD_DICT_KEY_VALUE_MESSAGE0 = '字典%1 添加键%2 值%3';
+
+Blockly.Msg.DICT_LENGTH_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_LENGTH_TOOLTIP= '返回字典的长度';
+Blockly.Msg.DICT_LENGTH_MESSAGE0= '字典%1 长度';
+
+Blockly.Msg.DICT_KEY_EXIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_EXIST_TOOLTIP= '判断字典中是否包含指定键,并返回True或False';
+Blockly.Msg.DICT_KEY_EXIST_MESSAGE0= '字典%1 包含键%2';
+
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP= '返回字典%2的列表';
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0= '字典%1 %2的列表';
+Blockly.Msg.DICT_KEYS= '键';
+Blockly.Msg.DICT_VALUES= '值';
+
+
+Blockly.Msg.CocoRobo_lists_append_MESSAGE0 = '列表%1 末尾添加项%2';
+Blockly.Msg.CocoRobo_lists_append_TOOLTIP = '列表末尾添加项';
+Blockly.Msg.CocoRobo_lists_append_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_lists_extend_MESSAGE0 = '列表%1 追加列表%2';
+Blockly.Msg.CocoRobo_lists_extend_TOOLTIP = '在列表中追加列表';
+Blockly.Msg.CocoRobo_lists_extend_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+// Blockly.Msg.CocoRobo_lists_remove_MESSAGE0 = '列表%1 移除第%2 项';
+// Blockly.Msg.CocoRobo_lists_remove_TOOLTIP = '从第0项开始';
+// Blockly.Msg.CocoRobo_lists_remove_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_lists_clear_MESSAGE0 = '列表%1 清空';
+Blockly.Msg.CocoRobo_lists_clear_TOOLTIP = '清空列表';
+Blockly.Msg.CocoRobo_lists_clear_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+
+Blockly.Msg.CocoRobo_Timer_value_MESSAGE0 ='定时器 %1 的计数值';
+Blockly.Msg.CocoRobo_Timer_value_TOOLTIP = '获取并返回计时器当前计数值';
+
+Blockly.Msg.CocoRobo_Timer_deinit_MESSAGE0 ='清除 定时器/事件 %1';
+Blockly.Msg.CocoRobo_Timer_deinit_TOOLTIP = '取消定时器的初始化。停止计时器,并禁用计时器外围设备';
+
+Blockly.Msg.CocoRobo_Interrupt_AB_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buttons.html#id3';
+Blockly.Msg.CocoRobo_Interrupt_AB_TOOLTIP = '';
+Blockly.Msg.CocoRobo_Interrupt_AB_MESSAGE0 = '当按键 %1 被 %2 时';
+
+Blockly.Msg.CocoRobo_Interrupt_pin_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/io/digital_io.html#id3';
+Blockly.Msg.CocoRobo_Interrupt_pin_TOOLTIP = '上升沿触发:由低电平到高电平;下降沿触发:由高电平到低电平';
+Blockly.Msg.CocoRobo_Interrupt_pin_MESSAGE0 = '当引脚 %1 电平 %2 时';
+Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_FALLING = '↘ 从高到低';
+Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_RISING = '↗ 从低到高';
+
+Blockly.Msg.CocoRobo_IRQ_FALLING = '按下';
+Blockly.Msg.CocoRobo_IRQ_RISING = '松开';
+Blockly.Msg.CocoRobo_PERIODIC = '重复执行';
+Blockly.Msg.CocoRobo_ONE_SHOT = '延时执行';
+
+Blockly.Msg.CocoRobo_IS_SHAKED_MESSAGE0 = '教科板 %1';
+Blockly.Msg.CocoRobo_IS_SHAKED_HELPURL = '';
+Blockly.Msg.CocoRobo_IS_SHAKED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IS_SHAKED = '被摇晃';
+Blockly.Msg.CocoRobo_IS_THROWN = '被抛起';
+
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_MESSAGE0 = '当教科板 %1 时';
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_HELPURL = '';
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IS_TILTED_MESSAGE0 = '教科板 %1';
+Blockly.Msg.CocoRobo_IS_TILTED_HELPURL = '';
+Blockly.Msg.CocoRobo_IS_TILTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TILT_DETECTOR_MESSAGE0 = '当教科板 %1 时';
+Blockly.Msg.CocoRobo_TILT_DETECTOR_HELPURL = '';
+Blockly.Msg.CocoRobo_TILT_DETECTOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DIRECTION_FORWARD = '向前倾斜';
+Blockly.Msg.CocoRobo_DIRECTION_BACK = '向后倾斜';
+Blockly.Msg.CocoRobo_DIRECTION_RIGHT = '向右倾斜';
+Blockly.Msg.CocoRobo_DIRECTION_LEFT = '向左倾斜';
+Blockly.Msg.CocoRobo_DIRECTION_NONE = '平放';
+
+Blockly.Msg.CocoRobo_TOUCH_EVENT_MESSAGE0 = '当触摸键 %1 被 %2 时';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_HELPURL = '';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TOUCH_EVENT_PRESSED = '触摸';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_UNPRESSED = '释放';
+
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_MESSAGE0 = '事件 %1 : 当 %2 时';
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_HELPURL = '';
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_TOOLTIP = '自定义事件与定时器共用 1/2/4/7/8/9/10,不可同时占用一个端口。\n最大同时创建4个事件/定时器,如果存在冲突,请尝试换一个编号。';
+
+Blockly.Msg.CocoRobo_music_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_music_range_pitch_TOOLTIP = '时长为单个频率的时长';
+Blockly.Msg.CocoRobo_music_range_pitch_MESSAGE0 = '播放音调 从%1 到%2 步长%3 时长%4 毫秒  引脚 %5';
+
+Blockly.Msg.CocoRobo_neopixel_init_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_neopixel_init_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_init_MESSAGE0 = '灯带初始化 名称%1 引脚%2 数量%3';
+
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_MESSAGE0 = '彩虹灯效 灯带%1 数量 %2 亮度 %3 偏移 %4';
+
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/micropython/neopixel.html#NeoPixel.brightness';
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_TOOLTIP = '亮度调节, 范围 0 ~ 100';
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_MESSAGE0 = '灯带 %1 设置亮度为 %2';
+
+Blockly.Msg.CocoRobo_neopixel_single_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_single_MESSAGE0 = '灯带%1 %2号 红%3 绿%4 蓝%5';
+
+Blockly.Msg.CocoRobo_neopixel_single_gui_MESSAGE0 ='灯带 %1 %2号 颜色为 %3';
+Blockly.Msg.CocoRobo_neopixel_single_gui_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_neopixel_show_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_show_MESSAGE0 = '灯带%1 设置生效';
+
+Blockly.Msg.CocoRobo_neopixel_off_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_off_MESSAGE0 = '灯带%1 关闭';
+
+Blockly.Msg.CocoRobo_neopixel_all_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_all_MESSAGE0 = '灯带%1 全亮 红%2 绿%3 蓝%4';
+
+Blockly.Msg.CocoRobo_neopixel_all_gui_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_all_gui_MESSAGE0 = '灯带%1 全亮 颜色%2';
+
+Blockly.Msg.CocoRobo_image_to_lcd_MESSAGE0 ='打开图片 %1 宽 %2 高 %3';
+Blockly.Msg.CocoRobo_image_to_lcd_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_time_localtime_MESSAGE0 ='本地时间 %1';
+Blockly.Msg.CocoRobo_time_localtime_TOOLTIP = '星期数:返回0~6,周一为0,周日为6\n天数:获取当前日期是一年中的第几天\n建议先连接wifi并获取网络时间';
+
+Blockly.Msg.CocoRobo_WiFi_config_MESSAGE0 ='Wi-Fi 配置信息 %1';
+Blockly.Msg.CocoRobo_WiFi_config_TOOLTIP = 'netmask-子网掩码;gateway-网关';
+
+Blockly.Msg.CocoRobo_time_ticks_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_time_ticks_MESSAGE0 ='运行时间 %1';
+Blockly.Msg.CocoRobo_time_ticks_TOOLTIP = '';
+
+// Blockly.Msg.CocoRobo_Timer_MESSAGE0 ='定时器 %1 周期 %2 毫秒 模式 %3 回调函数 %4';
+Blockly.Msg.CocoRobo_Timer_MESSAGE0 ='设置定时器 %1 %2 周期 %3 毫秒';
+Blockly.Msg.CocoRobo_Timer_TOOLTIP = '创建定时器n,n=1-14。\n最大同时创建4个定时器,如果存在冲突,请尝试换一个编号。\n3用于内部程序,\n5/6用于伺服系统和ADC,\n11用于摇晃检测,\n12用于触摸键检测,\n13用于Radio和DHT11/DHT22定时取值(共用),\n14用于OneNET和倾斜检测(共用),\n其余端口与自定义事件共用。';
+// Blockly.Msg.CocoRobo_Timer_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/advance/timer.html?highlight=%E5%AE%9A%E6%97%B6%E5%99%A8#id1';
+Blockly.Msg.CocoRobo_Timer_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/blocks/index.html';
+
+Blockly.Msg.CocoRobo_sway_xyz_MESSAGE0 ='%1 摇晃教科板';
+Blockly.Msg.CocoRobo_sway_xyz_TOOLTIP = "教科板正面朝上,触摸键 'python' 靠近使用者,开始左右或前后摇晃教科板";
+
+Blockly.Msg.CocoRobo_init_bluetooth_MESSAGE0 ='初始化 蓝牙名称%1';
+Blockly.Msg.CocoRobo_init_bluetooth_TOOLTIP = '初始化 蓝牙名称';
+
+Blockly.Msg.CocoRobo_OnOff_bluetooth_MESSAGE0 ='蓝牙设备 %1广播';
+Blockly.Msg.CocoRobo_OnOff_bluetooth_TOOLTIP = '蓝牙设备 开启或关闭广播';
+
+Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_MESSAGE0 ='键盘 按键%1';
+Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_TOOLTIP = 'HID键盘设备';
+
+Blockly.Msg.CocoRobo_HID_consumer_bluetooth_MESSAGE0 ='消费类设备%1 状态%2';
+Blockly.Msg.CocoRobo_HID_consumer_bluetooth_TOOLTIP = '模拟HID消费类设备的控制器,如蓝牙遥控器';
+
+Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_MESSAGE0 ='键盘 释放按键';
+Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_TOOLTIP = '键盘设备';
+
+Blockly.Msg.CocoRobo_HID_mouse_bluetooth_MESSAGE0 ='鼠标%1';
+Blockly.Msg.CocoRobo_HID_mouse_bluetooth_TOOLTIP = '鼠标设备';
+
+Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_MESSAGE0 ='鼠标 释放按键';
+Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_TOOLTIP = '鼠标设备';
+
+Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_MESSAGE0 = '鼠标 指针移动 x%2 y%1';
+Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_TOOLTIP = '鼠标指针坐标x,y轴的相对位移,范围-1023 ~ 1023';
+
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0 ='键盘 按键%1 组合按键%2';
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP = '如果想使用多个按键组合指令,可以用“|”或运算';
+
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_MESSAGE0 = '键盘 组合按键%1';
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_TOOLTIP = '如果想使用多个按键组合指令,可以用“|”或运算';
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_HELPURL = '';
+
+Blockly.Msg.CocoRobo_init_wifi_MESSAGE0 ='连接 Wi-Fi 名称 %1 密码 %2';
+Blockly.Msg.CocoRobo_init_wifi_TOOLTIP = '让教科板接入Wi-Fi环境';
+
+Blockly.Msg.CocoRobo_dis_WiFi_MESSAGE0 ='断开 Wi-Fi 连接';
+Blockly.Msg.CocoRobo_dis_WiFi_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/basics/network/network_basics.html#ap';
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_TOOLTIP = '密码可以为空,或者8位以上的字母或数字。\nAP模式仅用于教科板之间的相互通信,不可以作为热点,令其它设备上网。';
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_MESSAGE0 = '开启 AP模式 名称 %1 密码 %2 信道 %3';
+
+Blockly.Msg.CocoRobo_disable_APWiFi_MESSAGE0 = '关闭 AP模式';
+Blockly.Msg.CocoRobo_disable_APWiFi_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ntptime_settime_MESSAGE0 = '同步网络时间';
+Blockly.Msg.CocoRobo_ntptime_settime_TOOLTIP = 'NTP时间同步是一种时间同步网络技术';
+
+Blockly.Msg.CocoRobo_ntptime_timezone_E1 = "东1区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E2 = "东2区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E3 = "东3区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E4 = "东4区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E5 = "东5区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E6 = "东6区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E7 = "东7区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E8 = "东8区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E9 = "东9区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E10 = "东10区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E11 = "东11区";
+Blockly.Msg.CocoRobo_ntptime_timezone_E12 = "东12区";
+Blockly.Msg.CocoRobo_ntptime_timezone_0 = "中时区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W1 = "西1区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W2 = "西2区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W3 = "西3区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W4 = "西4区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W5 = "西5区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W6 = "西6区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W7 = "西7区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W8 = "西8区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W9 = "西9区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W10 = "西10区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W11 = "西11区";
+Blockly.Msg.CocoRobo_ntptime_timezone_W12 = "西12区";
+
+Blockly.Msg.FILE_TO_LIST_HELPURL = '';
+Blockly.Msg.FILE_TO_LIST_TOOLTIP = '读出指定路径的文本文件内容(仅限utf-8格式),并转为列表形式,以分隔符分隔。';
+Blockly.Msg.FILE_TO_LIST_MESSAGE0 = '读取文本文件 %1 为列表 ,以 %2 分隔';
+
+Blockly.Msg.FILE_TO_BIN_HELPURL = '';
+Blockly.Msg.FILE_TO_BIN_TOOLTIP = '以二进制格式读出指定路径的文件内容。';
+Blockly.Msg.FILE_TO_BIN_MESSAGE0 = '读取文件 %1 的二进制内容';
+
+Blockly.Msg.CocoRobo_INIT_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_FILE_TOOLTIP = '初始化一个文本文件,如果文件不存在则创建文件,如果文件存在则清空内容。';
+Blockly.Msg.CocoRobo_INIT_FILE_MESSAGE0 = '初始化文本文件 %1';
+
+Blockly.Msg.CocoRobo_WRITE_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_WRITE_FILE_TOOLTIP = '向指定路径的文本文件写入内容,如果文件不存在则创建文件。';
+Blockly.Msg.CocoRobo_WRITE_FILE_MESSAGE0 = '向文本文件 %1 写入内容 %2 ,以 %3 分隔';
+
+Blockly.Msg.CocoRobo_SDCARD_INIT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard';
+Blockly.Msg.CocoRobo_SDCARD_INIT_TOOLTIP = 'sck: P13\nmosi: P15\nmiso: P14\nsdcard: P16\n须确保 SPI 总线的引脚与 micro SD 卡物理连接正确,并预先使用 FAT 或 FAT32 文件系统格式化 micro SD 卡。';
+Blockly.Msg.CocoRobo_SDCARD_INIT_MESSAGE0 = '初始化 SD 卡';
+
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard';
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_TOOLTIP = '挂载 SD 卡到指定路径。';
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_MESSAGE0 = '挂载 SD 卡到路径 %1';
+
+Blockly.Msg.CocoRobo_ENTER = '回车';
+Blockly.Msg.CocoRobo_COMMA = '逗号';
+Blockly.Msg.CocoRobo_SEMICOLON = '分号';
+Blockly.Msg.CocoRobo_SPACE = '空格';
+
+Blockly.Msg.CocoRobo_wifi_clock_MESSAGE0 = 'Wi-Fi 模拟时钟 x %1 y %2 半径 %3';
+Blockly.Msg.CocoRobo_wifi_clock_TOOLTIP = '需连接 Wi-Fi 使用';
+
+Blockly.Msg.CocoRobo_def_clock_MESSAGE0 = '初始化时钟%1 x %2 y %3 半径 %4';
+Blockly.Msg.CocoRobo_def_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_settime_clock_MESSAGE0 = '时钟%1 读取时间';
+Blockly.Msg.CocoRobo_settime_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_draw_clear_clock_MESSAGE0 = '%1 时钟 %2';
+Blockly.Msg.CocoRobo_draw_clear_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_tinywebio_start_MESSAGE0 = '启动 TinyWebIO 服务 %1';
+Blockly.Msg.CocoRobo_tinywebio_start_TOOLTIP = '启动该服务需连接Wi-Fi,TinyWebIO服务为App Inventor应用提供远程控制接口的教科板工具包';
+
+Blockly.Msg.CocoRobo_tinywebio_client_setup_HELPURL = '';
+Blockly.Msg.CocoRobo_tinywebio_client_setup_TOOLTIP = '向服务器发布的数据项(逗号分隔)\nbuttona/b 按键状态\ntouchpadp/y/t/h/o/n 触摸按键值\nlight 光线值\nsound 声音值\naccelerometer 三轴加速度值\nid 教科板标识\ntime 时间戳\npind<n> 数字IO引脚\npina<n> 模拟IO引脚\n----------\n从服务器读取的数据项(逗号分隔)\nrgb0/1/2 RGB灯珠\noled OLCD显示屏\nmusic 音乐\nservo<n> 舵机\npind<n> 数字IO引脚\npina<n> 模拟IO引脚';
+Blockly.Msg.CocoRobo_tinywebio_client_setup_MESSAGE0 = '设置 TinyWebIO 客户端参数 %1 TinyWebDB服务器地址 %2 向服务器发布的数据项 %3 从服务器读取的数据项 %4 存取服务器的时间间隔(ms) %5';
+
+Blockly.Msg.CocoRobo_tinywebio_client_action_HELPURL = '';
+Blockly.Msg.CocoRobo_tinywebio_client_action_TOOLTIP = '';
+Blockly.Msg.CocoRobo_tinywebio_client_action_MESSAGE0 = '%1 TinyWebIO 客户端';
+
+Blockly.Msg.CocoRobo_tinywebio_client_action_start = '启动';
+Blockly.Msg.CocoRobo_tinywebio_client_action_stop = '停止';
+
+Blockly.Msg.CocoRobo_CUSTOM_CODE_HELPURL = '';
+Blockly.Msg.CocoRobo_CUSTOM_CODE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_CUSTOM_CODE_MESSAGE0 = '%1 自定义代码 %2 %3';
+
+Blockly.Msg.CocoRobo_CUSTOM_TYPE_IMPORT = '置顶';
+Blockly.Msg.CocoRobo_CUSTOM_TYPE_NORMAL = '普通';
+
+Blockly.Msg.CocoRobo_servo_angle0_MESSAGE0 ='设置舵机 %1 角度为 %2';
+Blockly.Msg.CocoRobo_servo_angle_MESSAGE0 ='设置舵机 %1 角度为 %2 脉宽从 %3 到 %4 最大角度 %5';
+Blockly.Msg.CocoRobo_servo_angle_TOOLTIP = '电源线Vcc(红色)连接扩展板电源口V,地线GND(棕色)连接扩展板地线口G,控制信号线(橙色)连接所选的扩展板引脚';
+
+Blockly.Msg.CocoRobo_dh11_hum_tem_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT';
+Blockly.Msg.CocoRobo_dh11_hum_tem_MESSAGE0 ='DHT11 %1 %2';
+Blockly.Msg.CocoRobo_dh11_hum_tem_TOOLTIP = 'DHT11上的 + 连接扩展板的电源口 V ,- 连接扩展板的地线口 G ,out 连接扩展板的引脚 0(即选引脚)';
+
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_MESSAGE0 ='DHT22 %1 %2';
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT';
+
+Blockly.Msg.CocoRobo_music_note_MESSAGE0 ='音符 %1 %2 :  %3';
+Blockly.Msg.CocoRobo_music_note_TOOLTIP = '音符,如C4:4';
+
+// Blockly.Msg.CocoRobo_return_list_MESSAGE0 ='列表 %1 = [ %2 ]';
+Blockly.Msg.CocoRobo_return_list_MESSAGE0 ='定义列表 %1 = %2';
+Blockly.Msg.CocoRobo_return_list_TOOLTIP = '定义一个列表';
+
+Blockly.Msg.CocoRobo_display_Show_MESSAGE0 ='LCD 显示生效';
+Blockly.Msg.CocoRobo_display_Show_TOOLTIP = '';
+
+
+Blockly.Msg.CocoRobo_display_DispChar_MESSAGE0 ='显示文本 x %1 y %2 内容 %3 模式 %4';
+Blockly.Msg.CocoRobo_display_DispChar_TOOLTIP = 'OLCD分辨率128x64';
+Blockly.Msg.CocoRobo_display_DispChar_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/CocoRobo.html?highlight=lcd#lcd.DispChar';
+
+Blockly.Msg.CocoRobo_display_DispChar_5lines_MESSAGE0 ='LCD 第%1 行显示 %2 模式 %3';
+Blockly.Msg.CocoRobo_display_DispChar_5lines_TOOLTIP = 'OLCD分辨率128x64';
+Blockly.Msg.CocoRobo_line1  = '1';
+Blockly.Msg.CocoRobo_line2 = '2';
+Blockly.Msg.CocoRobo_line3 = '3';
+Blockly.Msg.CocoRobo_line4 = '4';
+Blockly.Msg.CocoRobo_line5 = '5';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_MESSAGE0 ='LCD 清除第 %1 行';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_TOOLTIP = 'OLCD分辨率128x64';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_HELPURL = '';
+Blockly.Msg.CocoRobo_display_fill_O = "初始化";
+Blockly.Msg.CocoRobo_display_fill_0 ='清空';
+Blockly.Msg.CocoRobo_display_fill_1 = '全亮';
+Blockly.Msg.CocoRobo_display_invert_0 ='黑底';
+Blockly.Msg.CocoRobo_display_invert_1 = '白底';
+Blockly.Msg.CocoRobo_display_show = '生效';
+Blockly.Msg.CocoRobo_display_fill_MESSAGE0 ='LCD 显示初始化';
+Blockly.Msg.GLCDD = '获取LCD显示器 %1';
+Blockly.Msg.CocoRobo_display_fill_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_pixel_0 ='暗';
+Blockly.Msg.CocoRobo_display_pixel_1 = '亮';
+Blockly.Msg.CocoRobo_display_pixel_MESSAGE0 ='描点 x %1 y %2 为 %3';
+Blockly.Msg.CocoRobo_display_pixel_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_hline_0 ='擦除';
+Blockly.Msg.CocoRobo_display_hline_1 = '绘制';
+Blockly.Msg.CocoRobo_display_hline_MESSAGE0 ='%1 水平线%2 x%3  y%4 长度%5';
+Blockly.Msg.CocoRobo_display_hline_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ProgressBar_MESSAGE0 ='进度条%1 x%2  y%3 宽%4 高%5 进度%6';
+Blockly.Msg.CocoRobo_ProgressBar_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_stripBar_MESSAGE0 ='柱状条%1 x%2  y%3 宽%4 高%5 进度%6';
+Blockly.Msg.CocoRobo_stripBar_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_QR_CODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#gui.UI.qr_code';
+Blockly.Msg.CocoRobo_QR_CODE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_QR_CODE_MESSAGE0 = '在坐标 x %1 y %2 绘制二维码 %3 尺寸 %4';
+
+Blockly.Msg.CocoRobo_DISPLAY_MODE_0 = '擦除';
+Blockly.Msg.CocoRobo_DISPLAY_MODE_1 = '绘制';
+
+Blockly.Msg.CocoRobo_DISPLAY_HOLLOW = '空心';
+Blockly.Msg.CocoRobo_DISPLAY_SOLID = '实心';
+
+Blockly.Msg.CocoRobo_DISPLAY_HVLINE_MESSAGE0 = '%1 %2 线 %3 x %4 y %5 长度 %6';
+Blockly.Msg.CocoRobo_DISPLAY_HVLINE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_MESSAGE0 = '%1 %2 矩形 %3 x %4 y %5 宽 %6 高 %7';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_MESSAGE0 = '%1 %2 圆 %3 x %4 y %5 半径 %6';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_MESSAGE0 = '%1 %2 三角 %3 x1 %4 y1 %5 x2 %6 y2 %7 x3 %8 y3 %9';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_RGB_0 = '0 #';
+Blockly.Msg.CocoRobo_RGB_1 = '1 #';
+Blockly.Msg.CocoRobo_RGB_2 = '2 #';
+Blockly.Msg.CocoRobo_RGB_ALL = '所有';
+
+Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_MESSAGE0 = '设置 %1 RGB 灯颜色为 %2';
+Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_TOOLTIP = '原生亮度的 1/30 能较好显示色差';
+
+Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_MESSAGE0 = '设置 %1 RGB 灯颜色为 R %2 G %3 B %4';
+Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_TOOLTIP = '原生亮度的 1/30 能较好显示色差';
+
+Blockly.Msg.CocoRobo_OFF_RGB_LIST_MESSAGE0 = '关闭 %1 RGB 灯';
+Blockly.Msg.CocoRobo_OFF_RGB_LIST_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MUSIC_PLAY_MESSAGE0 = '播放音乐 %1 引脚 %2';
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TOOLTIP = '播放内置的音乐';
+
+Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_MESSAGE0 = '播放音乐 %1 直到完成 , 引脚 %2';
+Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_TOOLTIP = '播放内置的音乐';
+
+Blockly.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO = '歌唱祖国';
+Blockly.Msg.CocoRobo_MUSIC_DONG_FANG_HONG = '东方红';
+Blockly.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE = '彩云追月';
+Blockly.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI = '走进新时代';
+Blockly.Msg.CocoRobo_MUSIC_MO_LI_HUA = '茉莉花';
+Blockly.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO = '沂蒙山小调';
+
+Blockly.Msg.CocoRobo_display_vline_MESSAGE0 = '%1 垂直线%2 x%3  y%4 长度%5';
+Blockly.Msg.CocoRobo_display_vline_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_line_MESSAGE0 ='%1 线%2 x1 %3  y1 %4 到  x2 %5 y2 %6';
+Blockly.Msg.CocoRobo_display_line_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_rect_MESSAGE0 ='%1 边框%2 x %3 y %4 宽 %5 高 %6';
+Blockly.Msg.CocoRobo_display_rect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_RoundRect_MESSAGE0 ='%1 弧角边框%2 x %3  y %4 宽 %5 高 %6 半径%7';
+Blockly.Msg.CocoRobo_display_RoundRect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_rect_MESSAGE0 ='%1 矩形%2 x %3  y %4 宽 %5 高 %6 ';
+Blockly.Msg.CocoRobo_display_fill_rect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_circle_MESSAGE0 ='%1 实心圆%2 x %3  y %4 半径 %5';
+Blockly.Msg.CocoRobo_display_fill_circle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_circle_MESSAGE0 ='%1 空心圆%2 x %3  y %4 半径 %5';
+Blockly.Msg.CocoRobo_display_circle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_triangle_MESSAGE0 ='%1 空心三角%2 x%3  y%4 x2%5  y2%6 x3%7  y3%8';
+Blockly.Msg.CocoRobo_display_triangle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_triangle_MESSAGE0 ='%1 实心三角%2 x%3  y%4 x2%5  y2%6 x3%7  y3%8';
+Blockly.Msg.CocoRobo_display_fill_triangle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_Bitmap_MESSAGE0 ='%1 图像 x%2  y%3 宽%4 高%5 16进制图像数据 %6';
+Blockly.Msg.CocoRobo_display_Bitmap_TOOLTIP = '将16进制图像数据显示在OLCD屏的指定位置';
+
+Blockly.Msg.CocoRobo_GET_PBM_DATA_MESSAGE0 = '获取内置图像 %1 模式%2';
+Blockly.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP = '支持*.pbm 或 *.bmp 格式的单色图像文件,获取指定路径的图像文件数据,返回一个元组对象。';
+Blockly.Msg.CocoRobo_GET_PBM_DATA_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image';
+
+Blockly.Msg.CocoRobo_GET_PBM_DATA_CUSTOM_MESSAGE0 = '获取自定义图像 %1 模式%2';
+
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_MESSAGE0 = '在坐标 x %1  y %2 显示图像 %3';
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_TOOLTIP = '支持*.pbm 或 *.bmp格式的单色图像文件';
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image';
+
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_MESSAGE0 = '在坐标 x %1  y %2 显示图像 %5 宽 %3 高 %4';
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_horizontal = '水平';
+Blockly.Msg.CocoRobo_vertical = '垂直';
+Blockly.Msg.CocoRobo_display_FrameBuffer_MESSAGE0 ='构建帧 列表 %1  长 %2 宽 %3 扫描模式 %4';
+Blockly.Msg.CocoRobo_display_FrameBuffer_TOOLTIP = '用图像取模后数据的列表 ,创建128x64的帧缓存区,以储存图片帧';
+/*
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_MESSAGE0 = '在坐标 x %1  y %2 显示数码管字体 %3 大小 %4';
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_HELPURL = '';
+*/
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_11 = '仿数码管 11像素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_16 = '仿数码管 16像素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_21 = '仿数码管 21像素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_30 = '仿数码管 30像素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_44 = '仿数码管 44像素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_30 = '仿数码管 斜体 30像素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_42 = '仿数码管 斜体 42像素';
+Blockly.Msg.CocoRobo_FONT_DVSM_12 = 'DejaVu Sans Mono 12像素';
+Blockly.Msg.CocoRobo_FONT_DVSM_16 = 'DejaVu Sans Mono 16像素';
+Blockly.Msg.CocoRobo_FONT_DVSM_21 = 'DejaVu Sans Mono 21像素';
+Blockly.Msg.CocoRobo_FONT_DVSMB_12 = 'DejaVu Sans Mono 黑体 12像素';
+Blockly.Msg.CocoRobo_FONT_DVSMB_16 = 'DejaVu Sans Mono 黑体 16像素';
+Blockly.Msg.CocoRobo_FONT_DVSMB_21 = 'DejaVu Sans Mono 黑体 21像素';
+
+Blockly.Msg.CocoRobo_FONT_WRAP = '自动换行';
+Blockly.Msg.CocoRobo_FONT_NO_WRAP = '不换行';
+
+Blockly.Msg.CocoRobo_FACE_1 = '心形';
+Blockly.Msg.CocoRobo_FACE_2 = '心形(小)';
+Blockly.Msg.CocoRobo_FACE_3 = '高兴';
+Blockly.Msg.CocoRobo_FACE_4 = '笑脸';
+Blockly.Msg.CocoRobo_FACE_5 = '伤心';
+Blockly.Msg.CocoRobo_FACE_6 = '困惑';
+Blockly.Msg.CocoRobo_FACE_7 = '生气';
+Blockly.Msg.CocoRobo_FACE_8 = '睡着';
+Blockly.Msg.CocoRobo_FACE_9 = '惊讶';
+Blockly.Msg.CocoRobo_FACE_10 = '愚蠢';
+Blockly.Msg.CocoRobo_FACE_11 = '极妙';
+Blockly.Msg.CocoRobo_FACE_12 = '无聊';
+Blockly.Msg.CocoRobo_FACE_ROCK = '石头';
+Blockly.Msg.CocoRobo_FACE_PAPER = '布';
+Blockly.Msg.CocoRobo_FACE_SCISSORS = '剪刀';
+Blockly.Msg.CocoRobo_FACE_ROCK_S = '石头(小)';
+Blockly.Msg.CocoRobo_FACE_PAPER_S = '布(小)';
+Blockly.Msg.CocoRobo_FACE_SCISSORS_S = '剪刀(小)';
+
+Blockly.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0 = '在坐标 x %1 y %2 显示 %3 以 %4 字体 %5';
+Blockly.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DISPLAY_FONT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_front = '正向';
+Blockly.Msg.CocoRobo_reverse = '反转';
+Blockly.Msg.CocoRobo_display_blit_MESSAGE0 ='显示帧 坐标x  %1  y %2';
+Blockly.Msg.CocoRobo_display_blit_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_front_reverse_MESSAGE0 = '像素点bit %1';
+Blockly.Msg.CocoRobo_front_reverse_TOOLTIP  = '用于显示之前';
+
+Blockly.Msg.CocoRobo_images_append_MESSAGE0 ='动图显示 帧数%1  周期%2 长%3 宽%4';
+Blockly.Msg.CocoRobo_images_append_TOOLTIP = '上传至教科板的pbm图片需命名为IMAGE.数字,后缀为pbm。如:IMAGE.1.pbm。帧数为7则数字为1至7';
+
+Blockly.Msg.CocoRobo_button_is_pressed_MESSAGE0 ='按键%1 被按下';
+Blockly.Msg.CocoRobo_button_is_pressed_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_button_both_pressed_MESSAGE0 ='AB按键都按下';
+Blockly.Msg.CocoRobo_button_both_pressed_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_touchPad_value_MESSAGE0 ='按键%1 被触摸';
+Blockly.Msg.CocoRobo_touchPad_value_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_touchPad_value_num_MESSAGE0 ='按键%1 触摸值';
+Blockly.Msg.CocoRobo_touchPad_value_num_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_digital_MESSAGE0 ='读取引脚%1 数字值';
+Blockly.Msg.CocoRobo_read_digital_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_DS18B20_MESSAGE0 ='DS18B20 防水温度传感器 引脚 %1';
+Blockly.Msg.CocoRobo_read_DS18B20_TOOLTIP = '';
+Blockly.Msg.CocoRobo_read_DS18B20_HELPURL = 'http://docs.micropython.org/en/latest/esp32/quickref.html?highlight=onewire#onewire-driver';
+
+Blockly.Msg.CocoRobo_set_digital_MESSAGE0 ='设置引脚 %2 数字值为 %1';
+Blockly.Msg.CocoRobo_set_digital_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_analog_MESSAGE0 ='读取引脚 %1 模拟值';
+Blockly.Msg.CocoRobo_read_analog_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_set_analog_MESSAGE0 ='设置引脚 %2 模拟值(PWM)为 %1';
+Blockly.Msg.CocoRobo_set_analog_TOOLTIP = '模拟输出是通过IO引脚输出脉宽调制信号,输出指定的电压值,简称PWM。';
+
+Blockly.Msg.CocoRobo_set_RGB_MESSAGE0 ='设置 %1 号 RGB 灯颜色为 R %2 G %3 B %4';
+Blockly.Msg.CocoRobo_set_RGB_TOOLTIP = '原生亮度的 1/30 能较好显示色差';
+
+Blockly.Msg.CocoRobo_set_RGB_color_MESSAGE0 ='设置 %1 号 RGB 灯颜色为 %2';
+Blockly.Msg.CocoRobo_set_RGB_color_TOOLTIP = '原生亮度的 1/30 能较好显示色差';
+
+Blockly.Msg.CocoRobo_set_RGB_all_MESSAGE0 ='设置所有 RGB 灯颜色为 R %1 G %2 B %3';
+Blockly.Msg.CocoRobo_set_RGB_all_TOOLTIP = '原生亮度的 1/30 能较好显示色差';
+
+Blockly.Msg.CocoRobo_set_RGB_color_all_MESSAGE0 ='设置所有 RGB 灯颜色为 %1';
+Blockly.Msg.CocoRobo_set_RGB_color_all_TOOLTIP = '原生亮度的 1/30 能较好显示色差';
+
+Blockly.Msg.CocoRobo_fresh_RGB_MESSAGE0 ='RGB 灯设置生效';
+Blockly.Msg.CocoRobo_fresh_RGB_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_off_RGB_MESSAGE0 ='关闭 RGB 灯';
+Blockly.Msg.CocoRobo_off_RGB_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_state_MESSAGE0 = '停止播放音乐';
+Blockly.Msg.CocoRobo_buzz_state_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_freq_MESSAGE0 ='播放连续音调 %1 引脚 %2';
+Blockly.Msg.CocoRobo_buzz_freq_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_tone_MESSAGE0 ='播放音调 %1';
+Blockly.Msg.CocoRobo_buzz_tone_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_TOOLTIP = '默认是教科板的P6引脚';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_MESSAGE0 = '播放音符 %1 引脚 %2';
+
+Blockly.Msg.CocoRobo_MUSIC_TONE_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_MESSAGE0 = '音调 %1';
+
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_MESSAGE0 = '音符 %1 节拍 %2';
+
+Blockly.Msg.CocoRobo_MUSIC_TICK_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_TICK_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_TICK_MESSAGE0 = '节拍 %1';
+
+Blockly.Msg.CocoRobo_4_LINES_HELPURL = '';
+Blockly.Msg.CocoRobo_4_LINES_TOOLTIP = '';
+Blockly.Msg.CocoRobo_4_LINES_MESSAGE0 = '%1';
+
+Blockly.Msg.NUMBER_1 = '1';
+Blockly.Msg.NUMBER_1_2 = '1/2';
+Blockly.Msg.NUMBER_1_4 = '1/4';
+Blockly.Msg.NUMBER_2 = '2';
+Blockly.Msg.NUMBER_4 = '4';
+
+Blockly.Msg.CocoRobo_read_sound_MESSAGE0 ='声音值';
+Blockly.Msg.CocoRobo_read_sound_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_light_MESSAGE0 ='光线值';
+Blockly.Msg.CocoRobo_read_light_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_accelerometer_get_MESSAGE0 ='%1 轴加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_TOOLTIP = '';
+Blockly.Msg.CocoRobo_accelerometer_get_z_MESSAGE0 ='z轴加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_z_TOOLTIP = '';
+Blockly.Msg.CocoRobo_accelerometer_get_y_MESSAGE0 ='y轴加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_y_TOOLTIP = '';
+Blockly.Msg.CocoRobo_accelerometer_get_x_MESSAGE0 ='x轴加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_x_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_2G = '±2g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_4G = '±4g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_8G = '±8g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_16G = '±16g';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_10_BIT = '10bits';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_12_BIT = '12bits';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_14_BIT = '14bits';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_TOOLTIP = '设置加速度范围,默认为 ±2g。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_MESSAGE0 = '设置加速度范围为 %1';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_TOOLTIP = '设置加速度分辨率,默认为 10bits。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_MESSAGE0 = '设置加速度分辨率为 %1';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_TOOLTIP = '校准加速度计的3个轴(x,y,z)的加速值偏差。\n一般情况下无需校准,只有遇到加速度偏差较大时才要校准。\n x , y , z 为调整偏差值,可修正范围为 ±1g。\n注意:校准数据断电后不会保存。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_MESSAGE0 = '校准加速度值 %1 X轴偏差 %2 Y轴偏差 %3 Z轴偏差 %4';
+
+Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_TOOLTIP = '仅适用于教科板2.0及以上版本';
+Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_MESSAGE0 = '%1 轴 磁力';
+
+Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_TOOLTIP = '仅适用于教科板2.0及以上版本';
+Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_MESSAGE0 = '指南针方向';
+
+Blockly.Msg.CocoRobo_TILT_ANGLE_HELPURL = '';
+Blockly.Msg.CocoRobo_TILT_ANGLE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_TILT_ANGLE_MESSAGE0 = '%1 轴倾斜角';
+
+Blockly.Msg.CocoRobo_random_choice_MESSAGE0 ='返回随机项%1';
+Blockly.Msg.CocoRobo_random_choice_TOOLTIP = '以String格式,返回列表或字符串中的随机项';
+
+Blockly.Msg.MACHINE_TIME_PULSE_US_HELPURL =
+    'https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.html?highlight=machine.time_pulse_us#machine.time_pulse_us';
+Blockly.Msg.MACHINE_TIME_PULSE_US_MESSAGE0 = '%1 外部 %2 电平持续时间(微秒)';
+Blockly.Msg.MACHINE_TIME_PULSE_US_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_i2c_init_MESSAGE0 ='初始化I2C 波特率%1';
+Blockly.Msg.CocoRobo_i2c_init_TOOLTIP = 'SCL引脚19,SDA引脚20,与内部的OLCD和加速度传感器共享I2C总线';
+
+Blockly.Msg.CocoRobo_dev_i2c_init_MESSAGE0 = '初始化I2C SCL %2 SDA %3 波特率 %1';
+Blockly.Msg.CocoRobo_dev_i2c_init_TOOLTIP = '';
+Blockly.Msg.CocoRobo_dev_i2c_init_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.I2C.html#machine.I2C';
+
+Blockly.Msg.CocoRobo_i2c_read_write_MESSAGE0 ='I2C 地址 %1 写入 %2';
+Blockly.Msg.CocoRobo_i2c_read_write_TOOLTIP = '地址:Number\n写入:Number、String';
+
+Blockly.Msg.CocoRobo_i2c_readfrom_MESSAGE0 ='I2C 地址 %1 读取bytes数量 %2';
+Blockly.Msg.CocoRobo_i2c_readfrom_TOOLTIP = '地址:Number\n返回:读取数据的 bytes 对象的字符串';
+
+Blockly.Msg.CocoRobo_print_MESSAGE0 ='调试输出 %1';
+Blockly.Msg.CocoRobo_print_TOOLTIP = '通过串口调试,输出字符串';
+
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_TOOLTIP = "";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_EMPTY_TITLE = "打印数据到图表";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_INPUT_WITH = "打印数据到图表";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TITLE = "数据";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TOOLTIP = "";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TITLE_ADD = "数据内容";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_INIT_CHART_TOOLTIP = "";
+Blockly.Msg.CocoRobo_INIT_CHART_EMPTY_TITLE = "初始化图表列标题";
+Blockly.Msg.CocoRobo_INIT_CHART_INPUT_WITH = "初始化图表列标题";
+Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TITLE = "标题";
+Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TOOLTIP = "";
+Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TITLE_ADD = "数据列标题";
+Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TOOLTIP = "";
+
+
+/* MICROBIT */
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_X_MESSAGE0 = '加速度计 X 轴';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_X_TOOLTIP = '获取加速度传感器 X 轴参数。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_X_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_x';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Y_MESSAGE0 = '加速度计 Y 轴';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Y_TOOLTIP = '获取加速度传感器 Y 轴参数。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Y_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_y';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Z_MESSAGE0 = '加速度计 Z 轴';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Z_TOOLTIP = '获取加速度传感器 Z 轴参数。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Z_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_z';
+Blockly.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_MESSAGE0 = '发生过手势 %1';
+Blockly.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_TOOLTIP = '通过返回 “真” 或者 “假” 提示自从上次检查后是否发生过指定的手势。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.was_gesture';
+Blockly.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_MESSAGE0 = '发生手势 %1';
+Blockly.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_TOOLTIP = '通过返回 “真” 或者 “假” 表示自从现在发生指定的手势。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.is_gesture';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_MESSAGE0 = '获取手势';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_TOOLTIP = '返回发生过的手势,同时清除以前的手势。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_gestures';
+Blockly.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_MESSAGE0 = '当前手势';
+Blockly.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_TOOLTIP = '返回当前手势名称。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.current_gesture';
+Blockly.Msg.MICROBIT_BUTTON_IS_PRESSED_MESSAGE0 = '按键 %1 已经按下';
+Blockly.Msg.MICROBIT_BUTTON_IS_PRESSED_TOOLTIP = '如果指定按键按下返回 “真”,否则返回 “假”。';
+Blockly.Msg.MICROBIT_BUTTON_IS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed';
+Blockly.Msg.MICROBIT_BUTTON_WAS_PRESSED_MESSAGE0 = '按键 %1 曾经按下';
+Blockly.Msg.MICROBIT_BUTTON_WAS_PRESSED_TOOLTIP = '如果按键曾经按下过返回 “真”,否则返回 “假”。';
+Blockly.Msg.MICROBIT_BUTTON_WAS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed';
+Blockly.Msg.MICROBIT_BUTTON_GET_PRESSES_MESSAGE0 = '按键 %1 按下过的次数';
+Blockly.Msg.MICROBIT_BUTTON_GET_PRESSES_TOOLTIP = '返回按键按下的总次数,然后清除计数。';
+Blockly.Msg.MICROBIT_BUTTON_GET_PRESSES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses';
+Blockly.Msg.MICROBIT_COMPASS_CALIBRATE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.calibrate';
+Blockly.Msg.MICROBIT_COMPASS_CALIBRATE_MESSAGE0 = '校正指南针';
+Blockly.Msg.MICROBIT_COMPASS_CALIBRATE_TOOLTIP = '开始校正指南针,提高精度。';
+Blockly.Msg.MICROBIT_COMPASS_IS_CALIBRATED_MESSAGE0 = '指南针已经校正';
+Blockly.Msg.MICROBIT_COMPASS_IS_CALIBRATED_TOOLTIP = '如果指南针已经校正返回 “真”,否则返回 “假”。';
+Blockly.Msg.MICROBIT_COMPASS_IS_CALIBRATED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.is_calibrated';
+Blockly.Msg.MICROBIT_COMPASS_HEADING_MESSAGE0 = '指南针方向';
+Blockly.Msg.MICROBIT_COMPASS_HEADING_TOOLTIP = '返回指南针的数值,0 - 360 度,顺时针方向,正北方是 0。';
+Blockly.Msg.MICROBIT_COMPASS_HEADING_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.heading';
+Blockly.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_MESSAGE0 = '指南针磁场强度';
+Blockly.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_TOOLTIP = '返回设备周围磁场的强度。';
+Blockly.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_field_strength';
+Blockly.Msg.MICROBIT_COMPASS_X_MESSAGE0 = '磁力 X轴';
+Blockly.Msg.MICROBIT_COMPASS_X_TOOLTIP = '返回X轴方向的磁力数值。';
+Blockly.Msg.MICROBIT_COMPASS_X_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_x';
+Blockly.Msg.MICROBIT_COMPASS_Y_MESSAGE0 = '磁力 Y轴';
+Blockly.Msg.MICROBIT_COMPASS_Y_TOOLTIP = '返回Y轴方向的磁力数值。';
+Blockly.Msg.MICROBIT_COMPASS_Y_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_y';
+Blockly.Msg.MICROBIT_COMPASS_Z_MESSAGE0 = '磁力 Z轴';
+Blockly.Msg.MICROBIT_COMPASS_Z_TOOLTIP = '返回Z轴方向的磁力数值。';
+Blockly.Msg.MICROBIT_COMPASS_Z_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_z';
+Blockly.Msg.MICROBIT_DISPLAY_GET_PIXEL_MESSAGE0 = '获取第 %1 列 %2 行 位置的亮度';
+Blockly.Msg.MICROBIT_DISPLAY_GET_PIXEL_TOOLTIP = '获取第 X 列和 Y 行位置 LED 的亮度。 0 (不亮),  9 (最亮)。';
+Blockly.Msg.MICROBIT_DISPLAY_GET_PIXEL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.get_pixel';
+Blockly.Msg.MICROBIT_DISPLAY_SET_PIXEL_MESSAGE0 = '设第 %1 列 %2 行 LED 的亮度到 %3';
+Blockly.Msg.MICROBIT_DISPLAY_SET_PIXEL_TOOLTIP = '设置第 X 列 Y 行处 LED 的亮度。0 (不亮),9 (最亮)。';
+Blockly.Msg.MICROBIT_DISPLAY_SET_PIXEL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.set_pixel';
+Blockly.Msg.MICROBIT_DISPLAY_CLEAR_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.clear';
+Blockly.Msg.MICROBIT_DISPLAY_CLEAR_MESSAGE0 = '清除显示内容';
+Blockly.Msg.MICROBIT_DISPLAY_CLEAR_TOOLTIP = '清除全部显示的内容 - 设置所有 LED 亮度为 0 (不亮)。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_MESSAGE0 = '显示图像/文本 %1';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_TOOLTIP = '显示图像或文本消息。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_MESSAGE0 = '以亮度 ( %1 / %2 ) 显示图像 %3';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_TOOLTIP = '以指定亮度显示图像。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_MESSAGE0 = '动画显示图像 %1 延时 %2 毫秒。%3 等待 %4 %5 循环 %6 %7 清除 %8';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_TOOLTIP = '动画方式显示图像列表,每两个图像之间延时一段时间。还可以设置等待模式、循环模式以及完成后清除屏幕。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_MESSAGE0 = '滚动消息 %1';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_TOOLTIP = '滚动方式显示文字。';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_MESSAGE0 = '滚动消息 %1 延时 %2 毫秒。%3 等待 %4 %5 循环 %6 %7 等宽字体 %8';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_TOOLTIP = '滚动方式显示文字。还可以设置等待模式、循环模式以及字体等宽。';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll';
+Blockly.Msg.MICROBIT_DISPLAY_ON_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.on';
+Blockly.Msg.MICROBIT_DISPLAY_ON_MESSAGE0 = '打开屏幕';
+Blockly.Msg.MICROBIT_DISPLAY_ON_TOOLTIP = '打开屏幕显示。';
+Blockly.Msg.MICROBIT_DISPLAY_OFF_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.off';
+Blockly.Msg.MICROBIT_DISPLAY_OFF_MESSAGE0 = '关闭屏幕';
+Blockly.Msg.MICROBIT_DISPLAY_OFF_TOOLTIP = '关闭屏幕显示。';
+Blockly.Msg.MICROBIT_DISPLAY_IS_ON_MESSAGE0 = '显示已经打开';
+Blockly.Msg.MICROBIT_DISPLAY_IS_ON_TOOLTIP = '屏幕已经打开就返回 “真”,否则返回 “假”';
+Blockly.Msg.MICROBIT_DISPLAY_IS_ON_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.is_on';
+Blockly.Msg.MICROBIT_IMAGE_BUILTINS_MESSAGE0 = '内置图像 %1';
+Blockly.Msg.MICROBIT_IMAGE_BUILTINS_TOOLTIP = '选择一个内置的图像。';
+Blockly.Msg.MICROBIT_IMAGE_BUILTINS_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes';
+Blockly.Msg.MICROBIT_IMAGE_COPY_MESSAGE0 = '复制图像 %1';
+Blockly.Msg.MICROBIT_IMAGE_COPY_TOOLTIP = '创建参考图像副本。';
+Blockly.Msg.MICROBIT_IMAGE_COPY_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.copy';
+Blockly.Msg.MICROBIT_IMAGE_INVERT_MESSAGE0 = '反显图像 %1';
+Blockly.Msg.MICROBIT_IMAGE_INVERT_TOOLTIP = '反显图像(负片效果)。';
+Blockly.Msg.MICROBIT_IMAGE_INVERT_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.invert';
+Blockly.Msg.MICROBIT_IMAGE_CREATE_MESSAGE0 = '创建图像 %1 %2 %3 %4 %5 %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';
+Blockly.Msg.MICROBIT_IMAGE_CREATE_TOOLTIP = '创建新图像。';
+Blockly.Msg.MICROBIT_IMAGE_CREATE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_MESSAGE0 = '创建图像 %1 第一行%2第二行%3第三行%4第四行%5第五行%6';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_TOOLTIP = '创建新图像。';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_HELPURL = '';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_MESSAGE0 = '平移图像 %1 %2 %3 位';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_TOOLTIP = '向特定方向移动图像,并返回移动后的结果。';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.shift_left';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_LEFT = '左移';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_RIGHT = '右移';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_UP = '上移';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_DOWN = '下移';
+Blockly.Msg.MICROBIT_MICROBIT_PANIC_MESSAGE0 = '错误状态码 %1';
+Blockly.Msg.MICROBIT_MICROBIT_PANIC_TOOLTIP = '进入错误模式,提示程序存在错误。需要重新启动。用一个数字表示状态码。';
+Blockly.Msg.MICROBIT_MICROBIT_PANIC_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.panic';
+Blockly.Msg.MICROBIT_MICROBIT_RESET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.reset';
+Blockly.Msg.MICROBIT_MICROBIT_RESET_MESSAGE0 = '复位 micro:bit';
+Blockly.Msg.MICROBIT_MICROBIT_RESET_TOOLTIP = '复位 micro:bit,重新运行';
+Blockly.Msg.MICROBIT_MICROBIT_SLEEP_MESSAGE0 = '等待 %1 %2';
+Blockly.Msg.CocoRobo_MS = '毫秒';
+Blockly.Msg.CocoRobo_US = '微秒';
+
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_HELPURL = '';
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_MESSAGE0 = '返回运行时间差 开始时间 %1 结束时间 %2';
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_TOOLTIP = '测量连续调用ticks_ms()、ticks_us()间的周期';
+
+Blockly.Msg.CocoRobo_TYPE_HELPURL = '';
+Blockly.Msg.CocoRobo_TYPE_MESSAGE0 = '值 %1 的类型';
+Blockly.Msg.CocoRobo_TYPE_TOOLTIP = '返回当前值的类型';
+
+Blockly.Msg.CocoRobo_TYPE_IS_HELPURL = '';
+Blockly.Msg.CocoRobo_TYPE_IS_MESSAGE0 = '值 %1 的类型为 %2';
+Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP = '设置当前值的类型为%2,并返回结果';
+
+Blockly.Msg.CocoRobo_EVAL_HELPURL = '';
+Blockly.Msg.CocoRobo_EVAL_MESSAGE0 = '计算表达式 %1 的结果';
+Blockly.Msg.CocoRobo_EVAL_TOOLTIP = '计算字符串表达式,并返回结果';
+
+Blockly.Msg.CocoRobo_RETURN_HELPURL = '';
+Blockly.Msg.CocoRobo_RETURN_MESSAGE0 = '返回 %1';
+Blockly.Msg.CocoRobo_RETURN_TOOLTIP = '返回一个值';
+
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_MESSAGE0 = 'I2C数字光线';
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_HELPURL = '';
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_MESSAGE0 = 'WI-FI配置信息';
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_TOOLTIP = '以元组形式返回所有wifi配置信息';
+
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_MESSAGE0 = '已连接到 WI-FI';
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_MESSAGE0 ='Wi-Fi连接 语音助手 Wi-Fi 名称 %1 密码 %2';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_TOOLTIP = '教科板通过串口把WIF传给语音助手';
+
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_TOOLTIP = '需要先在文件系统将文件上传到板。';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_MESSAGE0 = '读取 语音助手 文本文件 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_MESSAGE0 = '数码管显示 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_TOOLTIP = '-999~9999';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_MESSAGE0 = '清空数码管';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MACHINE_RESET_HELPURL = '';
+Blockly.Msg.CocoRobo_MACHINE_RESET_MESSAGE0 = '复位';
+Blockly.Msg.CocoRobo_MACHINE_RESET_TOOLTIP = '与按下外部 RESET按键效果一样';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_MESSAGE0 = 'I2C RGB 颜色 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_MESSAGE0 = 'I2C RGB 颜色';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_TOOLTIP = '以列表形式返回';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_MESSAGE0 = 'I2C HSV 颜色 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_TOOLTIP = '色调(H),饱和度(S),明度(V)';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_MESSAGE0 = 'I2C HSV 颜色';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_TOOLTIP = '色调(H),饱和度(S),明度(V)';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_MESSAGE0 = 'I2C力传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_MESSAGE0 = 'I2C电流传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_MESSAGE0 = 'I2C电压传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_MESSAGE0 = 'I2C磁场传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_MESSAGE0 = 'I2C PH传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_MESSAGE0 = 'I2C电导率传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_MESSAGE0 = 'I2C气压传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_MESSAGE0 = 'I2C光电门传感器  拨码 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_TOOLTIP = 'I2C地址与编码开关的需要对应';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_MESSAGE0 = '扩展板 电机速度 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_HELPURL = '';
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_MESSAGE0 = '扩展板 关灯 %1';
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_M1M2_LED_ON_HELPURL = '';
+Blockly.Msg.CocoRobo_M1M2_LED_ON_MESSAGE0 = '扩展板 设灯 %1 亮度 %2';
+Blockly.Msg.CocoRobo_M1M2_LED_ON_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6 = '默认';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_HELPURL = '';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_TOOLTIP = "";
+
+Blockly.Msg.MICROBIT_MICROBIT_SLEEP_TOOLTIP = '在进行下一个命令前,等待设定的时间。\n1秒(s) = 1,000毫秒(ms)\n1秒(s) = 1,000,000微秒(μs)\n毫秒,符号ms(millisecond)\n微秒,符号μs(microsecond)';
+Blockly.Msg.MICROBIT_MICROBIT_SLEEP_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.sleep';
+Blockly.Msg.MICROBIT_MICROBIT_RUNNING_TIME_MESSAGE0 = '运行时间';
+Blockly.Msg.MICROBIT_MICROBIT_RUNNING_TIME_TOOLTIP = '获取开机或复位后的运行时间(毫秒)。';
+Blockly.Msg.MICROBIT_MICROBIT_RUNNING_TIME_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.running_time';
+Blockly.Msg.MICROBIT_MICROBIT_TEMPERATURE_MESSAGE0 = '温度';
+Blockly.Msg.MICROBIT_MICROBIT_TEMPERATURE_TOOLTIP = '获取 micro:bit 的温度(℃)。';
+Blockly.Msg.MICROBIT_MICROBIT_TEMPERATURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.temperature';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_MESSAGE0 = '播放音乐 %1 等待 %2 循环 %3 引脚 %4';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_TOOLTIP = '播放内置的音乐,可以设置等待模式和循环播放。';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_MESSAGE0 = '播放音调 %1 %2 延时  %3 毫秒 引脚 %4';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_TOOLTIP = '在设定的时间长度里播放音调。';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.pitch';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_MESSAGE0 = '引脚 %5 播放音符列表 %1 等待 %2 %3 循环 %4';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_TOOLTIP = '播放音符列表,如C4:4、G4:8等,音符为字符串形式。默认是教科板的P6引脚';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buzz.html';
+Blockly.Msg.MICROBIT_MUSIC_RESET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.reset';
+Blockly.Msg.MICROBIT_MUSIC_RESET_MESSAGE0 = '恢复音乐设置';
+Blockly.Msg.MICROBIT_MUSIC_RESET_TOOLTIP = '将所有音乐设置 (当前节拍, 音阶和周期) 恢复成默认值。';
+Blockly.Msg.MICROBIT_MUSIC_STOP_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.stop';
+Blockly.Msg.MICROBIT_MUSIC_STOP_MESSAGE0 = '停止播放音乐 引脚 %1';
+Blockly.Msg.MICROBIT_MUSIC_STOP_TOOLTIP = '默认是教科板的P6引脚';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_MESSAGE0 = '设置每一拍等同 %1 分音符,每分钟节拍数 %2';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_TOOLTIP = '设置回放速度 (节拍)。一定数量的滴答代表一拍,每拍每分钟播放次数 (BPM 每分钟节拍)。';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_MESSAGE0 = '设置播放速度为 %1 倍';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_TOOLTIP = '4分音符为1拍,每分钟节拍数默认120,为1倍的播放速度';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_MESSAGE0 = '获取当前节拍';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_TOOLTIP = '获取当前节拍: 每节拍滴答数, 每分钟节拍 (BPM)。';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.get_tempo';
+Blockly.Msg.MICROBIT_NEOPIXEL_INITIALISE_MESSAGE0 = '使用 引脚 %1 控制, neopixel 彩灯数  %2 ';
+Blockly.Msg.MICROBIT_NEOPIXEL_INITIALISE_TOOLTIP = '控制 neopixels 彩灯。需要设定 neopixels 彩灯数量和控制脚。';
+Blockly.Msg.MICROBIT_NEOPIXEL_INITIALISE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel';
+Blockly.Msg.MICROBIT_NEOPIXEL_CLEAR_MESSAGE0 = '清除 neopixels 彩灯 %1';
+Blockly.Msg.MICROBIT_NEOPIXEL_CLEAR_TOOLTIP = '清除所有 neopixels 彩灯';
+Blockly.Msg.MICROBIT_NEOPIXEL_CLEAR_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear';
+Blockly.Msg.MICROBIT_NEOPIXEL_SHOW_MESSAGE0 = '显示 neopixels 彩灯 %1';
+Blockly.Msg.MICROBIT_NEOPIXEL_SHOW_TOOLTIP = '显示 / 更新全部 neopixels 彩灯。';
+Blockly.Msg.MICROBIT_NEOPIXEL_SHOW_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show';
+Blockly.Msg.MICROBIT_NEOPIXEL_SET_MESSAGE0 = 'neopixels 彩灯控制 %1 设置位置 %2 红色 %3 绿色 %4 蓝色 %5';
+Blockly.Msg.MICROBIT_NEOPIXEL_SET_TOOLTIP = '更新指定的 neopixel 彩灯的红、绿、蓝 (RGB) 颜色';
+Blockly.Msg.MICROBIT_NEOPIXEL_SET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels';
+Blockly.Msg.MICROBIT_PIN_TOUCHED_MESSAGE0 = '引脚 %1 被触摸';
+Blockly.Msg.MICROBIT_PIN_TOUCHED_TOOLTIP = '如果引脚被触摸将返回 “真”。';
+Blockly.Msg.MICROBIT_PIN_TOUCHED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.is_touched';
+Blockly.Msg.MICROBIT_PIN_WAS_PRESSED_MESSAGE0 = '引脚 %1 曾经被触摸';
+Blockly.Msg.MICROBIT_PIN_WAS_PRESSED_TOOLTIP = '如果引脚曾经被触摸将返回 “真”。';
+Blockly.Msg.MICROBIT_PIN_WAS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.was_pressed';
+Blockly.Msg.MICROBIT_PIN_GET_PRESSES_MESSAGE0 = '引脚 %1 被触摸的次数';
+Blockly.Msg.MICROBIT_PIN_GET_PRESSES_TOOLTIP = '返回被触摸的次数,然后清零。';
+Blockly.Msg.MICROBIT_PIN_GET_PRESSES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.get_presses';
+Blockly.Msg.MICROBIT_PIN_READ_ANALOG_MESSAGE0 = '读取引脚 %1 模拟电压';
+Blockly.Msg.MICROBIT_PIN_READ_ANALOG_TOOLTIP = '读取引脚的模拟输入电压。';
+Blockly.Msg.MICROBIT_PIN_READ_ANALOG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.read_analog';
+Blockly.Msg.MICROBIT_PIN_WRITE_ANALOG_MESSAGE0 = '设置模拟量 %1 到引脚 %2';
+Blockly.Msg.MICROBIT_PIN_WRITE_ANALOG_TOOLTIP = '写入模拟参数到指定引脚上。';
+Blockly.Msg.MICROBIT_PIN_WRITE_ANALOG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.write_analog';
+Blockly.Msg.MICROBIT_PIN_READ_DIGITAL_MESSAGE0 = '读取引脚 %1 的数字输入';
+Blockly.Msg.MICROBIT_PIN_READ_DIGITAL_TOOLTIP = '读取引脚的数字输入 (真 或 假)。';
+Blockly.Msg.MICROBIT_PIN_READ_DIGITAL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.read_digital';
+Blockly.Msg.MICROBIT_PIN_WRITE_DIGITAL_MESSAGE0 = '设置数字输出 %1 到引脚 %2';
+Blockly.Msg.MICROBIT_PIN_WRITE_DIGITAL_TOOLTIP = '写入数字量 (真 或 假) 到指定引脚。';
+Blockly.Msg.MICROBIT_PIN_WRITE_DIGITAL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.write_digital';
+Blockly.Msg.MICROBIT_RADIO_ON_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.on';
+Blockly.Msg.MICROBIT_RADIO_ON_MESSAGE0 = '打开无线广播';
+Blockly.Msg.MICROBIT_RADIO_ON_TOOLTIP = '打开无线广播。需要明确声明调用,因为它会消耗更多功率和占用更多内存。';
+Blockly.Msg.MICROBIT_RADIO_OFF_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.off';
+Blockly.Msg.MICROBIT_RADIO_OFF_MESSAGE0 = '关闭无线广播';
+Blockly.Msg.MICROBIT_RADIO_OFF_TOOLTIP = '关闭无线广播,节省功耗和内存。';
+Blockly.Msg.MICROBIT_RADIO_CONFIG_MESSAGE0 = '配置无线广播消息长度 %1 %2 最大队列数量 %3 %4 信道 %5 %6 广播功率 %7 %8 地址 %9 %10 组 %11 %12 数据速率 %13';
+Blockly.Msg.MICROBIT_RADIO_CONFIG_TOOLTIP = '配置无线广播。\n 长度指单个消息的最大长度; \n 队列指可以存放在消息队列中消息的数量; \n 信道指无线广播使用的无线频率; \n 功率指发射广播信号的强度; \n 地址:32位值; \n 组:8位值(0-255); \n 数据速率指数据传输的速度。';
+Blockly.Msg.MICROBIT_RADIO_CONFIG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.config';
+Blockly.Msg.MICROBIT_RADIO_RESET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.reset';
+Blockly.Msg.MICROBIT_RADIO_RESET_MESSAGE0 = '复位无线广播';
+Blockly.Msg.MICROBIT_RADIO_RESET_TOOLTIP = '恢复无线广播到默认设置。';
+Blockly.Msg.MICROBIT_RADIO_SEND_STRING_MESSAGE0 = '发送消息 %1';
+Blockly.Msg.MICROBIT_RADIO_SEND_STRING_TOOLTIP = '广播文字消息。';
+Blockly.Msg.MICROBIT_RADIO_SEND_STRING_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send';
+Blockly.Msg.MICROBIT_RADIO_SEND_BYTES_MESSAGE0 = '发送字节 %1';
+Blockly.Msg.MICROBIT_RADIO_SEND_BYTES_TOOLTIP = '广播字节。';
+Blockly.Msg.MICROBIT_RADIO_SEND_BYTES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_MESSAGE0 = '接收消息';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_TOOLTIP = '接收消息。';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_BYTES_MESSAGE0 = '接收字节';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_BYTES_TOOLTIP = '接收字节。';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_BYTES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive';
+Blockly.Msg.MICROBIT_SPEECH_SAY_MESSAGE0 = '说 %1';
+Blockly.Msg.MICROBIT_SPEECH_SAY_TOOLTIP = '尝试说英语';
+Blockly.Msg.MICROBIT_SPEECH_SAY_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/speech.html#speech.say';
+Blockly.Msg.MICROBIT_SPEECH_PRONOUNCE_MESSAGE0 = '读 %1';
+Blockly.Msg.MICROBIT_SPEECH_PRONOUNCE_TOOLTIP = '精确发音。';
+Blockly.Msg.MICROBIT_SPEECH_PRONOUNCE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/speech.html#phonemes';
+Blockly.Msg.MICROBIT_SPEECH_SING_MESSAGE0 = '唱 %1';
+Blockly.Msg.MICROBIT_SPEECH_SING_TOOLTIP = '象机器人一样唱歌。';
+Blockly.Msg.MICROBIT_SPEECH_SING_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/speech.html#singing';
+
+//MENUS
+Blockly.Msg.MICROBIT_GESTURE_SHAKE = '摇晃';
+Blockly.Msg.MICROBIT_GESTURE_UP = '上';
+Blockly.Msg.MICROBIT_GESTURE_DOWN = '下';
+Blockly.Msg.MICROBIT_GESTURE_LEFT = '左';
+Blockly.Msg.MICROBIT_GESTURE_RIGHT = '右';
+Blockly.Msg.MICROBIT_GESTURE_FACE_UP = '朝上';
+Blockly.Msg.MICROBIT_GESTURE_FACE_DOWN = '朝下';
+Blockly.Msg.MICROBIT_GESTURE_FREEFAIL = '自由下落';
+Blockly.Msg.MICROBIT_IMAGE_HEART = '心形';
+Blockly.Msg.MICROBIT_IMAGE_HEART_SMALL = '心(小)';
+Blockly.Msg.MICROBIT_IMAGE_HAPPY = '高兴';
+Blockly.Msg.MICROBIT_IMAGE_SMILE = '笑脸';
+Blockly.Msg.MICROBIT_IMAGE_SAD = '伤心';
+Blockly.Msg.MICROBIT_IMAGE_CONFUSED = '困惑';
+Blockly.Msg.MICROBIT_IMAGE_ANGRY = '生气';
+Blockly.Msg.MICROBIT_IMAGE_ASLEEP = '睡着';
+Blockly.Msg.MICROBIT_IMAGE_SUPRISED = '惊讶';
+Blockly.Msg.MICROBIT_IMAGE_SILLY = '愚蠢';
+Blockly.Msg.MICROBIT_IMAGE_FABULOUS = '极妙';
+Blockly.Msg.MICROBIT_IMAGE_MEH = '无聊';
+Blockly.Msg.MICROBIT_IMAGE_YES = '是';
+Blockly.Msg.MICROBIT_IMAGE_NO = '否';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK12 = '12点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK11 = '11点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK10 = '10点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK9 = '9点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK8 = '8点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK7 = '7点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK6 = '6点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK5 = '5点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK4 = '4点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK3 = '3点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK2 = '2点';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK1 = '1点';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_N = '箭头-北';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_NE = '箭头-东北';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_E = '箭头-东';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_SE = '箭头-东南';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_S = '箭头-南';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_SW = '箭头-西南';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_W = '箭头-西';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_NW = '箭头-西北';
+Blockly.Msg.MICROBIT_IMAGE_TRIANGLE = '三角形';
+Blockly.Msg.MICROBIT_IMAGE_TRIANGLE_LEFT = '左三角形';
+Blockly.Msg.MICROBIT_IMAGE_CHESSBOARD = '棋盘';
+Blockly.Msg.MICROBIT_IMAGE_DIAMOND = '菱形';
+Blockly.Msg.MICROBIT_IMAGE_DIAMOND_SMALL = '菱形(小)';
+Blockly.Msg.MICROBIT_IMAGE_SQUARE = '方形';
+Blockly.Msg.MICROBIT_IMAGE_SQUARE_SMALL = '方形(小)';
+Blockly.Msg.MICROBIT_IMAGE_RABBIT = '兔子';
+Blockly.Msg.MICROBIT_IMAGE_COW = '牛';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_CROTCHET = '四分音符';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVER = '八分音符';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVERS = '颤音';
+Blockly.Msg.MICROBIT_IMAGE_PITCHFORK = '叉子';
+Blockly.Msg.MICROBIT_IMAGE_XMAS = '圣诞树';
+Blockly.Msg.MICROBIT_IMAGE_PACMAN = '吃豆人';
+Blockly.Msg.MICROBIT_IMAGE_TARGET = '目标';
+Blockly.Msg.MICROBIT_IMAGE_TSHIRT = 'T恤衫';
+Blockly.Msg.MICROBIT_IMAGE_ROLLERSKATE = '轮滑';
+Blockly.Msg.MICROBIT_IMAGE_DUCK = '鸭子';
+Blockly.Msg.MICROBIT_IMAGE_HOUSE = '房子';
+Blockly.Msg.MICROBIT_IMAGE_TORTOISE = '乌龟';
+Blockly.Msg.MICROBIT_IMAGE_BUTTERFLY = '蝴蝶';
+Blockly.Msg.MICROBIT_IMAGE_STICKFIGURE = '线条画';
+Blockly.Msg.MICROBIT_IMAGE_GHOST = '幽灵';
+Blockly.Msg.MICROBIT_IMAGE_SWORD = '宝剑';
+Blockly.Msg.MICROBIT_IMAGE_GIRAFFE = '长颈鹿';
+Blockly.Msg.MICROBIT_IMAGE_SKULL = '头';
+Blockly.Msg.MICROBIT_IMAGE_UMBRELLA = '伞';
+Blockly.Msg.MICROBIT_IMAGE_SNAKE = '蛇';
+Blockly.Msg.MICROBIT_IMAGE_ALL_CLOCKS = '所有时钟';
+Blockly.Msg.MICROBIT_IMAGE_ALL_ARROWS = '所有箭头';
+Blockly.Msg.MICROBIT_PIN_SET_SERVO_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA';
+Blockly.Msg.MICROBIT_PIN_SET_SERVO_TOOLTIP = '设置舵机角度,范围为 0 ~ 180度';
+Blockly.Msg.MICROBIT_PIN_SET_SERVO_MESSAGE0 = '设置舵机 引脚 %1 角度为 %2';
+Blockly.Msg.MICROBIT_PIN_SET_MODE_HELPURL = '';
+Blockly.Msg.MICROBIT_PIN_SET_MODE_TOOLTIP = '引脚模式有三种:悬空、上拉、下拉';
+Blockly.Msg.MICROBIT_PIN_SET_MODE_MESSAGE0 = '设置引脚 %1 模式为 %2';
+Blockly.Msg.MICROBIT_PIN_MODE_NO = '悬空';
+Blockly.Msg.MICROBIT_PIN_MODE_UP = '上拉';
+Blockly.Msg.MICROBIT_PIN_MODE_DOWN = '下拉';
+
+
+//uart
+Blockly.Msg.MICROBIT_UART_INIT_MESSAGE0 = '初始化串口波特率为 %3 TX为 %1 RX为 %2';
+Blockly.Msg.MICROBIT_UART_INIT_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_INIT_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_MESSAGE0 = '串口接收到数据';
+Blockly.Msg.MICROBIT_UART_READ_MSG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_READ_MSG_MESSAGE0 = '读取串口 %1 字节';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TO_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TO_MESSAGE0 = '读取串口 %1 字节存至 %2';
+Blockly.Msg.MICROBIT_UART_WRITE_MSG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_WRITE_MSG_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_WRITE_MSG_MESSAGE0 = '串口发送数据 %1';
+Blockly.Msg.MICROBIT_ALL_BYTES = "全部";
+Blockly.Msg.MICROBIT_ALINE_BYTES = "一行";
+//labplus
+Blockly.Msg.LABPLUS_BUTTON_IS_PRESSED_MESSAGE0 = '引脚 %1 被触发';
+Blockly.Msg.LABPLUS_BUTTON_IS_PRESSED_TOOLTIP = '如果指定按键按下返回 “真”,否则返回 “假”。';
+Blockly.Msg.LABPLUS_BUTTON_IS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed';
+
+Blockly.Msg.LABPLUS_BUTTON_WAS_PRESSED_MESSAGE0 = '引脚 %1 曾经被触发';
+Blockly.Msg.LABPLUS_BUTTON_WAS_PRESSED_TOOLTIP = '如果按键曾经按下过返回 “真”,否则返回 “假”。';
+Blockly.Msg.LABPLUS_BUTTON_WAS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed';
+
+Blockly.Msg.LABPLUS_BUTTON_GET_PRESSES_MESSAGE0 = '引脚 %1 被触发过的次数';
+Blockly.Msg.LABPLUS_BUTTON_GET_PRESSES_TOOLTIP = '返回按键按下的总次数,然后清除计数。';
+Blockly.Msg.LABPLUS_BUTTON_GET_PRESSES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses';
+
+Blockly.Msg.LABPLUS_LED_MESSAGE0 = '设置LED灯 引脚 %2 输出 %1';
+Blockly.Msg.LABPLUS_LED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LED_HELPURL = 'http://wiki.labplus.cn/index.php?title=LED';
+
+Blockly.Msg.LABPLUS_INFRARED_IS_TRIGGERED_MESSAGE0 = '红外探测 引脚 %1 被触发';
+Blockly.Msg.LABPLUS_INFRARED_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_INFRARED_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%BA%A2%E5%A4%96%E6%8E%A2%E6%B5%8B';
+
+Blockly.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_MESSAGE0 = '热敏传感器 引脚 %1 的值';
+Blockly.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%83%AD%E6%95%8F%E7%94%B5%E9%98%BB';
+
+Blockly.Msg.LABPLUS_I2C_LIGHT_SENSOR_MESSAGE0 = 'I2C数字光线传感器的值(lux)';
+Blockly.Msg.LABPLUS_I2C_LIGHT_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_I2C_LIGHT_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%95%B0%E5%AD%97%E5%85%89%E7%BA%BF';
+
+Blockly.Msg.LABPLUS_WATER_LEVEL_DETECTOR_MESSAGE0 = '水位传感器 引脚 %1 的值';
+Blockly.Msg.LABPLUS_WATER_LEVEL_DETECTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_WATER_LEVEL_DETECTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%B0%B4%E4%BD%8D';
+
+Blockly.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_MESSAGE0 = '烟雾探测器 引脚 %1 被触发';
+Blockly.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE';
+
+Blockly.Msg.LABPLUS_BUZZER_FOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_BUZZER_FOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUZZER_FOR_MESSAGE0 = '以频率 %1 激活蜂鸣器 引脚0 %2 毫秒';
+
+Blockly.Msg.LABPLUS_BUZZER_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_BUZZER_ON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUZZER_ON_MESSAGE0 = '以频率 %1 激活蜂鸣器 引脚0';
+
+Blockly.Msg.LABPLUS_BUZZER_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_BUZZER_OFF_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUZZER_OFF_MESSAGE0 = '关闭蜂鸣器 引脚0';
+
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_MESSAGE0 = 'I2C温湿度传感器的 %1 值';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%B8%A9%E6%B9%BF%E5%BA%A6';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_TM = '温度';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_HM = '湿度';
+
+Blockly.Msg.LABPLUS_SET_SERVO_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA';
+Blockly.Msg.LABPLUS_SET_SERVO_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_SERVO_MESSAGE0 = '设置舵机 引脚 %1 角度为 %2';
+
+Blockly.Msg.LABPLUS_FINGERPRINT_SENSOR_MESSAGE0 = '指纹传感器 引脚 %1 验证通过';
+Blockly.Msg.LABPLUS_FINGERPRINT_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_FINGERPRINT_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%8C%87%E7%BA%B9';
+
+Blockly.Msg.LABPLUS_SET_MOTOR_HELPURL = '';
+Blockly.Msg.LABPLUS_SET_MOTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_MOTOR_MESSAGE0 = '设置电机 %1 方向 %2 速度 %3';
+Blockly.Msg.LABPLUS_SET_MOTOR_CLOCKWISE = '正转';
+Blockly.Msg.LABPLUS_SET_MOTOR_ANTI_CLOCKWISE = '反转';
+
+Blockly.Msg.LABPLUS_STOP_MOTOR_HELPURL = '';
+Blockly.Msg.LABPLUS_STOP_MOTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_STOP_MOTOR_MESSAGE0 = '停止电机';
+
+Blockly.Msg.LABPLUS_GET_RFID_ID_MESSAGE0 = '射频卡 引脚 %1 验证通过';
+Blockly.Msg.LABPLUS_GET_RFID_ID_TOOLTIP = '';
+Blockly.Msg.LABPLUS_GET_RFID_ID_HELPURL = 'http://wiki.labplus.cn/index.php?title=RFID';
+
+Blockly.Msg.LABPLUS_GET_RFID_VALUE_MESSAGE0 = '电子钱包 引脚 %1 余额';
+Blockly.Msg.LABPLUS_GET_RFID_VALUE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_GET_RFID_VALUE_HELPURL = '';
+
+Blockly.Msg.LABPLUS_SET_RFID_VALUE_MESSAGE0 = '设置电子钱包 引脚 %1 余额 %2 %3';
+Blockly.Msg.LABPLUS_SET_RFID_VALUE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_RFID_VALUE_HELPURL = '';
+Blockly.Msg.LABPLUS_SET_RFID_ADD = '增加';
+Blockly.Msg.LABPLUS_SET_RFID_MINUS = '减少';
+
+Blockly.Msg.LABPLUS_SOUND_IS_TRIGGERED_MESSAGE0 = '声音传感器 引脚 %1 被触发';
+Blockly.Msg.LABPLUS_SOUND_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SOUND_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%BA%A6%E5%85%8B%E9%A3%8E';
+
+Blockly.Msg.LABPLUS_USB_SWITCH_HELPURL = '';
+Blockly.Msg.LABPLUS_USB_SWITCH_TOOLTIP = '';
+Blockly.Msg.LABPLUS_USB_SWITCH_MESSAGE0 = '%1 USB开关 引脚 %2';
+Blockly.Msg.LABPLUS_USB_SWITCH_ON = '打开';
+Blockly.Msg.LABPLUS_USB_SWITCH_OFF = '关闭';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_HELPURL = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_MESSAGE0 = '%1 语音录放器 引脚 %2';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON = '打开';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF = '关闭';
+
+Blockly.Msg.LABPLUS_RGB_INITIALISE_MESSAGE0 = '使用 引脚 %1 控制,RGB 彩灯数  %2 ';
+Blockly.Msg.LABPLUS_RGB_INITIALISE_TOOLTIP = '控制 RGB 彩灯。需要设定 neopixels 彩灯数量和控制脚。';
+Blockly.Msg.LABPLUS_RGB_INITIALISE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel';
+Blockly.Msg.LABPLUS_RGB_CLEAR_MESSAGE0 = '清除 RGB 彩灯 %1';
+Blockly.Msg.LABPLUS_RGB_CLEAR_TOOLTIP = '清除所有 RGB 彩灯';
+Blockly.Msg.LABPLUS_RGB_CLEAR_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear';
+Blockly.Msg.LABPLUS_RGB_SHOW_MESSAGE0 = '显示 RGB 彩灯 %1';
+Blockly.Msg.LABPLUS_RGB_SHOW_TOOLTIP = '显示 / 更新全部 RGB 彩灯。';
+Blockly.Msg.LABPLUS_RGB_SHOW_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show';
+Blockly.Msg.LABPLUS_RGB_SET_MESSAGE0 = 'RGB 彩灯控制 %1 设置位置 %2 红色 %3 绿色 %4 蓝色 %5';
+Blockly.Msg.LABPLUS_RGB_SET_TOOLTIP = '更新指定的 RGB 彩灯的红、绿、蓝 (RGB) 颜色';
+Blockly.Msg.LABPLUS_RGB_SET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels';
+
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_MESSAGE0 = '设置扩展端口 IO %1 为 %2';
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_TOOLTIP = '0表示输出引脚,1表示输入引脚';
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95';
+
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_INPUT = '输入';
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_OUTPUT = '输出';
+
+Blockly.Msg.LABPLUS_READ_EXTENDED_PIN_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95';
+Blockly.Msg.LABPLUS_READ_EXTENDED_PIN_TOOLTIP = '';
+Blockly.Msg.LABPLUS_READ_EXTENDED_PIN_MESSAGE0 = '读取扩展端口值 IO %1'
+
+Blockly.Msg.LABPLUS_WRITE_EXTENDED_PIN_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95';
+Blockly.Msg.LABPLUS_WRITE_EXTENDED_PIN_TOOLTIP = '';
+Blockly.Msg.LABPLUS_WRITE_EXTENDED_PIN_MESSAGE0 = '设置扩展端口 IO %1 值为 %2';
+
+Blockly.Msg.LABPLUS_I2C_ULTRASONIC_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%B6%85%E5%A3%B0%E6%B3%A2';
+Blockly.Msg.LABPLUS_I2C_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.LABPLUS_I2C_ULTRASONIC_MESSAGE0 = 'I2C超声波传感器的值';
+
+Blockly.Msg.MICROBIT_SET_MUSIC_PIN_HELPURL = '';
+Blockly.Msg.MICROBIT_SET_MUSIC_PIN_TOOLTIP = '';
+Blockly.Msg.MICROBIT_SET_MUSIC_PIN_MESSAGE0 = '设置默认蜂鸣器引脚为 %1';
+
+Blockly.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E4%BA%BA%E4%BD%93%E6%84%9F%E5%BA%94';
+Blockly.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_MESSAGE0 = '人体感应 引脚 %1 被触发';
+
+Blockly.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%97%A8%E7%A3%81%E5%BC%80%E5%85%B3';
+Blockly.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_MESSAGE0 = '门磁开关 引脚 %1 被触发';
+
+Blockly.Msg.LABPLUS_SOUND_LEVEL_SENSOR_HELPURL = '';
+Blockly.Msg.LABPLUS_SOUND_LEVEL_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SOUND_LEVEL_SENSOR_MESSAGE0 = '声音传感器 引脚 %1 的值';
+
+Blockly.Msg.LABPLUS_SMOKE_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE';
+Blockly.Msg.LABPLUS_SMOKE_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SMOKE_SENSOR_MESSAGE0 = '烟雾传感器 引脚 %1 的值';
+
+Blockly.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E5%9C%9F%E5%A3%A4%E6%B9%BF%E5%BA%A6';
+Blockly.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_MESSAGE0 = '土壤湿度传感器 引脚 %1 的值';
+
+Blockly.Msg.LABPLUS_FAN_SWITCH_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%8E%92%E9%A3%8E%E6%89%87';
+Blockly.Msg.LABPLUS_FAN_SWITCH_TOOLTIP = '';
+Blockly.Msg.LABPLUS_FAN_SWITCH_MESSAGE0 = '%1 风扇 引脚 %2';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON_MESSAGE0 = '打开录放器 %1 引脚 %2';
+Blockly.Msg.LABPLUS_VOICE_RECORD_PLAY = '播放';
+Blockly.Msg.LABPLUS_VOICE_RECORD_REC = '录音';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF_MESSAGE0 = '关闭录放器 引脚 %1';
+
+
+Blockly.Msg.LABPLUS_MOTOR_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_ON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_ON_MESSAGE0 = '打开直流电机 %1 速度 %2 引脚 %3';
+Blockly.Msg.LABPLUS_MOTOR_ON_CLOCKWISE = '正转';
+Blockly.Msg.LABPLUS_MOTOR_ON_ANTICLOCKWISE = '反转';
+
+Blockly.Msg.LABPLUS_MOTOR_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_OFF_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_OFF_MESSAGE0 = '停止直流电机 引脚 %1';
+
+Blockly.Msg.LABPLUS_READ_COLOR_FROM_I2C_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%A2%9C%E8%89%B2';
+Blockly.Msg.LABPLUS_READ_COLOR_FROM_I2C_TOOLTIP = '';
+Blockly.Msg.LABPLUS_READ_COLOR_FROM_I2C_MESSAGE0 = 'I2C颜色传感器读取并储存颜色';
+
+Blockly.Msg.LABPLUS_RGB_COLOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=RGB_LED';
+Blockly.Msg.LABPLUS_RGB_COLOR_TOOLTIP = '读取已储存的颜色';
+Blockly.Msg.LABPLUS_RGB_COLOR_MESSAGE0 = 'RGB颜色 %1';
+
+Blockly.Msg.LABPLUS_SET_I2C_DIGITS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1';
+Blockly.Msg.LABPLUS_SET_I2C_DIGITS_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_DIGITS_MESSAGE0 = '设置I2C数码管的值为 %1';
+
+Blockly.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1';
+Blockly.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_TOOLTIP = '';
+Blockly.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_MESSAGE0 = '关闭I2C数码管';
+
+Blockly.Msg.LABPLUS_UART_SET_MIDI_MELODIC_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_MELODIC_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_MELODIC_MESSAGE0 = '设置MIDI模块音调为 %1';
+
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_MESSAGE0 = 'MIDI模块 %2 音符 %1';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Do = 'Do';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Re = 'Re';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Mi = 'Mi';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Fa = 'Fa';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Sol = 'Sol';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_La = 'La';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Si = 'Si';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE = '播放';
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE = '停止';
+
+
+
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE_MESSAGE0 = 'MIDI模块停止播放音符 %1';
+
+Blockly.Msg.LABPLUS_UART_INIT_MIDI_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_INIT_MIDI_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_INIT_MIDI_MESSAGE0 = '初始化MIDI模块 %1';
+
+Blockly.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E5%BE%AA%E8%BF%B9';
+Blockly.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_MESSAGE0 = '循迹传感器 引脚 %1 检测为黑';
+
+Blockly.Msg.LABPLUS_TEMPERATURE_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=LM35%E6%B8%A9%E5%BA%A6';
+Blockly.Msg.LABPLUS_TEMPERATURE_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_TEMPERATURE_SENSOR_MESSAGE0 = 'LM35温度传感器 引脚 %1 的值';
+
+Blockly.Msg.LABPLUS_ROTATE_DIMMER_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%97%8B%E9%92%AE%E7%94%B5%E4%BD%8D%E5%99%A8';
+Blockly.Msg.LABPLUS_ROTATE_DIMMER_TOOLTIP = '';
+Blockly.Msg.LABPLUS_ROTATE_DIMMER_MESSAGE0 = '旋转电位器 引脚 %1 的值';
+
+Blockly.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9C%87%E5%8A%A8';
+Blockly.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_MESSAGE0 = '震动传感器 引脚 %1 被触发';
+
+Blockly.Msg.LABPLUS_LASER_SWITCH_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%BF%80%E5%85%89%E5%8F%91%E5%B0%84';
+Blockly.Msg.LABPLUS_LASER_SWITCH_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LASER_SWITCH_MESSAGE0 = '%1 激光开关 引脚 %2';
+
+Blockly.Msg.LABPLUS_4BUTTON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE';
+Blockly.Msg.LABPLUS_4BUTTON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_4BUTTON_MESSAGE0 = '四向按键模块 引脚 %1 按键 %2 被按下';
+Blockly.Msg.BLUE = 'A';
+Blockly.Msg.GREEN = 'B';
+Blockly.Msg.RED = 'C';
+Blockly.Msg.YELLOW = 'D';
+
+Blockly.Msg.LABPLUS_JOYSTICK_HELPURL = '';
+Blockly.Msg.LABPLUS_JOYSTICK_TOOLTIP = '';
+Blockly.Msg.LABPLUS_JOYSTICK_MESSAGE0 = '摇杆 引脚A0 %1 引脚A1 %2   %3 轴的值';
+
+Blockly.Msg.LABPLUS_UART_MP3_PLAY_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE';
+Blockly.Msg.LABPLUS_UART_MP3_PLAY_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_MP3_PLAY_MESSAGE0 = 'MP3模块(UART)播放第 %1 首音乐';
+
+Blockly.Msg.LABPLUS_UART_MP3_SET_VOLUME_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE';
+Blockly.Msg.LABPLUS_UART_MP3_SET_VOLUME_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_MP3_SET_VOLUME_MESSAGE0 = '设置MP3模块(UART)音量为 %1';
+
+Blockly.Msg.LABPLUS_UART_MP3_SET_STATUS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE';
+Blockly.Msg.LABPLUS_UART_MP3_SET_STATUS_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_MP3_SET_STATUS_MESSAGE0 = '设置MP3模块(UART)状态为 %1';
+Blockly.Msg.PAUSE = '暂停';
+Blockly.Msg.STOP = '停止';
+Blockly.Msg.PLAY = '继续播放';
+Blockly.Msg.PLAYNEXT = '下一首';
+Blockly.Msg.PLAYPREV = '上一首';
+
+Blockly.Msg.LABPLUS_UART_INIT_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_INIT_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_INIT_MESSAGE0 = '初始化串口波特率为 %3 TX为 %1 RX为 %2';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON1_MESSAGE0 = '打开录放器 %1 %2 引脚REC %3 引脚PLAY %4';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF1_MESSAGE0 = '关闭录放器 %1 引脚REC %2 引脚PLAY %3';
+
+Blockly.Msg.LABPLUS_MOTOR_ON1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_ON1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_ON1_MESSAGE0 = '打开直流电机 %1 速度 %2 引脚AIN1 %3 引脚AIN2 %4';
+
+Blockly.Msg.LABPLUS_MOTOR_OFF1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_OFF1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_OFF1_MESSAGE0 = '停止直流电机 %1 引脚AIN1 %2 引脚AIN2 %3';
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_MESSAGE0 = '设置LCD游标位置%1 X %2 Y %3';
+
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_MESSAGE0 = '设置LCD显示 %1';
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_TOOLTIP = '配合循环次数使用';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_MESSAGE0 = '%1滚动LCD显示内容';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_ALEFT = '向左';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_RIGHTWARD = '向右';
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_MESSAGE0 = '清除LCD显示内容';
+
+Blockly.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_MESSAGE0 = '%1 接收到数据';
+Blockly.Msg.BLUEBIT_UART = '串口';
+Blockly.Msg.BLUEBIT_INFRARED_SIGNAL = '红外信号';
+Blockly.Msg.BLUEBIT_BLUEBOOTH = '蓝牙';
+Blockly.Msg.LABPLUS_UART_READ_MSG_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_READ_MSG_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_READ_MSG_MESSAGE0 = '读取 %1 数据';
+Blockly.Msg.LABPLUS_UART_WRITE_MSG_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_WRITE_MSG_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_WRITE_MSG_MESSAGE0 = '%1 发送数据 %2';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE0 = '设置点阵 %1 第一行显示%2 第二行显示%3 第三行显示%4 第四行显示%5 第五行显示%6 第六行显示%7 第七行显示%8 第八行显示%9 ';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE2 = '设置点阵 %1 %2 %3 %4 %5 %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 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_MESSAGE0 = '清空点阵';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_HELPURL = 'http://wiki.labplus.cn/index.php?title=LCD';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_MESSAGE0 = '设置OLCD屏 %1 X %2 Y %3 显示文本 %4 字体为 %5';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_HELPURL = 'http://wiki.labplus.cn/index.php?title=LCD';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_MESSAGE0 = '在OLCD屏上擦除矩阵 %1 X1 %2 Y1 %3 X2 %4 Y2 %5';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_MESSAGE0 = '清空OLCD屏';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_HELPURL = 'http://wiki.labplus.cn/index.php?title=LCD';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LIGHT_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%A8%A1%E6%8B%9F%E5%85%89%E7%BA%BF';
+Blockly.Msg.LABPLUS_LIGHT_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LIGHT_SENSOR_MESSAGE0 = '模拟光线传感器 引脚 %1 的值';
+Blockly.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_MESSAGE0 = '按键模块 引脚 %1 被按下';
+
+Blockly.Msg.MICROBIT_EXT2_SET_SERVO_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_SET_SERVO_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_SET_SERVO_MESSAGE0 = '设置舵机 %1 的角度为 %2';
+Blockly.Msg.MICROBIT_EXT2_SET_MOTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_SET_MOTOR_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_SET_MOTOR_MESSAGE0 = '设置马达 %1 方向 %2 速度 %3';
+Blockly.Msg.MICROBIT_EXT2_STOP_MOTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_STOP_MOTOR_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_STOP_MOTOR_MESSAGE0 = '停止马达 %1';
+Blockly.Msg.MICROBIT_EXT2_SOUND_VALUE_MESSAGE0 = '声音传感器的值';
+Blockly.Msg.MICROBIT_EXT2_SOUND_VALUE_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_SOUND_VALUE_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_LIGHT_VALUE_MESSAGE0 = '光线传感器的值';
+Blockly.Msg.MICROBIT_EXT2_LIGHT_VALUE_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_LIGHT_VALUE_TOOLTIP = '';
+
+Blockly.Msg.MICROBIT_INIT_I2C_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_INIT_I2C_TOOLTIP = '';
+Blockly.Msg.MICROBIT_INIT_I2C_MESSAGE0 = '初始化I2C 频率 %1 引脚SDA %2 引脚SCL %3';
+Blockly.Msg.MICROBIT_I2C_READ_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_I2C_READ_TOOLTIP = '';
+Blockly.Msg.MICROBIT_I2C_READ_MESSAGE0 = 'I2C读取从地址 %1 读取 %2 字节';
+Blockly.Msg.MICROBIT_I2C_WRITE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_I2C_WRITE_TOOLTIP = '';
+Blockly.Msg.MICROBIT_I2C_WRITE_MESSAGE0 = 'I2C写入 %2 到地址 %1';
+Blockly.Msg.MICROBIT_CONVERT_BYTEARRAY_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_CONVERT_BYTEARRAY_TOOLTIP = '';
+Blockly.Msg.MICROBIT_CONVERT_BYTEARRAY_MESSAGE0 = '转bytearray %1';
+
+Blockly.Msg.BOTBIT_MOTOR_ON_HELPURL = '';
+Blockly.Msg.BOTBIT_MOTOR_ON_TOOLTIP = '范围:-2000~2000';
+Blockly.Msg.BOTBIT_MOTOR_ON_MESSAGE0 = '设置机器人 %1 右轮速度为 %2 左轮速度为 %3';
+Blockly.Msg.BOTBIT_MOTOR_LEFT = '左';
+Blockly.Msg.BOTBIT_MOTOR_RIGHT = '右';
+Blockly.Msg.BOTBIT_SERVO_UP = '上方';
+Blockly.Msg.BOTBIT_SERVO_DOWN = '下方';
+Blockly.Msg.BOTBIT_MOTOR_FORWARD = '前进';
+Blockly.Msg.BOTBIT_MOTOR_BACKWARD = '后退';
+
+Blockly.Msg.BOTBIT_HOLDBALL_HELPURL = '';
+Blockly.Msg.BOTBIT_HOLDBALL_TOOLTIP = '';
+Blockly.Msg.BOTBIT_HOLDBALL_MESSAGE0 = '双臂抱起';
+
+Blockly.Msg.BOTBIT_STEERING_ENGINEL_HELPURL = '';
+Blockly.Msg.BOTBIT_STEERING_ENGINEL_TOOLTIP = '角度范围为-45°~45°';
+Blockly.Msg.BOTBIT_STEERING_ENGINEL_MESSAGE0 = '获取 %1臂 速度';
+Blockly.Msg.BOTBIT_STEERING_ENGINET_MESSAGE0 = '获取 %1臂 倾斜角';
+Blockly.Msg.X = 'X:';
+Blockly.Msg.Y = 'Y:';
+
+Blockly.Msg.W = '宽:';
+Blockly.Msg.H = '高:';
+Blockly.Msg.BOTBIT_SERVO_Y = 'Y轴舵机';
+Blockly.Msg.BOTBIT_SERVO_X = 'X轴舵机';
+Blockly.Msg.BOTBIT_SERVO_Z = 'Z轴舵机';
+Blockly.Msg.BOTBIT_STEERING_ENGINE_LEG_HELPURL = '';
+Blockly.Msg.BOTBIT_STEERING_ENGINE_LEG_TOOLTIP = '角度范围为-45°~45°';
+Blockly.Msg.BOTBIT_STEERING_ENGINE_LEG_MESSAGE0 = '设置 %1腿 %2舵机的角度为 %3';
+
+Blockly.Msg.BOTBIT_UPDATEPOSITION_HELPURL = '';
+Blockly.Msg.BOTBIT_UPDATEPOSITION_TOOLTIP = '';
+Blockly.Msg.BOTBIT_UPDATEPOSITION_MESSAGE0 = '刷新舵机角度';
+
+Blockly.Msg.BOTBIT_ULTRASONIC_HELPURL = '';
+Blockly.Msg.BOTBIT_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.BOTBIT_ULTRASONIC_MESSAGE0 = '超声波传感器的值';
+
+Blockly.Msg.BOTBIT_WALKING_HELPURL = '';
+Blockly.Msg.BOTBIT_WALKING_TOOLTIP = '周期越短, 速度越快, 推荐1000~2000';
+Blockly.Msg.BOTBIT_WALKING_MESSAGE0 = '舞步(walking) 步数%2 周期%3 方向%1 ';
+Blockly.Msg.BOTBIT_WALKING_FORWARD = '前';
+Blockly.Msg.BOTBIT_WALKING_BACK = '后';
+
+Blockly.Msg.BOTBIT_MOONWALKER_HELPURL = '';
+Blockly.Msg.BOTBIT_MOONWALKER_TOOLTIP = '推荐周期1000~2000, 幅度10~50';
+Blockly.Msg.BOTBIT_MOONWALKER_MESSAGE0 = '舞步(moonwalker) 步数%2 周期%3 幅度%4 方向%1 ';
+Blockly.Msg.BOTBIT_MOONWALKER_L = '左';
+Blockly.Msg.BOTBIT_MOONWALKER_R = '右';
+
+Blockly.Msg.BOTBIT_CRUSAITO_HELPURL = '';
+Blockly.Msg.BOTBIT_CRUSAITO_TOOLTIP = '推荐步数2~10, 幅度10~50';
+Blockly.Msg.BOTBIT_CRUSAITO_MESSAGE0 = '舞步(crusaito) 步数%2 周期%3 幅度%4 方向%1';
+Blockly.Msg.BOTBIT_CRUSAITO_CW = '逆时针';
+Blockly.Msg.BOTBIT_CRUSAITO_ANTICW = '顺时针';
+
+Blockly.Msg.BOTBIT_FLAPPING_HELPURL = '';
+Blockly.Msg.BOTBIT_FLAPPING_TOOLTIP = '推荐步数5~15, 幅度10~30, 周期1000~2000';
+Blockly.Msg.BOTBIT_FLAPPING_MESSAGE0 = '舞步(flapping) 步数%2 周期%3 幅度%4 方向%1';
+Blockly.Msg.BOTBIT_FLAPPING_FORWARD = '前';
+Blockly.Msg.BOTBIT_FLAPPING_BACK = '后';
+
+Blockly.Msg.BOTBIT_HOME_HELPURL = '';
+Blockly.Msg.BOTBIT_HOME_TOOLTIP = '';
+Blockly.Msg.BOTBIT_HOME_MESSAGE0 = '机器人舞步初始化';
+
+Blockly.Msg.LABPLUS_UART_SET_MIDI_VOL_HELPURL = 'http://wiki.labplus.cn/index.php?title=MIDI(%E7%94%B5%E5%AD%90%E7%90%B4)';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_VOL_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_VOL_MESSAGE0 = '设置MIDI模块音量为 %1';
+
+//映射数字范围,放在math目录里
+Blockly.Msg.labplus_mapping_MESSAGE0 = '映射%1 从%2 , %3到%4 , %5'
+Blockly.Msg.labplus_mapping_TOOLTIP = '将0~100中的10映射到0~200中并返回映射值'
+Blockly.Msg.labplus_mapping_HELPURL = ''
+
+
+Blockly.Msg.JOINT_MIDI_PIANO = "平台钢琴"; //Acoustic Grand Piano
+Blockly.Msg.JOINT_MIDI_BRIGHTACOUSTICPIANO = "亮音钢琴";
+Blockly.Msg.JOINT_MIDI_ELECTRICGRANDPIANO = "电钢琴";
+Blockly.Msg.JOINT_MIDI_HARPSICHORD = "大键琴";
+Blockly.Msg.JOINT_MIDI_Celesta = "钢片琴";
+Blockly.Msg.JOINT_MIDI_Glockenspiel = "钟琴";
+Blockly.Msg.JOINT_MIDI_Musicalbox = "音乐盒";
+Blockly.Msg.JOINT_MIDI_Marimba = "马林巴琴";
+Blockly.Msg.JOINT_MIDI_Xylophone = "木琴";
+Blockly.Msg.JOINT_MIDI_TubularBell = "管钟";
+Blockly.Msg.JOINT_MIDI_Dulcimer = "洋琴";
+Blockly.Msg.JOINT_Vibraphone = "颤音琴"; //Vibraphone
+Blockly.Msg.JOINT_MIDI_ORGAN = "音栓风琴"; //Drawbar Organ
+Blockly.Msg.JOINT_Acoustic_Guitar = "木吉他"; //Acoustic Guitar
+Blockly.Msg.JOINT_Electric_Guitar = "电吉他"; //Electric Guitar
+Blockly.Msg.JOINT_Acoustic_Bass = "民谣贝斯";  //Acoustic Bass
+Blockly.Msg.JOINT_String_Ensemble = "弦乐合奏";  //String Ensemble
+Blockly.Msg.JOINT_Violin = "小提琴";  //Violin
+Blockly.Msg.JOINT_Trumpet = "小号";  //Trumpet
+Blockly.Msg.JOINT_Sax = "萨克斯";  //Sax
+Blockly.Msg.JOINT_Steel_Drums = "钢鼓";  //Steel Drums
+Blockly.Msg.JOINT_Lead = "合成音主旋律";  //Lead
+Blockly.Msg.JOINT_Pad = "合成音衬底";  //Pad
+
+Blockly.Msg.LABPLUS_PLAY_BUZZER_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_PLAY_BUZZER_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_PLAY_BUZZER_NOTE_MESSAGE0 ='播放音调 %1';
+
+Blockly.Msg.Carbit_init_MESSAGE0 = 'CarBit初始化';
+Blockly.Msg.Carbit_init_TOOLTIP = '';
+Blockly.Msg.Carbit_init_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+
+Blockly.Msg.Carbit_setLeftMotor_MESSAGE0 = 'B2电机速度 %1';
+Blockly.Msg.Carbit_setLeftMotor_TOOLTIP = '范围:-100~100';
+Blockly.Msg.Carbit_setLeftMotor_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+
+Blockly.Msg.Carbit_setRightMotor_MESSAGE0 = 'B1电机速度 %1';
+Blockly.Msg.Carbit_setRightMotor_TOOLTIP = '范围:-100~100';
+Blockly.Msg.Carbit_setRightMotor_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+
+Blockly.Msg.Carbit_analog_light_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_analog_light_TOOLTIP = 'Q3对应Pin1,Q4对应Pin2';
+Blockly.Msg.Carbit_analog_light_MESSAGE0 = '%1 模拟光线的值';
+
+Blockly.Msg.Carbit_Speed_U10_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_Speed_U10_TOOLTIP = '对应U10';
+Blockly.Msg.Carbit_Speed_U10_MESSAGE0 = '左轮速度';
+
+Blockly.Msg.Carbit_Speed_U11_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_Speed_U11_TOOLTIP = '对应U11';
+Blockly.Msg.Carbit_Speed_U11_MESSAGE0 = '右轮速度';
+
+Blockly.Msg.Carbit_Distance_HELPURL= 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_Distance_TOOLTIP= '';
+Blockly.Msg.Carbit_Distance_MESSAGE0= '超声波的值';
+
+Blockly.Msg.Carbit_tracking_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_tracking_TOOLTIP = '';
+Blockly.Msg.Carbit_tracking_MESSAGE0 = '循迹参数 %1 直行速度 %2 最大限速 %3 转弯延时 %5 转弯速度系数 %4 ';
+/* 教科板end */
+/* Blockly.Msg.LABPLUS_OFF_BUZZER_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_OFF_BUZZER_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_OFF_BUZZER_NOTE_MESSAGE0 = '蜂鸣器%1关闭音调 %2' */
+
+
+/* Blockly.Msg.JOINT_Bass_Drum = "大鼓";  //Bass Drum
+Blockly.Msg.JOINT_Snare_Drum = "小鼓";  //Snare Drum
+Blockly.Msg.JOINT_Closed_Hi_hat = "闭合开合钹";  //Closed Hi-hat
+Blockly.Msg.JOINT_Open_Hi_hat = "开放开合钹";  //Open Hi-hat
+Blockly.Msg.JOINT_Low_Tom = "低音筒鼓";  //Low Tom
+Blockly.Msg.JOINT_High_Tom = "高音筒鼓";  //High Tom
+Blockly.Msg.JOINT_Tambourine = "铃鼓";  //Tambourine
+Blockly.Msg.JOINT_Crash_Cymbal = "强音钹";  //Crash Cymbal
+Blockly.Msg.JOINT_Ride_Cymbal = "打点钹";  //Ride Cymbal
+Blockly.Msg.JOINT_Mute_High_Conga = "高音康加鼓";  //Mute High Conga
+Blockly.Msg.JOINT_Low_Conga = "低音康加鼓";  //Low Conga
+Blockly.Msg.JOINT_Maracas = "沙锤";  //Maracas
+Blockly.Msg.JOINT_Claves = "击木";  //Claves */
+
+
+//新tts
+Blockly.Msg.XUNFEI_SPEECH_TTS_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_TTS_TOOLTIP = '合成音频文件格式只能是 *.pcm';
+Blockly.Msg.XUNFEI_SPEECH_TTS_MESSAGE0 = '[讯飞语音] 合成音频 %1 APPID %2 APISecret %3 APIKey %4 文字内容 %5 转存为音频文件 %6';
+
+Blockly.Msg.XUNFEI_SPEECH_IAT_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_TOOLTIP = '可识别的音频格式有 *.pcm 与 *.wav';
+Blockly.Msg.XUNFEI_SPEECH_IAT_MESSAGE0 = '[讯飞语音] 识别音频 %1 APPID %2 APISecret %3 APIKey %4 待识别音频文件 %5';
+
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_TOOLTIP = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_MESSAGE0 = '[讯飞语音] 识别结果';
+
+
+//教科板AI
+Blockly.Msg.CocoRobo_ZKAI_LCD_INIT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcdinittype1-freq15000000-colorlcdblack';
+Blockly.Msg.CocoRobo_ZKAI_LCD_INIT_MESSAGE0 = 'LCD 屏幕初始化';
+Blockly.Msg.CocoRobo_ZKAI_LCD_INIT_TOOLTIP = '初始化 LCD 屏幕显示';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_ROTATION_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcddirectiondir';
+Blockly.Msg.CocoRobo_ZKAI_LCD_ROTATION_MESSAGE0 = 'LCD 屏幕方向%1';
+Blockly.Msg.CocoRobo_ZKAI_LCD_ROTATION_TOOLTIP = '设置 LCD 屏幕方向,取值范围 [0,3], 从0到3依次顺时针旋转';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_RESET_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_RESET_MESSAGE0 = '摄像头 初始化';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_RESET_TOOLTIP = '初始化单目摄像头';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_MESSAGE0 = '摄像头%1';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_TOOLTIP = '获取图像';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_WIDTHANDHEIGHT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcdwidth';
+Blockly.Msg.CocoRobo_ZKAI_LCD_WIDTHANDHEIGHT_MESSAGE0 = 'LCD 获取%1';
+Blockly.Msg.CocoRobo_ZKAI_LCD_WIDTHANDHEIGHT_TOOLTIP = '返回 LCD 的宽度(水平分辨率);高度(垂直分辨率)';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_MI_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcddirectiondir';
+Blockly.Msg.CocoRobo_ZKAI_LCD_MI_MESSAGE0 = 'LCD 设置镜像';
+Blockly.Msg.CocoRobo_ZKAI_LCD_MI_TOOLTIP = '设置是否镜像';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_TEXT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87';
+Blockly.Msg.CocoRobo_ZKAI_LCD_TEXT_MESSAGE0 = '显示文本 x %1 y %2 内容 %3';
+Blockly.Msg.CocoRobo_ZKAI_LCD_TEXT_TOOLTIP = '仅支持字母和数字';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_OffOn_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%85%B3%E9%97%AD%E6%91%84%E5%83%8F%E5%A4%B4';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_OffOn_MESSAGE0 = '摄像头%1';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_OffOn_TOOLTIP = '1 表示开启摄像头 0 表示关闭摄像头';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SKIP_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SKIP_MESSAGE0 = '摄像头 跳过帧数%1 毫秒%2内的图像 ';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SKIP_TOOLTIP = '摄像头跳过指定帧数或者跳过指定时间内的图像';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_RETURN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_RETURN_MESSAGE0 = '摄像头 获取%1';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_RETURN_TOOLTIP = '(ZKAI)摄像头返回参数(宽高,获取帧缓冲,获取ID)';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SETS_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SETS_MESSAGE0 = '摄像头 设置%1 为%2';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SETS_TOOLTIP = '设置摄像头对比度,亮度,饱和度范围为[-2,+2]';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_AUTO_GAIN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_AUTO_GAIN_MESSAGE0 = '摄像头 自动增益%1';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_AUTO_GAIN_TOOLTIP = '1开启摄像头自动增益 0关闭摄像头自动增益';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ACQUIRE_AUTO_GAIN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%A2%9E%E7%9B%8A%E5%80%BC';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ACQUIRE_AUTO_GAIN_MESSAGE0 = '摄像头 获取增益值';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ACQUIRE_AUTO_GAIN_TOOLTIP = '获取摄像头增益值';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_MESSAGE0 = '摄像头 水平镜像%1';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_TOOLTIP = '1 表示开启水平镜像 0 表示关闭水平镜像';
+
+//教科板追踪颜色
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_LAB_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%89%BE%E7%BB%BF%E8%89%B2';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_LAB_MESSAGE0 = '寻找颜色 LAB值%1';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_LAB_TOOLTIP = 'image寻找颜色';
+
+Blockly.Msg.CocoRobo_ZKAI_TRACE_COLOR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs';
+Blockly.Msg.CocoRobo_ZKAI_TRACE_COLOR_MESSAGE0 = '追踪色块 LAB颜色%1 边界框小于%2 像素小于%3 过滤';
+Blockly.Msg.CocoRobo_ZKAI_TRACE_COLOR_TOOLTIP = '追踪色块';
+
+Blockly.Msg.CocoRobo_ZKAI_TRACE_CILOR_DISPLAYTEN_HELPURL = '';
+Blockly.Msg.CocoRobo_ZKAI_TRACE_CILOR_DISPLAYTEN_MESSAGE0 = '追踪颜色 显示%1';
+Blockly.Msg.CocoRobo_ZKAI_TRACE_CILOR_DISPLAYTEN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_ALL_MESSAGE0 = '%1获取识别后色块的 所有参数';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_ALL_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_X_MESSAGE0 = '%1获取识别后色块的 x坐标';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_X_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_Y_MESSAGE0 = '%1获取识别后色块的 y坐标';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_Y_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_W_MESSAGE0 = '%1获取识别后色块的 宽度';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_W_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_H_MESSAGE0 = '%1获取识别后色块的 高度';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_H_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_NUMBER_MESSAGE0 = '%1获取识别后色块的 数量';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_NUMBER_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_CENTER_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_CENTER_X_MESSAGE0 = '%1获取识别后色块的 中心x坐标';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_CENTER_X_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_CENTER_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_CENTER_Y_MESSAGE0 = '%1获取识别后色块的 中心y坐标';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_CENTER_Y_TOOLTIP = '返回blob 类 -- 色块对象';
+
+Blockly.Msg.CocoRobo_ZKAI_BLOB_ORTHOGON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_ORTHOGON_MESSAGE0 = '%1获取识别后色块的 矩形';
+Blockly.Msg.CocoRobo_ZKAI_BLOB_ORTHOGON_TOOLTIP = '返回blob 类 -- 色块对象';
+
+//教科板人脸检测
+Blockly.Msg.CocoRobo_ZKAI2_FACE_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_FACE_TRACKING_MESSAGE0 = '选择训练模型 人脸';
+Blockly.Msg.CocoRobo_ZKAI2_FACE_TRACKING_TOOLTIP = '可以识别并且追踪人脸,显示人脸大小等';
+
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_TRACKING_MESSAGE0 = '调用摄像头进行 人脸检测';
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_TRACKING_TOOLTIP = '可以识别并且追踪人脸,显示人脸大小等';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_MESSAGE0 = '获取识别后人脸的 所有参数';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_TOOLTIP = '获取识别后人脸的 所有参数';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_X_MESSAGE0 = '获取识别后人脸的 x坐标';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_X_TOOLTIP = '获取识别后人脸的 x坐标';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_Y_MESSAGE0 = '获取识别后人脸的 y坐标';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_Y_TOOLTIP = '获取识别后人脸的 y坐标';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_W_MESSAGE0 = '获取识别后人脸的 宽度';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_W_TOOLTIP = '获取识别后人脸的 宽度';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_H_MESSAGE0 = '获取识别后人脸的 高度';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_H_TOOLTIP = '获取识别后人脸的 高度';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_VALUE_MESSAGE0 = '获取识别后人脸的 置信度';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_VALUE_TOOLTIP = '获取识别后人脸的 置信度';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_OBJNUM_MESSAGE0 = '获取识别后人脸的 数量';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_FACE_OBJNUM_TOOLTIP = '获取识别后人脸的 数量';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_DISPLAY_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcddisplayimage-roiauto';
+Blockly.Msg.CocoRobo_ZKAI_LCD_DISPLAY_MESSAGE0 = 'LCD 显示生效';
+Blockly.Msg.CocoRobo_ZKAI_LCD_DISPLAY_TOOLTIP = '可以在液晶屏上显示一张 image';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_IMAGES_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_IMAGES_MESSAGE0 = '摄像头 获取图像';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_IMAGES_TOOLTIP = '控制摄像头捕捉图像';
+
+//教科板20分类
+Blockly.Msg.CocoRobo_ZKAI2_20class_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_20class_TRACKING_MESSAGE0 = '选择训练模型 20类';
+Blockly.Msg.CocoRobo_ZKAI2_20class_TRACKING_TOOLTIP = '可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视';
+
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_20TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_20TRACKING_MESSAGE0 = '调用摄像头进行 20类识别';
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_20TRACKING_TOOLTIP = '调用摄像头进行 20类识别';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_MESSAGE0 = '获取识别后20类的 所有参数';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_TOOLTIP = '获取识别后20类的 所有参数';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_X_MESSAGE0 = '获取识别后20类的 x坐标';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_X_TOOLTIP = '获取识别后20类的 x坐标';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_Y_MESSAGE0 = '获取识别后20类的 y坐标';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_Y_TOOLTIP = '获取识别后20类的 y坐标';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_W_MESSAGE0 = '获取识别后20类的 宽度';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_W_TOOLTIP = '获取识别后20类的 宽度';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_H_MESSAGE0 = '获取识别后20类的 高度';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_H_TOOLTIP = '获取识别后20类的 高度';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_VALUE_MESSAGE0 = '获取识别后20类的 置信度';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_VALUE_TOOLTIP = '获取识别后20类的 置信度';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_OBJNUM_MESSAGE0 = '获取识别后20类的 数量';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_OBJNUM_TOOLTIP = '获取识别后20类的 数量';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_CLASSID_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_CLASSID_MESSAGE0 = '获取识别后20类的 类型';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_CLASSID_TOOLTIP = '获取识别后20类的 类型可以放入获取识别的参数,可以识别20个类型,分别是0-19为飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛,餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_INDEX_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_INDEX_MESSAGE0 = '获取识别后20类的 类型数量';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_20CLASS_INDEX_TOOLTIP = '获取识别后20类的 类型数量';
+
+//掌控手写数字
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DISCERN_MESSAGE0 = '选择训练模型  手写数字';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DISCERN_TOOLTIP = '选择训练模型  手写数字识别';
+
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_NUMBER_DISCERN_MESSAGE0 = '调用摄像头进行 手写数字识别';
+Blockly.Msg.CocoRobo_ZKAI2_RESULT_NUMBER_DISCERN_TOOLTIP = '调用摄像头进行 手写数字识别';
+
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ALL_MESSAGE0 = '获取识别后手写数字的 所有参数';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ALL_TOOLTIP = '手写数字识别参数';
+
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_NUMBER_MESSAGE0 = '获取识别后手写数字的 数字';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_NUMBER_TOOLTIP = '手写数字识别 数字';
+
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ADIENCE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ADIENCE_MESSAGE0 = '获取识别后手写数字的 置信度';
+Blockly.Msg.CocoRobo_ZKAI2_NUMBER_DETECT_ADIENCE_TOOLTIP = '手写数字 识别数字 置信度';
+
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_MESSAGE0 = '人脸检测';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_RETURN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_RETURN_MESSAGE0 = '获取 识别%1';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_RETURN_TOOLTIP = '人脸检测的x和y是LCD屏幕的坐标位置;width和height是人脸检测出的宽度和高度;classid是识别出的类别;objnum是人脸检测出的个数';
+
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_ALL_RETURN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_ALL_RETURN_MESSAGE0 = '获取 识别 所有参数';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT_ALL_RETURN_TOOLTIP = '人脸检测的x和y是LCD屏幕的坐标位置;width和height是人脸检测出的宽度和高度;classid是识别出的类别;objnum是人脸检测出的个数';
+
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT2_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT2_MESSAGE0 = '人脸检测';
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_FACEDETECT2_TOOLTIP = '可以放入获取识别的参数';
+
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_20CLASS_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C'
+Blockly.Msg.CocoRobo_ZKAI_IMAGE_20CLASS_TOOLTIP = '可以放入获取识别的参数,可以识别20个类型,分别是飞机,自行车,鸟,船,瓶子,公交车,汽车,猫,椅子,奶牛, 餐桌,狗,屋子,摩托车,人,盆栽,羊,沙发,火车,电视'
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_REC_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawrectanglex-y-w-h-color-thickness1-fillfalse';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_REC_MESSAGE0 = '矩形%1 x%3 y%4 宽%5 高%6 颜色为 R%7 G%8 B%9  加粗%2';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_REC_TOOLTIP = '在图像上绘制矩形';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_STRING_MESSAGE0 = '线条  x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7 加粗%8';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_STRING_TOOLTIP = '在图像上绘制线条';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_STRING_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawlinex0-y0-x1-y1-color-thickness1';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_CLEAR_ALL_MESSAGE0 = 'LCD 显示清空';
+Blockly.Msg.CocoRobo_ZKAI_LCD_CLEAR_ALL_TOOLTIP = '将液晶屏清空为黑色或者指定的颜色';
+Blockly.Msg.CocoRobo_ZKAI_LCD_CLEAR_ALL_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#lcdclear';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_return_colour_MESSAGE0 = 'LCD 返回 x%1 y%2 颜色';
+Blockly.Msg.CocoRobo_ZKAI_LCD_return_colour_TOOLTIP = '返回某个坐标点的颜色';
+Blockly.Msg.CocoRobo_ZKAI_LCD_return_colour_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagegetpixelx-y-rgbtuple';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_CIRCLE_MESSAGE0 = '圆形%1 x%2 y%3 半径%4 颜色为 R%5 G%6 B%7 加粗%8';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_CIRCLE_TOOLTIP = '在图像上绘制圆形';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_CIRCLE_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawcirclex-y-radius-color-thickness1-fillfalse';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_TEXT_MOST_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87';
+Blockly.Msg.CocoRobo_ZKAI_LCD_TEXT_MOST_MESSAGE0 = '显示文本 x %1 y %2 内容 %3 颜色为R%4 G%5 B%6 字号%7';
+Blockly.Msg.CocoRobo_ZKAI_LCD_TEXT_MOST_TOOLTIP = '仅支持字母和数字';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_TEN_STRING_MESSAGE0 = '十字线  x%1 y%2 颜色为R%3 G%4 B%5 尺寸%6 加粗%7';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_TEN_STRING_TOOLTIP = '在图像上绘制十字线';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_TEN_STRING_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawcrossx-y-color-size5-thickness1';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ARROWS_MESSAGE0 = '箭头  x1%1 y1%2 到x2%3 y2%4 颜色为R%5 G%6 B%7  加粗%8';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ARROWS_TOOLTIP = '在图像上绘制一个箭头';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ARROWS_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagedrawarrowx0-y0-x1-y1-color-thickness1';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-2%EF%BC%9A-%E6%98%BE%E7%A4%BA%E5%9B%BE%E7%89%87';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0 = '显示图像 路径%1';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP = '显示图像';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagetorainbowcopyfalse';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_MESSAGE0 = 'LCD 显示热图颜色';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_TOOLTIP = '可以在液晶屏上显示一张 image的热图颜色';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagesavepath-roi-quality50';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_MESSAGE0 = '将图像的副本保存到SD卡 图像名%1 图像显示区域  x%2 y%3 宽%4 高%5';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_TOOLTIP = '将图像的副本保存到SD卡';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_SHOW_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/image.html#imagecopyroi-copytofbfalse';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0 = '创建一个图像对象的副本  复制图像区域  x%1 y%2 宽%3 高%4';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP = '创建一个图像对象的副本';
+
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE = '灰度';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_RAINBOW = '彩虹';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_NEGATE = '数字反转';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_HEAT_INVERT = '黑白翻转';
+
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR = '线性极';
+Blockly.Msg.CocoRobo_ZKAI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR = '对数极';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_PATTERN_GRAYSCALE = '灰度';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_PATTERN_COLOR = '彩色';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_START = '开始抓取图像';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_ENABLE_STOP = '停止抓取图像';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_H = '水平镜像';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_LEVEL_MI_V = '垂直翻转';
+
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SETS_CONTRAST = '对比度';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SETS_BRIGHTNESS = '亮度';
+Blockly.Msg.CocoRobo_ZKAI_SENSOR_SETS_SATURATION = '饱和度';
+
+Blockly.Msg.CocoRobo_ZKAI2_FACE_YOLO = '人脸检测';
+Blockly.Msg.CocoRobo_ZKAI2_CLASS_20_YOLO = '20类识别';
+Blockly.Msg.CocoRobo_ZKAI2_MNIST_NET = '数字识别';
+
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_FACE_YOLO = '人脸';
+Blockly.Msg.CocoRobo_ZKAI2_PHOTOGRAPH_CLASS_20_YOLO = '20类';
+
+Blockly.Msg.CocoRobo_ZKAI_TRACE_COLOR_RECTANGLE = '矩形';
+Blockly.Msg.CocoRobo_ZKAI_TRACE_COLOR_CROSS = '十字';
+
+//声明python 运行环境
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_HELPURL = '';
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_MESSAGE0 = '声明python 运行环境';
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_TOOLTIP = '';
+
+//lark
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_MESSAGE0 = 'I2C获取颜色';
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_TOOLTIP = '返回列表';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_MESSAGE0 = 'I2C获取 %1';
+Blockly.Msg.CocoRobo_lARK_RED = '红色';
+Blockly.Msg.CocoRobo__LARK_GREEN = '绿色';
+Blockly.Msg.CocoRobo__LARK_BLUE = '蓝色';
+
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARKT_GET_ALL_COLOR_HSV_MESSAGE0 = 'I2C获取HSV';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_HSV_MESSAGE0 = 'i2C获取HSV %1';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_STRING_MESSAGE0 = 'I2C获取颜色';
+
+Blockly.Msg.CocoRobo_LARK_DISCERN_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_DISCERN_COLOR_MESSAGE0 = '获取 %1';
+Blockly.Msg.CocoRobo_LARK_RED = '红色';
+Blockly.Msg.CocoRobo_LARK_GREEN = '绿色';
+Blockly.Msg.CocoRobo_LARK_BLUE = '蓝色';
+Blockly.Msg.CocoRobo_LARK_ORANGE = '橙色';
+Blockly.Msg.CocoRobo_LARK_YELLOW = '黄色';
+Blockly.Msg.CocoRobo_LARK_PURPLE = '紫色';
+Blockly.Msg.CocoRobo_LARK_CYAN = '青色';
+Blockly.Msg.CocoRobo_LARK_NONE = '无色';
+Blockly.Msg.CocoRobo_LARK_NULL = '无法获取';
+
+Blockly.Msg.CocoRobo_LARK_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_ULTRASONIC_MESSAGE0 = 'I2C超声波';
+
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0 = 'I2C设置 %1 速度 %2';
+
+Blockly.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_MESSAGE0 = 'I2C获取 %1 巡线值';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_RIGHT_ON_I2C = '右边';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_LEFT_ON_I2C = '左边';
+
+Blockly.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_MESSAGE0 = 'I2C循迹传感 %1 遇到黑线';
+Blockly.Msg.CocoRobo_LARK_SEARCH_LEFT = '左边';
+Blockly.Msg.CocoRobo_LARK_SEARCH_RIGHT = '右边';
+Blockly.Msg.CocoRobo_LARK_SEARCH_BOTH = '两边都';
+Blockly.Msg.CocoRobo_LARK_SEARCH_NONE = '两边都没有';
+
+
+///千里马
+Blockly.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_TOOLTIP = 'Returns as list';
+Blockly.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_MESSAGE0 = '千里马获取颜色';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_MESSAGE0 = '千里马获取 %1';
+Blockly.Msg.CocoRobo_lARK_CAR_RED = '红色';
+Blockly.Msg.CocoRobo__LARK_CAR_GREEN = '绿色';
+Blockly.Msg.CocoRobo__LARK_CAR_BLUE = '蓝色';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_ALL_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARKT_CAR_GET_ALL_COLOR_HSV_MESSAGE0 = '千里马获取HSV';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_MESSAGE0 = '千里马获取HSV %1';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_MESSAGE0 = '千里马识别颜色';
+
+Blockly.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_MESSAGE0 = '千里马获取颜色 %1';
+Blockly.Msg.CocoRobo_LARK_CAR_RED = '红色';
+Blockly.Msg.CocoRobo_LARK_CAR_GREEN = '绿色';
+Blockly.Msg.CocoRobo_LARK_CAR_BLUE = '蓝色';
+Blockly.Msg.CocoRobo_LARK_CAR_ORANGE = '橙色';
+Blockly.Msg.CocoRobo_LARK_CAR_YELLOW = '黄色';
+Blockly.Msg.CocoRobo_LARK_CAR_PURPLE = '紫色';
+Blockly.Msg.CocoRobo_LARK_CAR_CYAN = '青色';
+Blockly.Msg.CocoRobo_LARK_CAR_NONE = '无识别';
+Blockly.Msg.CocoRobo_LARK_CAR_NULL = '识别错误';
+
+Blockly.Msg.CocoRobo_LARK_CAR_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_ULTRASONIC_MESSAGE0 = '千里马获取超声波';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_MESSAGE0 = '千里马获取 %1 循迹数值';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_RIGHT_ON_I2C = '右边';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_LEFT_ON_I2C = '左边';
+
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_MESSAGE0 = '千里马循迹传感器 %1 碰到黑线';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LEFT = '左边';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_RIGHT = '右边';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_BOTH = '两边';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_NONE = '两边都没有';
+
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0 = '千里马 %1  速度 %2';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_LEFT = '左转';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_RIGHT = '右转';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_FORWARD = '前进';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_BACKWARD = '后退';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_STOP = '停止';
+
+Blockly.Msg.Math_Degrad_RAD_TOOLTIP = "返回转换角度为弧度的结果";
+Blockly.Msg.Math_Degrad_DEG_TOOLTIP = "返回转换弧度为角度的结果";
+
+Blockly.Msg.Text_Split_String_By_Delimiter_TOOLTIP = "将字符串使用分隔符进行拆分并生成列表";
+
+Blockly.Msg.Text_List_TOOLTIP = "初始化列表[0,0,0]";
+Blockly.Msg.Text_Dict_TOOLTIP = "初始化字典";
+Blockly.Msg.Text_Tuple_TOOLTIP = "初始化元组";
+Blockly.Msg.Text_Set_TOOLTIP = "初始化集合";
+Blockly.Msg.Iot_System_Run_TOOLTIP = "运行指定路径的程序文件";
+Blockly.Msg.Esp32_Main_Controller_Io_From_Digital_Pin_TOOLTIP = "返回%1获取特定引脚的数字信号数值";
+Blockly.Msg.Esp32_Main_Controller_Io_Set_Digital_Pin_TOOLTIP = "%1设置特定引脚为指定电平";
+Blockly.Msg.Esp32_Main_Controller_Io_Set_Analog_Pin_TOOLTIP = "IoT模块设置引脚,并控制%1的模拟输出";
+Blockly.Msg.Ai_Main_Controller_Io_Set_Analog_Pin_TOOLTIP = "A.I.模块设置引脚,并控制%1的模拟输出";
+Blockly.Msg.Esp32_Main_Controller_Io_From_Analog_Pin_TOOLTIP = "IoT模块获取特定引脚的模拟信号数值";
+Blockly.Msg.Esp32_Main_Controller_Io_High_Low_TOOLTIP = "返回%1";
+Blockly.Msg.esp32_main_controller_io_analog_pin_1_TOOLTIP = "返回A.I. 模块引脚 #%1";
+Blockly.Msg.esp32_main_controller_io_analog_pin_2_TOOLTIP = "返回IoT 模块引脚 #%1";
+Blockly.Msg.Iot_System_Create_TOOLTIP = "创建指定名字的文本文件";
+Blockly.Msg.Iot_System_Write_TOOLTIP = "创建指定名字的文本文件,并写入内容,以%1为分隔符";
+Blockly.Msg.Iot_System_Input_TOOLTIP = "读取指定名字的文本文件为列表,并以%1为分隔符";
+Blockly.Msg.Esp32_Get_Current_Date_TOOLTIP = "获取本地时间的%1";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Init_TOOLTIP = "%1初始化计时器";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Get_Current_TOOLTIP = "%1获取计时器已过时间";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Clear_TOOLTIP = "%1清除计时器";
+Blockly.Msg.Esp32_Main_Controller_Time_Period_Timer_TOOLTIP = "%1启用周期重复计时器,并隔一定的时间运行指定的条件";
+Blockly.Msg.Esp32_Main_Controller_Time_Period_Timer_Clear_TOOLTIP = "%1清除周期重复计时器";
+Blockly.Msg.serial_Comm_Print_TOOLTIP = "串口打印";
+Blockly.Msg.Serial_Write_Data_TOOLTIP = "使用%1通过串口发送数据至其他设备";
+Blockly.Msg.Serial_Read_Data_Setup_TOOLTIP = "使用%1通过串口获取其他设备发送的数据初始化";
+Blockly.Msg.Serial_Read_Data_all_TOOLTIP = "获取串口的数据并存储到serial_data中";
+Blockly.Msg.Serial_Read_Data_TOOLTIP = "从serial_data获取接收到串口数据中的某一位数据";
+Blockly.Msg.Serial_Send_Data_To_Microbit_TOOLTIP = "在%1模块上发送数据至Microbit";
+Blockly.Msg.Trd_Party_Sensor_Hcsr04_TOOLTIP = "%1初始化超声波传感器";
+Blockly.Msg.Trd_Party_Sensor_Hcsr04_Read_TOOLTIP = "读取来自特定超声波传感器的距离检测数值,并返回";
+Blockly.Msg.Esp32_Main_Controller_Led_Strip_Setup_TOOLTIP = "%1初始化LED灯带";
+Blockly.Msg.Esp32_Main_Controller_Led_strip_set_bright_TOOLTIP = "设置LED灯带亮度";
+Blockly.Msg.Iot_Led_Matrix_Color_Picker_TOOLTIP = "将十六进制颜色码转换成RGB颜色值,并返回";
+Blockly.Msg.Led_Strip_Color_Rgb_TOOLTIP = "返回RGB颜色值";
+Blockly.Msg.Esp32_Main_Controller_Led_Strip_Set_TOOLTIP = "%1点亮LED灯带";
+Blockly.Msg.Led_Strip_Show_Above_TOOLTIP = "%1使灯带显示以上效果";
+
+// IoT
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Pressed_TOOLTIP = "当按钮%1按下时";
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Released_TOOLTIP = "当按钮%1松开时";
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Value_TOOLTIP = "读取按钮%1的电平状态";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Touched_TOOLTIP = "当触摸区域%1被触摸时";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Untouched_TOOLTIP = "当触摸区域%1未被触摸时";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Value_TOOLTIP = "获取触摸区域%1的电容变化数值";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Turnon_TOOLTIP = "设置点亮指定的LED灯";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Turnoff_TOOLTIP = "设置关闭指定的LED灯";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_On_TOOLTIP = "点亮指定的LED灯";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_Off_TOOLTIP = "熄灭指定的LED灯";
+Blockly.Msg.Esp32_Main_Controller_Set_Buzzer_TOOLTIP = "蜂鸣器设置音调频率";
+Blockly.Msg.Esp32_Main_Controller_Turn_Off_Buzzer_TOOLTIP = "关闭蜂鸣器";
+Blockly.Msg.Esp32_Main_Controller_Get_Environmental_Value_TOOLTIP = "获取%1数值(获取数值时间要大于1秒)";
+Blockly.Msg.Esp32_Main_Controller_Motion_When_Shaking_STATEMENT_TOOLTIP = "当模块%1摇晃状态时,执行操作";
+Blockly.Msg.Esp32_Main_Controller_Motion_When_Tilting_STATEMENT_TOOLTIP= "当模块%1倾斜时,执行操作";
+Blockly.Msg.Esp32_Main_Controller_Motion_Acceleration_TOOLTIP= "获取%1轴的加速度";
+Blockly.Msg.Esp32_Main_Controller_Motion_Rotation_Measurement_TOOLTIP = "获取%1轴的旋转测量值";
+Blockly.Msg.Esp32_Main_Controller_Motion_Tilt_Angle_TOOLTIP= "获取%1轴的倾斜角度";
+Blockly.Msg.Esp32_Main_Controller_Get_Light_TOOLTIP= "获取光线值";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Connect_Internet_TOOLTIP= "连接WiFi网络";
+Blockly.Msg.Esp32_Main_Controller_Get_Wifi_Connection_Status_TOOLTIP= "获取WiFi连接状态";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Get_Info_TOOLTIP= "获取WiFi配置信息%1";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Ntptime_TOOLTIP= "同步网络时间";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Disconnect_TOOLTIP= "断开WiFi连接";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Enable_Hotspot_Mode_TOOLTIP= "创建WiFi热点";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Acquiring_Equipment_TOOLTIP= "获取当前已连接的设备列表";
+Blockly.Msg.Esp32_Main_Controller_Get_Wifi_Devices_Number_TOOLTIP= "获取当前已连接的设备数量";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Close_TOOLTIP= "关闭WiFi热点";
+Blockly.Msg.Esp32_Network_Http_Get_TOOLTIP= "发送http get请求";
+Blockly.Msg.Esp32_Network_Http_Post_TOOLTIP= "发送http post请求";
+Blockly.Msg.CocoRobo_get_TOOLTIP= "获取HTTP响应内容的%1";
+Blockly.Msg.Esp32_Network_Http_Get_Data_From_Local_Server_TOOLTIP= "获取从本地HTTP服务器请求得到的数据,数据类型为%1";
+Blockly.Msg.Esp32_Network_Http_Server_Setup_TOOLTIP= "HTTP服务器初始化";
+Blockly.Msg.Esp32_Network_Http_Server_Route_TOOLTIP= "当指定路径被请求时,设定请求属性为%1请求,并执行操作";
+Blockly.Msg.Esp32_Network_Http_Server_Route_Respond_TOOLTIP= "HTTP服务器设置响应内容,并设置返回数据类型为%1";
+Blockly.Msg.Esp32_Network_Http_Server_Get_Data_TOOLTIP= "HTTP服务器获取从客户端收到的数据,类型为%1";
+Blockly.Msg.Esp32_Web_Ws_Setup_Send_TOOLTIP= "实时通信发送端初始化";
+Blockly.Msg.Esp32_Web_Ws_Send_TOOLTIP= "透过实时通信发送消息";
+Blockly.Msg.Esp32_Web_Ws_Setup_Receive_TOOLTIP= "实时通信接收端初始化";
+Blockly.Msg.Esp32_Web_Ws_Receive_Statement_TOOLTIP= "当实时通信收到消息时,运行操作";
+Blockly.Msg.Esp32_Web_Ws_Receive_Get_Data_TOOLTIP= "获取从实时通信接收到的消息,类型为%1";
+Blockly.Msg.Iot_Service_Cococloud_TOOLTIP= "发送数据至CocoCloud指定事件";
+Blockly.Msg.Iot_Service_Cococloud_Read_TOOLTIP= "获取CocoCloud指定事件中的数据";
+Blockly.Msg.Iot_Service_Cococloud_Read_Data_TOOLTIP= "获取CocoCloud事件中指定属性的数据";
+Blockly.Msg.Esp32_Main_Controller_Ifttt_Send_Data_TOOLTIP= "发送数据到IFTTT Webhooks事件";
+Blockly.Msg.Esp32_Main_Controller_Ifttt_Touched_TOOLTIP= "触发指定的IFTTT事件";
+Blockly.Msg.Iot_Service_Thingspeak_TOOLTIP= "发送数据至指定ThingSpeak频道";
+Blockly.Msg.Iot_Service_Thingspeak_Read_TOOLTIP= "查找ThingSpeak指定频道的数据";
+Blockly.Msg.Iot_Service_Thingspeak_Read_Total_TOOLTIP= "获取ThingSpeak频道中的数据总量";
+Blockly.Msg.Iot_Service_Thingspeak_Read_Specific_TOOLTIP= "获取ThingSpeak频道中指定数据的指定Field的数值";
+Blockly.Msg.Iot_System_Restart_TOOLTIP= "重启系统";
+Blockly.Msg.Iot_System_Get_TOOLTIP= "获取模块内剩余空间";
+Blockly.Msg.Iot_System_Mac_TOOLTIP= "获取模块的MAC地址";
+Blockly.Msg.Iot_System_Get_Cocorobo_Id_TOOLTIP= "获取IoT设备ID";
+Blockly.Msg.iot_system_get_cocorobo_firmware_version_TOOLTIP= "获取IoT当前固件版本号";
+Blockly.Msg.iot_system_delete_TOOLTIP = "删除指定名字的文件";
+Blockly.Msg.ai_system_get_cocorobo_firmware_version_TOOLTIP= "获取AI当前固件版本号";
+Blockly.Msg.ai_System_Get_TOOLTIP= "获取内存内剩余空间";
+Blockly.Msg.ai_System_sd_Get_TOOLTIP = "获取SD卡内剩余空间";
+Blockly.Msg.ai_system_thread_TOOLTIP = "启用多线程,执行相关操作";
+Blockly.Msg.Iot_Lcd_Screeninit_TOOLTIP= "LCD屏幕初始化";
+Blockly.Msg.Iot_Lcd_Screen_TOOLTIP= "将LCD屏幕填充颜色为%1";
+Blockly.Msg.Iot_Lcd_Fill_Screen_With_Rgb_TOOLTIP= "将LCD屏幕填充指定颜色";
+Blockly.Msg.Iot_Lcd_Set_Color_TOOLTIP= "将十六进制颜色码转换成RGB颜色值,并返回";
+Blockly.Msg.Iot_Lcd_Rgb_Value_Input_TOOLTIP= "返回指定rgb值";
+Blockly.Msg.Iot_Lcd_Drawpixel_TOOLTIP= "屏幕绘制点";
+Blockly.Msg.Iot_Lcd_Linecarvas_TOOLTIP= "屏幕绘制直线";
+Blockly.Msg.Iot_Lcd_Ractanglecarvas_TOOLTIP= "屏幕绘制%1矩形";
+Blockly.Msg.Iot_Lcd_Textcarvas_TOOLTIP= "屏幕绘制文本";
+Blockly.Msg.Iot_Lcd_Draw_ZedGraph_TOOLTIP= "屏幕绘制%1统计图";
+Blockly.Msg.iot_lcd_clear_screen_TOOLTIP = "清除屏幕";
+Blockly.Msg.Iot_Led_Matrix_Setup_TOOLTIP= "IoT模块初始化LED灯屏";
+Blockly.Msg.Iot_Led_Matrix_Set_Bright_TOOLTIP= "设置灯屏亮度";
+Blockly.Msg.Iot_Led_Matrix_xy_TOOLTIP= "设置行列";
+Blockly.Msg.Iot_Led_Matrix_wh_TOOLTIP= "设置宽高";
+Blockly.Msg.Iot_Led_Matrix_Rgb_Value_Input_TOOLTIP= "返回指定rgb值";
+Blockly.Msg.Iot_Led_Matrix_Draw_Pixel_TOOLTIP= "IoT模块LED灯屏绘制点";
+Blockly.Msg.Iot_Led_Matrix_Draw_Rectangle_TOOLTIP= "IoT模块LED灯屏绘制矩形";
+Blockly.Msg.Iot_Led_Matrix_Show_Above_TOOLTIP= "IoT模块LED灯屏显示生效";
+Blockly.Msg.Esp32_Motor_Setup_TOOLTIP= "IoT模块电机驱动初始化";
+Blockly.Msg.Esp32_Motor_Run_TOOLTIP= "IoT模块设置指定电机以指定速度进行指定方向的转动";
+Blockly.Msg.Esp32_Main_Controller_Servo_Setup_TOOLTIP= "IoT模块舵机初始化";
+Blockly.Msg.Esp32_Main_Controller_Servo_Set_TOOLTIP= "IoT模块设置位于指定引脚的舵机转动至指定角度";
+
+Blockly.Msg.x_iot_read_gamepad_button_pressed_TOOLTIP= "当游戏手柄上的按键%1按下时";
+Blockly.Msg.x_iot_read_gamepad_button_released_TOOLTIP= "当游戏手柄上的按键%1松开时";
+Blockly.Msg.x_iot_read_gamepad_button_xr_TOOLTIP= "获取游戏手柄上按键%1的电平值";
+Blockly.Msg.x_iot_read_gamepad_joystick_check_TOOLTIP= "当游戏手柄上的摇杆%1";
+Blockly.Msg.x_iot_read_gamepad_joystick_TOOLTIP= "获取游戏手柄上摇杆%1的模拟数值";
+Blockly.Msg.esp32_nbiot_setup_TOOLTIP= "在%1模块上NB-IoT模块通信初始化";
+Blockly.Msg.esp32_nbiot_get_power_status_TOOLTIP= "获取NB-IoT模块启用状态";
+Blockly.Msg.esp32_nbiot_get_network_status_TOOLTIP= "获取NB-IoT模块网络连接状态";
+Blockly.Msg.esp32_nbiot_get_network_ip_TOOLTIP= "获取NB-IoT模块网络IP地址";
+Blockly.Msg.iot_service_nbiot_cococloud_TOOLTIP= "NB-IoT模块发送数据至CocoCloud";
+Blockly.Msg.esp32_nbiot_onenet_init_TOOLTIP= "NB-IoT模块连接OneNET";
+Blockly.Msg.esp32_nbiot_onenet_connection_status_TOOLTIP= "NB-IoT模块获取OneNET连接状态";
+Blockly.Msg.iot_service_nbiot_onenet_TOOLTIP= "NB-IoT模块发送数据至OneNET";
+Blockly.Msg.esp32_nbiot_onenet_read_value_TOOLTIP= "获取NB-IoT模块从OneNET发送的指令";
+Blockly.Msg.iot_service_nbiot_onenet_read_TOOLTIP= "当NB-IoT模块从OneNET收到消息时,运行操作";
+Blockly.Msg.esp32_ble_setup_sender_TOOLTIP= "BLE(低功耗蓝牙)发送端初始化";
+Blockly.Msg.esp32_ble_send_data_TOOLTIP= "BLE发送指定的数据";
+Blockly.Msg.esp32_ble_setup_receiver_TOOLTIP= "BLE(低功耗蓝牙)接收端初始化";
+Blockly.Msg.esp32_ble_get_data_TOOLTIP= "返回BLE接收的数据";
+Blockly.Msg.esp32_ble_sender_connected_TOOLTIP= "发送端已经被连接";
+Blockly.Msg.esp32_ble_receiver_connected_TOOLTIP= "接收端已经被连接";
+
+// ai
+Blockly.Msg.ai_k210_button_read_pressed_TOOLTIP= "当按钮%1按下时";
+Blockly.Msg.ai_k210_button_read_released_TOOLTIP= "当按钮%1松开时";
+Blockly.Msg.ai_k210_led_light_up_TOOLTIP= "设置%1点亮";
+Blockly.Msg.ai_basic_light_up_led_analog_TOOLTIP= "设置%1的灯光亮度";
+Blockly.Msg.ai_k210_led_light_off_TOOLTIP= "设置%1熄灭";
+Blockly.Msg.ai_system_restart_TOOLTIP= "重启系统";
+Blockly.Msg.ai_system_off_TOOLTIP= "关机";
+Blockly.Msg.ai_system_refresh_TOOLTIP= "刷新文件目录";
+Blockly.Msg.ai_system_run_TOOLTIP= "运行指定路径的Python程序";
+
+Blockly.Msg.ai_mphone_init_TOOLTIP= "麦克风初始化";
+Blockly.Msg.mphone_audio_spectrum_init_TOOLTIP= "开始读取音频频谱";
+Blockly.Msg.ai_mphone_read_sound_sensitivity_TOOLTIP= "获取麦克风采集的音频频谱";
+Blockly.Msg.ai_mphone_Record_audio_init_TOOLTIP = "麦克风录制音频初始化";
+Blockly.Msg.ai_mphone_Record_audio_start_TOOLTIP = "开始录制音频并保存";
+Blockly.Msg.ai_audio_stop_recording_TOOLTIP = "停止录制音频";
+
+Blockly.Msg.ai_img_save_TOOLTIP= "将画布保存至本地,并设置图像压缩质量";
+Blockly.Msg.ai_lcd_invert_color_TOOLTIP = "将画布进行颜色反转";
+Blockly.Msg.ai_lcd_resizecanvas_TOOLTIP = "将画布调整至指定的尺寸";
+Blockly.Msg.ai_lcd_color_scheme_TOOLTIP = "将画布转换为%1";
+Blockly.Msg.ai_lcd_img_cut_TOOLTIP = "将画布进行指定的裁剪处理";
+Blockly.Msg.ai_vision_color_analyze_TOOLTIP = "获取画布中指定区域的颜色分析结果";
+Blockly.Msg.ai_vision_find_blobs_TOOLTIP = "从画布中寻找指定的颜色色块";
+Blockly.Msg.ai_vision_get_threshold_default_TOOLTIP = "设置获取用于颜色追踪的默认颜色为%1";
+Blockly.Msg.ai_vision_get_blobs_TOOLTIP = "获取追踪指定颜色的识别结果";
+Blockly.Msg.ai_vision_get_statistics_TOOLTIP = "获取对画布进行颜色信道信息分析的结果";
+Blockly.Msg.ai_vision_get_histogram_TOOLTIP = "获取从画布中进行标准化直方图运算的结果";
+Blockly.Msg.ai_vision_get_histogram_percentile_TOOLTIP = "从直方图计算结果获取直方图频道的CDF计算值";
+Blockly.Msg.ai_vision_get_histogram_percentile_detail_TOOLTIP = "从直方图计算结果获取的百分比值中的%1";
+Blockly.Msg.ai_vision_lab_rgb_conversion_TOOLTIP = "运行颜色制式转换 %1";
+Blockly.Msg.ai_vision_rgb_grayscale_conversion_TOOLTIP = "运行颜色制式转换 %1";
+Blockly.Msg.ai_vision_find_qrcode_TOOLTIP = "获取画布中QR码的检测结果";
+Blockly.Msg.ai_vision_qrcode_get_info_TOOLTIP = "从变量中获取检测QR码的%1";
+Blockly.Msg.ai_vision_find_apriltag_TOOLTIP = "获取画布中AprilTag的检测结果";
+Blockly.Msg.ai_vision_apriltag_get_info_TOOLTIP = "从变量中获取检测AprilTag的%1";
+Blockly.Msg.ai_vision_find_datamatrices_TOOLTIP = "获取画布中数据矩阵的检测结果";
+Blockly.Msg.ai_vision_datamatrices_get_info_TOOLTIP = "从变量中获取检测数据矩阵的%1";
+Blockly.Msg.ai_vision_find_barcodes_TOOLTIP = "获取画布中条形码的检测结果";
+Blockly.Msg.ai_vision_barcodes_get_info_TOOLTIP = "从变量中获取检测条形码的%1";
+Blockly.Msg.ai_vision_find_circles_TOOLTIP = "从画布中寻找圆形";
+Blockly.Msg.ai_vision_get_circles_TOOLTIP = "获取寻找圆形的结果";
+Blockly.Msg.ai_vision_find_rects_TOOLTIP = "从画布中寻找矩形";
+Blockly.Msg.ai_vision_get_rects_TOOLTIP = "获取寻找矩形的结果";
+Blockly.Msg.ai_vision_find_lines_TOOLTIP = "从画布中寻找直线";
+Blockly.Msg.ai_vision_get_lines_TOOLTIP = "获取寻找直线的结果";
+
+// ai_video
+Blockly.Msg.ai_video_set_TOOLTIP = "播放视频要求:视频文件格式——AVI,视频编码格式——MJPG,音频编码格式——PCM";
+Blockly.Msg.ai_video_status_TOOLTIP = "获取视频播放的状态";
+Blockly.Msg.ai_video_stop_play_TOOLTIP = "结束视频文件播放";
+
+// ai_audio
+Blockly.Msg.speech_recognition_new_setup_TOOLTIP = "语音识别初始化";
+Blockly.Msg.speech_recognition_new_recording_sample_start_TOOLTIP = "开始录制语音片段";
+Blockly.Msg.speech_recognition_new_start_recognition_TOOLTIP = "开始进行语音识别";
+Blockly.Msg.speech_recognition_new_recognition_get_result_TOOLTIP = "语音识别的结果为指定片段";
+Blockly.Msg.speech_recognition_new_recognition_get_any_result_TOOLTIP = "当语音识别获得任意结果的时候,执行下列操作";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_setup_TOOLTIP = "语音转拼音初始化";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result_TOOLTIP = "获取语音转拼音的结果";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_TOOLTIP = "设置语音拼音识别参数";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_start_recognition_TOOLTIP = "开始语音拼音识别";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition_TOOLTIP = "终止语音拼音识别";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition_TOOLTIP = "暂停语音拼音识别";
+
+// ai_models
+Blockly.Msg.ai_model_allinit_TOOLTIP = "初始化%1";
+Blockly.Msg.ai_model_allload_TOOLTIP = "加载%1";
+Blockly.Msg.ai_model_index_mnist_TOOLTIP = "获取手写数字检测模型的检测结果";
+Blockly.Msg.ai_model_get_TOOLTIP = "从变量中获取检测到的待测物体的%1";
+Blockly.Msg.ai_model_look_TOOLTIP = "检测到待测物体";
+Blockly.Msg.ai_model_look_attribute_TOOLTIP = "待测物体属性";
+Blockly.Msg.ai_model_xy_TOOLTIP = "从变量中获取检测到的人脸的%1";
+Blockly.Msg.ai_model_human_xy_TOOLTIP = "从变量中获取检测到的人体的%1";
+Blockly.Msg.ai_model_face_TOOLTIP = "检测到人脸";
+Blockly.Msg.ai_model_face_attribute_TOOLTIP = "人脸属性";
+Blockly.Msg.ai_model_customized_init_setup_definition_TOOLTIP = "在自定义模型的程序运行前,进行内存的释放";
+Blockly.Msg.ai_model_customized_init_setup_TOOLTIP = "初始化自定义模型";
+Blockly.Msg.ai_model_customized_load_setup_TOOLTIP = "加载自定义模型";
+Blockly.Msg.ai_model_customized_if_got_TOOLTIP = "识别到了自定义模型的对象";
+Blockly.Msg.ai_model_customized_attribute_TOOLTIP = "自定义模型对象属性";
+Blockly.Msg.ai_model_customized_get_result_TOOLTIP = "从变量中获取识别到自定义模型结果的%1";
+
+Blockly.Msg.ai_model_face_setup_TOOLTIP = "自定义人脸识别初始化";
+Blockly.Msg.ai_model_face_init_TOOLTIP = "自定义初始化人脸识别模型";
+Blockly.Msg.ai_face_detection_model_TOOLTIP = "初始化人脸检测模型";
+Blockly.Msg.ai_face_point_detection_model_TOOLTIP = "初始化人脸5点关键点检测模型";
+Blockly.Msg.ai_face_Vitter_eigenvalue_model_TOOLTIP = "初始化人脸196维特征值模型";
+Blockly.Msg.ai_model_face_load_point_detection_model_TOOLTIP = "加载人脸5点关键点检测模型,并进行一定的设置";
+Blockly.Msg.ai_model_Calculation_of_196_eigenvalues_TOOLTIP = "计算运行人脸特征模型后的196维特征值";
+Blockly.Msg.ai_model_class_TOOLTIP = "自定义初始化物体识别模型";
+Blockly.Msg.ai_model_getface_TOOLTIP = "识别到了人脸模型的对象";
+Blockly.Msg.ai_model_getclass_TOOLTIP = "识别到了物体模型的对象";
+
+Blockly.Msg.ai_model_face_start_recognition_TOOLTIP = "加载人脸检测模型,并设置图像源";
+Blockly.Msg.ai_model_face_model_load_finish_TOOLTIP = "人脸检测模型加载完成";
+Blockly.Msg.ai_model_face_gather_TOOLTIP = "采集新的人脸数据并保存人脸数据";
+Blockly.Msg.ai_model_face_data_load_TOOLTIP = "加载已保存的人脸数据";
+Blockly.Msg.ai_model_face_model_list_TOOLTIP = "人脸检测属性";
+Blockly.Msg.ai_model_face_gather_num_judge_TOOLTIP = "人脸采集完成";
+Blockly.Msg.ai_model_face_recognition_TOOLTIP = "采集或者加载完成人脸数据并进行人脸识别";
+Blockly.Msg.ai_model_face_recognition_get_result_TOOLTIP = "人脸识别获得任意结果";
+Blockly.Msg.ai_model_show_face_TOOLTIP = "处理图像并显示";
+
+Blockly.Msg.ai_model_class_setup_TOOLTIP = "自定义物体识别初始化";
+Blockly.Msg.ai_class_model_TOOLTIP = "初始化自定义物体特征提取模型";
+Blockly.Msg.ai_class_model_cluster_TOOLTIP = "初始化自定义物体聚类参数";
+Blockly.Msg.ai_model_class_start_load_TOOLTIP = "设置图像源并对图像进行处理";
+Blockly.Msg.ai_model_class_gather_TOOLTIP = "开始采集物体";
+Blockly.Msg.ai_model_class_data_load_TOOLTIP = "加载物体数据";
+Blockly.Msg.ai_model_class_gather_load_finish_TOOLTIP = "采集或者加载完成物体数据";
+Blockly.Msg.ai_model_class_cluster_train_TOOLTIP = "开始进行物体特征提取,然后加以聚类训练";
+Blockly.Msg.ai_model_class_recognition_TOOLTIP = "开始进行物体识别";
+
+// ai_wifi
+Blockly.Msg.k210_wifi_enable_disable_TOOLTIP = "设定Wi-Fi为%1";
+Blockly.Msg.k210_wifi_scan_TOOLTIP = "开始扫描附近Wi-Fi热点";
+Blockly.Msg.k210_wifi_scan_get_TOOLTIP = "获取Wi-Fi扫描的结果为列表形式";
+Blockly.Msg.k210_wifi_connect_hotspot_TOOLTIP = "连接指定的Wi-Fi网络";
+Blockly.Msg.k210_wifi_get_connection_status_TOOLTIP = "获取Wi-Fi连接的状态";
+Blockly.Msg.k210_wifi_get_config_TOOLTIP = "获取Wi-Fi连接的设备指定信息";
+
+// ai_lcd
+Blockly.Msg.ai_lcd_screeninit_TOOLTIP = "LCD屏幕初始化";
+Blockly.Msg.ai_lcd_rotation_TOOLTIP = "将LCD屏幕方向旋转指定的角度";
+Blockly.Msg.ai_lcd_filp_TOOLTIP = "是否将LCD屏幕进行镜面翻转";
+Blockly.Msg.ai_lcd_screen_TOOLTIP = "将LCD屏幕填充颜色为%1";
+Blockly.Msg.ai_lcd_fill_screen_with_rgb_TOOLTIP = "将LCD屏幕填充颜色为指定rgb值";
+Blockly.Msg.ai_lcd_clear_TOOLTIP = "清除屏幕";
+Blockly.Msg.ai_lcd_rgb_value_input_TOOLTIP = "返回指定的rgb值";
+Blockly.Msg.ai_lcd_XY_TOOLTIP = "返回指定的x和y";
+Blockly.Msg.ai_lcd_WH_TOOLTIP = "返回指定的宽与高";
+Blockly.Msg.ai_lcd_createnonecarvas_TOOLTIP = "创建指定尺寸的空白画布";
+Blockly.Msg.ai_lcd_fillcanvas_TOOLTIP = "将画布铺满指定的颜色";
+Blockly.Msg.ai_lcd_createcarvas_TOOLTIP = "创建图像画布";
+Blockly.Msg.ai_lcd_showcarvas_set_cord_TOOLTIP = "设置画布的起始点坐标";
+Blockly.Msg.ai_lcd_textcarvas_TOOLTIP = "在画布上绘制文本";
+Blockly.Msg.ai_lcd_characterscarvas_TOOLTIP = "在画布上绘制汉字字符";
+Blockly.Msg.ai_lcd_linecarvas_TOOLTIP = "在画布上绘制直线";
+Blockly.Msg.ai_lcd_ractanglecarvas_TOOLTIP = "在画布上绘制%1矩形";
+Blockly.Msg.ai_lcd_drawcirclecarvas_TOOLTIP = "在画布上绘制%1圆形";
+Blockly.Msg.ai_lcd_draw_cross_sign_TOOLTIP = "在画布上绘制十字标";
+Blockly.Msg.ai_lcd_draw_arrow_sign_TOOLTIP = "在画布上绘制箭头";
+Blockly.Msg.ai_lcd_draw_image_on_canvas_TOOLTIP = "在画布上绘制图片";
+Blockly.Msg.ai_lcd_draw_sensor_image_on_canvas_TOOLTIP = "在画布上绘制相机捕捉的图像";
+Blockly.Msg.ai_lcd_showcarvas_set_display_TOOLTIP = "显示画布";
+Blockly.Msg.ai_lcd_clearcanvas_TOOLTIP = "清除画布中的所有内容";
+Blockly.Msg.ai_lcd_qrcode_TOOLTIP = "在画布上绘制二维码";
+
+// ai_led
+Blockly.Msg.ai_led_matrix_setup_TOOLTIP= "A.I.模块初始化LED灯屏";
+Blockly.Msg.ai_led_matrix_set_bright_TOOLTIP= "设置灯屏亮度";
+Blockly.Msg.ai_led_matrix_xy_TOOLTIP= "设置行列";
+Blockly.Msg.ai_led_matrix_wh_TOOLTIP= "设置宽高";
+Blockly.Msg.ai_led_matrix_rgb_value_input_TOOLTIP= "返回指定rgb值";
+Blockly.Msg.ai_led_matrix_draw_pixel_TOOLTIP= "A.I.模块LED灯屏绘制点";
+Blockly.Msg.ai_led_matrix_draw_rectangle_TOOLTIP= "A.I.模块LED灯屏绘制矩形";
+Blockly.Msg.ai_led_matrix_show_above_TOOLTIP= "显示图案";
+Blockly.Msg.ai_led_matrix_clear_screen_TOOLTIP= "清除灯屏";
+
+// ai_speaker
+Blockly.Msg.ai_audio_init_speaker_TOOLTIP = "喇叭初始化";
+Blockly.Msg.ai_audio_play_song_speaker_TOOLTIP = "播放音频文件(单个循环)";
+Blockly.Msg.ai_audio_play_song_speaker_list_loop_TOOLTIP = "播放音频文件(顺序播放)";
+Blockly.Msg.ai_audio_play_music_file_list_random_TOOLTIP = "播放音频文件(随机播放)";
+Blockly.Msg.ai_audio_play_state_speaker_TOOLTIP = "获取音频文件播放状态";
+Blockly.Msg.ai_audio_play_finish_speaker_TOOLTIP = "结束音频文件播放";
+Blockly.Msg.ai_audio_set_speaker_TOOLTIP = "设置音频文件播放音量";
+Blockly.Msg.ai_audio_files_list_TOOLTIP = "获取当前路径的音频文件列表";
+
+// ai_camera
+Blockly.Msg.ai_camera_init_TOOLTIP = "相机初始化";
+Blockly.Msg.ai_camera_fit_to_screen_size_TOOLTIP = "设置相机捕捉画面的尺寸";
+Blockly.Msg.ai_camera_windows_TOOLTIP = "调整相机捕捉的图像尺寸";
+Blockly.Msg.ai_camera_snapshot_TOOLTIP = "获取相机捕捉的图像";
+Blockly.Msg.ai_camera_lens_corr_TOOLTIP = "纠正广角镜头画面";
+Blockly.Msg.ai_camera_image_property_change_TOOLTIP = "设置摄像头图像%1的状态";
+Blockly.Msg.ai_camera_bcs_operation_TOOLTIP = "设置摄像头图像的%1";
+Blockly.Msg.ai_video_record_setup_TOOLTIP = "开始录制视频并保存";
+Blockly.Msg.ai_video_get_TOOLTIP = "对画布进行录制";
+Blockly.Msg.ai_video_stop_TOOLTIP = "停止录制视频";
+
+// ai_motor
+Blockly.Msg.ai_motor_setup_TOOLTIP = "A.I.模块电机驱动初始化";
+Blockly.Msg.ai_motor_run_TOOLTIP = "A.I.模块设置指定电机以指定速度进行指定方向的转动";
+
+// ai_EFSG
+Blockly.Msg.extension_servo_setup_on_ai_TOOLTIP = "模块舵机初始化";
+Blockly.Msg.extension_servo_write_on_ai_TOOLTIP = "模块设置位于指定引脚的舵机转动至指定角度";
+
+// ai_EFGH
+Blockly.Msg.x_ai_read_gamepad_button_pressed_TOOLTIP= "当游戏手柄上的按键%1按下时";
+Blockly.Msg.x_ai_read_gamepad_button_released_TOOLTIP= "当游戏手柄上的按键%1松开时";
+Blockly.Msg.x_ai_read_gamepad_button_xr_TOOLTIP= "获取游戏手柄上按键%1的电平值";
+Blockly.Msg.x_ai_read_gamepad_joystick_check_TOOLTIP= "当游戏手柄上的摇杆%1";
+Blockly.Msg.x_ai_read_gamepad_joystick_TOOLTIP= "获取游戏手柄上摇杆%1的模拟数值";
+
+Blockly.Msg.CocoRobo_try_except_TOOLTIP= "检测try语句块中的错误,从而让except语句捕获异常信息并处理";
+Blockly.Msg.CocoRobo_try_except_finally_TOOLTIP= "检测try语句块中的错误,从而让except语句捕获异常信息并处理,并且无论异常是否产生都要执行finally语句";
+
+Blockly.Msg.Pedometer_Init_TOOLTIP="初始化计步器";
+Blockly.Msg.Pedometer_Run_TOOLTIP="运行计步器";
+Blockly.Msg.Pedometer_Get_TOOLTIP="获取计数";
+
+Blockly.Msg.ai_vision_canvas_area_tuple_TOOLTIP = "创建区域元组";
+Blockly.Msg.ai_vision_lane_tracking_setup_TOOLTIP = "道路循线识别初始化";
+Blockly.Msg.ai_vision_from_canvas_TOOLTIP = "运行道路循线识别";
+Blockly.Msg.ai_vision_lane_tracking_run_get_TOOLTIP = "获取道路循线识别的结果";
+
+
+/* mlx90614 */
+Blockly.Msg.MLX90614_SETUP_TOOLTIP = "%1 MLX90614传感器初始化";
+Blockly.Msg.MLX90614_READ_AMBIENT_TOOLTIP = "从 MLX90614 获取当前环境温度";
+Blockly.Msg.MLX90614_READ_OBJECT_TOOLTIP = "从 MLX90614 获取目标物体温度";
+
+/* DHT11 or DHT22 */
+Blockly.Msg.DHT_SETUP_TOOLTIP = "%1 DHT传感器初始化";
+
+/* PM2.5 */
+Blockly.Msg.PM25_SETUP_TOOLTIP = "%1 PM2.5传感器初始化";
+Blockly.Msg.PM25_REDD_DATA_TOOLTIP = "获取PM2.5数值";
+
+/* RTC */
+Blockly.Msg.RTC_setup_TOOLTIP = "RTC模块初始化";
+Blockly.Msg.RTC_setDateTime_TOOLTIP = "设置日期时间周数";
+Blockly.Msg.RTC_GETDATE_TOOLTIP = "获取当前日期%1";
+Blockly.Msg.RTC_GETTIME_TOOLTIP = "获取当前时间%1";
+Blockly.Msg.RTC_getWeek_TOOLTIP = "获取当前周数";
+Blockly.Msg.RTC_SETDATE_TOOLTIP = "设置当前日期%1为特定值";
+Blockly.Msg.RTC_SETTIME_TOOLTIP = "设置当前时间%1为特定值";
+Blockly.Msg.RTC_setWeek_TOOLTIP = "设置当前周数为特定值";
+Blockly.Msg.RTC_getDateTime_TOOLTIP = "获取日期时间周数";
+
+/* robot dog */
+Blockly.Msg.robot_dog_movement_action_TOOLTIP = "语音操控机器狗";
+Blockly.Msg.robot_dog_phonetic_to_pinyin_get_result_TOOLTIP = "获取语音识别的结果";
+Blockly.Msg.robot_dog_setup_TOOLTIP = "机器狗初始化";
+Blockly.Msg.robot_dog_action_TOOLTIP = "机器狗执行%1指令";
+Blockly.Msg.robot_dog_servo_movement_TOOLTIP = "设置特定腿特定关节舵机转动至特定的角度";
+Blockly.Msg.robot_dog_servo_speed_TOOLTIP = "设置特定速度为%1";
+Blockly.Msg.robot_dog_servo_movement_location_TOOLTIP = "设置特定腿足尖特定方向的位置为特定值";
+Blockly.Msg.robot_dog_open_gyroscope_TOOLTIP = "%1陀螺仪";
+Blockly.Msg.robot_dog_open_performance_mode_TOOLTIP = "%1机器狗表演模式";
+Blockly.Msg.robot_dog_open_calibration_mode_TOOLTIP = "%1机器狗标定模式";
+Blockly.Msg.robot_dog_get_power_TOOLTIP = "获取机器狗当前的电量";
+Blockly.Msg.robot_dog_servo_movement_distance_TOOLTIP = "设置机器狗执行%1方向平移运动步长为特定值";
+Blockly.Msg.robot_dog_servo_movement_rotate_TOOLTIP = "设置机器狗执行%1方向旋转运动转动速度为特定值";
+Blockly.Msg.robot_dog_servo_movement_standing_still_TOOLTIP = "设置机器狗以特定的抬腿高度以固定频率执行原地踏步";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_TOOLTIP = "设置机器狗执行%1方向平移运动步长为特定值持续特定秒";
+Blockly.Msg.robot_dog_servo_movement_rotate_cycle_TOOLTIP = "设置机器狗执行%1方向旋转运动转动速度为特定值持续特定秒";
+Blockly.Msg.robot_dog_servo_movement_standing_still_cycle_TOOLTIP = "设置机器狗以特定的抬腿高度以固定频率执行原地踏步持续特定秒";
+Blockly.Msg.robot_dog_servo_movement_distance_still_TOOLTIP = "设置机器狗%1方向平移特定毫米";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_TOOLTIP = "设置机器狗以特定周期向%1方向往复平移";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_TOOLTIP = "设置机器狗绕%1轴旋转特定值";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_TOOLTIP = "设置机器狗以特定周期绕%1轴往复转动";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_stop_TOOLTIP = "停止机器狗向%1方向周期往复平移";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_stop_TOOLTIP = "停止机器狗绕%1轴周期往复转动";
+Blockly.Msg.robot_dog_get_servo_angle_TOOLTIP = "获取特定腿特定关节舵机的角度";
+Blockly.Msg.robot_dog_get_rotate_angle_TOOLTIP = "获取陀螺仪%1轴的角度";
+
+/* uav */
+Blockly.Msg.Take_off_TOOLTIP = "设置指定编号无人机的起飞高度为指定厘米";
+Blockly.Msg.uav_fly_mode_TOOLTIP = "设置指定编号无人机切换指定飞行模式";
+Blockly.Msg.xy_speed_TOOLTIP = "设置指定编号无人机的水平速度为指定值";
+Blockly.Msg.z_speed_TOOLTIP = "设置指定编号无人机的垂直速度为指定值";
+Blockly.Msg.follow_line_TOOLTIP = "设置指定编号无人机向指定方向巡线飞行";
+Blockly.Msg.mobile_distance_TOOLTIP = "设置指定编号无人机向指定方向飞行指定距离";
+Blockly.Msg.move_search_dot_TOOLTIP = "并寻找黑色小块";
+Blockly.Msg.move_search_tag_TOOLTIP = "并寻找指定标签";
+Blockly.Msg.move_search_blob_TOOLTIP = "并寻找指定色块";
+Blockly.Msg.go_to_TOOLTIP = "设置指定编号无人机直达指定标签";
+Blockly.Msg.go_to_tag_TOOLTIP = "并设置指定高度";
+Blockly.Msg.uav_rotation_TOOLTIP = "设置指定编号无人机旋转指定角度";
+Blockly.Msg.uav_fly_height_TOOLTIP = "设置指定编号无人机的高度";
+Blockly.Msg.filp_ctrl_TOOLTIP = "设置指定编号无人机向指定方向旋转指定的圈数";
+Blockly.Msg.led_ctrl_TOOLTIP = "设置指定编号无人机的灯光颜色";
+Blockly.Msg.off_led_ctrl_TOOLTIP = "设置指定编号无人机关闭灯光";
+Blockly.Msg.uav_detection_TOOLTIP = "设置指定编号无人机检测指定物体";
+Blockly.Msg.mangne_ctrl_TOOLTIP = "设置指定编号无人机操作电磁铁";
+Blockly.Msg.servo_ctrl_TOOLTIP = "设置指定编号无人机的舵机角度为指定值";
+Blockly.Msg.role_ctrl_TOOLTIP = "设置指定编号无人机的命令为指定命令";
+Blockly.Msg.lock_dir_TOOLTIP = "设置指定编号无人机管理机头方向";
+Blockly.Msg.shoot_crtl_TOOLTIP = "设置指定编号无人机发射激光";
+Blockly.Msg.switch_crtl_TOOLTIP = "设置指定编号无人机的状态为打开或关闭";
+Blockly.Msg.ai_crtl_TOOLTIP = "设置指定编号无人机AI切换到指定模式";
+Blockly.Msg.ai_learing_TOOLTIP = "设置指定编号无人机学习的ID为指定值";
+Blockly.Msg.ai_forget_TOOLTIP = "设置指定编号无人机忘记所有学习的数据";
+Blockly.Msg.ai_set_name_TOOLTIP = "设置指定编号无人机指定ID的名字为指定值";
+Blockly.Msg.ai_save_img_TOOLTIP = "设置指定编号无人机拍照或截图的照片保存到SD卡上";
+Blockly.Msg.fly_ctrl_TOOLTIP = "设置指定编号无人机的状态";
+Blockly.Msg.uav_detection_if_TOOLTIP = "指定编号无人机检测到指定物体";
+Blockly.Msg.uav_detection_if_line_TOOLTIP = "指定编号无人机检测到指定方向有线";
+Blockly.Msg.uav_get_distance_of_obstacles_TOOLTIP = "获取指定编号无人机指定方向的障碍物距离";
+Blockly.Msg.uav_get_value_TOOLTIP = "获取指定编号无人机的指定值";
+Blockly.Msg.uav_get_AI_value_TOOLTIP = "获取指定编号无人机的AI识别结果";
+Blockly.Msg.uav_get_electronic_balance_value_TOOLTIP = "获取指定编号无人机的电子秤读数";
+Blockly.Msg.uav_get_shooting_value_TOOLTIP = "获取指定编号无人机的射击数据";
+Blockly.Msg.uav_get_msg_value_TOOLTIP = "获取指定编号无人机的消息数据";
+
+/* expand */
+Blockly.Msg.esp32_expand_io_from_digital_pin_TOOLTIP = "获取引脚 #%1的数字信号数值";
+Blockly.Msg.esp32_expand_io_set_digital_pin_TOOLTIP = "设置引脚 #%1为指定电平";
+Blockly.Msg.esp32_expand_io_set_analog_pin_TOOLTIP = "设置引脚 #%1 PWM输出指定的值";
+
+/* KUJU */
+Blockly.Msg.iot_service_KUJU_setup_TOOLTIP = "通过账号和密码连接KUJU";
+Blockly.Msg.iot_service_KUJU_controll_TOOLTIP = "发送数据至KUJU控制智能插座";
+Blockly.Msg.iot_service_KUJU_get_temperature_humidity_data_TOOLTIP = "获取温度传感器的特定数值";
+Blockly.Msg.iot_service_KUJU_get_motion_data_TOOLTIP = "获取移动感应器的特定数值";
+Blockly.Msg.iot_service_KUJU_get_sensor_data_TOOLTIP = "获取特定传感器的特定数值";
+
+// Wetech
+Blockly.Msg.wifiServices_WeTech_setup_TOOLTIP = "连接WeTech下特定账户的特定网关";
+Blockly.Msg.wifiServices_WeTech_controll_derail_TOOLTIP = "发送数据至WeTech控制特定的三路灯面制开关的开与关";
+Blockly.Msg.wifiServices_WeTech_controll_derail_second_way_TOOLTIP = "发送数据至WeTech控制特定的二路灯面制开关的开与关";
+Blockly.Msg.wifiServices_WeTech_controll_derail_curtain_sensor_TOOLTIP = "发送数据至WeTech控制特定的Curtain Sensor (for projector Screen)的状态";
+Blockly.Msg.wifiServices_WeTech_controll_derail_air_conditioning_mode_TOOLTIP = "发送数据至WeTech控制特定冷气IR的模式";
+Blockly.Msg.wifiServices_WeTech_controll_derail_wind_speed_mode_TOOLTIP = "发送数据至WeTech控制特定冷气IR的风速";
+Blockly.Msg.wifiServices_WeTech_controll_derail_temp_TOOLTIP = "发送数据至WeTech控制特定冷气IR的温度";
+Blockly.Msg.wifiServices_WeTech_controll_derail_all_mode_TOOLTIP = "发送数据至WeTech控制特定冷气IR";
+Blockly.Msg.wifiServices_WeTech_controll_derail_IR_TOOLTIP = "发送数据至WeTech控制特定TV IR (for TV and Projector)";
+Blockly.Msg.wifiServices_WeTech_controll_derail_get_power_meter_TOOLTIP = "获取Power Meter的值";
+Blockly.Msg.wifiServices_WeTech_controll_derail_get_sensor_number_TOOLTIP = "获取%1的值";
+
+// tuya
+Blockly.Msg.iot_service_tuya_TOOLTIP = "通过Access ID和Access Secret连接涂鸦";
+Blockly.Msg.iot_service_tuya_setToken_TOOLTIP = "当连接涂鸦获取到访问令牌的时候,执行下列操作";
+Blockly.Msg.iot_service_tuya_controll_light_belt_TOOLTIP = "控制智能灯带为某一特定状态";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_TOOLTIP = "控制智能灯带颜色为特定值";
+
+// turtle
+Blockly.Msg.TURTLE_CREATE_NE_TURTLE_TLTLE_TOOLTIP = "创建一个新的海龟";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_TOOLTIP = "让海龟往前走指定的值";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_TOOLTIP = "让海龟往后走指定的值";
+Blockly.Msg.TURTLE_MAKE_TURN_LEFT_TOOLTIP = "让海龟向左转指定的角度";
+Blockly.Msg.TURTLE_MAKE_TURN_RIGHT_TOOLTIP = "让海龟向右转指定的角度";
+Blockly.Msg.TURTLE_MAKE_TURRLE_COLOR_TOOLTIP = "设置海龟画笔的颜色";
+Blockly.Msg.TURTLE_MAKE_TURRLE_PEN_TOOLTIP = "让海龟画笔%1";
+Blockly.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X_TOOLTIP = "让海龟去指定的位置";
+Blockly.Msg.TURTLE_MAKE_TURTLE_SET_POSITION_TOOLTIP = "设置海龟画笔的位置";
+Blockly.Msg.TURTLE_MAKE_SET_HEADING_TOOLTIP = "让海龟旋转至指定的角度";
+Blockly.Msg.TURTLE_RESET_TOOLTIP = "重置画笔位置";
+Blockly.Msg.TURTLE_CLEAR_TOOLTIP = "清除所有内容";
+
+Blockly.Msg.ADD_COMMENT = "添加注释";
+Blockly.Msg.ARD_ANALOGREAD = "读取模拟接口#";
+Blockly.Msg.ARD_ANALOGREAD_TIP = "返回0到1024中的一个值";
+Blockly.Msg.ARD_ANALOGWRITE = "设置模拟接口#";
+Blockly.Msg.ARD_ANALOGWRITE_TIP = "将0到255之间的一个模拟值写入到特定的脉宽调制端口";
+Blockly.Msg.ARD_BUILTIN_LED = "设置内置LED灯";
+Blockly.Msg.ARD_BUILTIN_LED_TIP = "设置Arduino版上的内置LED灯状态为开或者关";
+Blockly.Msg.ARD_COMPONENT_WARN1 = "A %1 configuration block with the same %2 name must be added to use this block!";  // untranslated
+Blockly.Msg.ARD_DEFINE = "Define";  // untranslated
+Blockly.Msg.ARD_DIGITALREAD = "读取数字接口#";
+Blockly.Msg.ARD_DIGITALREAD_TIP = "从一端口读取数字值:高电平或低电平";
+Blockly.Msg.ARD_DIGITALWRITE = "设置数字接口#";
+Blockly.Msg.ARD_DIGITALWRITE_TIP = "将数字值高电平或低电平写入特定端口";
+Blockly.Msg.ARD_FUN_RUN_LOOP = "CocoBlockly不断执行:";
+Blockly.Msg.ARD_FUN_RUN_SETUP = "CocoBlockly先执行:";
+Blockly.Msg.ARD_FUN_RUN_TIP = "定义Arduino setup() 和 loop() 函数。";
+Blockly.Msg.ARD_HIGH = "高";
+Blockly.Msg.ARD_HIGHLOW_TIP = "Set a pin state logic High or Low.";  // untranslated
+Blockly.Msg.ARD_LOW = "低";
+Blockly.Msg.ARD_MAP = "映射";
+Blockly.Msg.ARD_MAP_TIP = "Re-maps a number from [0-1024] to another.";  // untranslated
+Blockly.Msg.ARD_MAP_VAL = "值从[0-";
+Blockly.Msg.ARD_NOTONE_PIN = "No tone";  // untranslated
+Blockly.Msg.ARD_NOTONE_PIN_TIP = "Stop generating a tone on a pin";  // untranslated
+Blockly.Msg.ARD_PIN_WARN1 = "Pin %1 is needed for %2 as pin %3. Already used as %4.";  // untranslated
+Blockly.Msg.ARD_PULSEON = "脉冲从接口#";
+Blockly.Msg.ARD_PULSEREAD = "读取";
+Blockly.Msg.ARD_PULSETIMEOUT = "超时时间:";
+Blockly.Msg.ARD_PULSETIMEOUT_MS = "";  // untranslated
+Blockly.Msg.ARD_PULSETIMEOUT_TIP = "测量所选接口上脉冲的持续时间,如果其在超时时间内";
+Blockly.Msg.ARD_PULSE_TIP = "测量所选接口上脉冲的持续时间";
+Blockly.Msg.ARD_PWMWRITE = "设置PWM接口#";
+Blockly.Msg.ARD_SERIAL_AVAILABLE = "可用";
+Blockly.Msg.ARD_SERIAL_BPS = "比特/秒";
+Blockly.Msg.ARD_SERIAL_PRINT = "串口打印";
+Blockly.Msg.ARD_SERIAL_PRINT_NEWLINE = "添加新行";
+Blockly.Msg.ARD_SERIAL_PRINT_TIP = "将数据以可读的ASCII文本形式打印到控制台或串行端口";
+Blockly.Msg.ARD_SERIAL_PRINT_WARN = "Serial相关的初始化积木需要被添加";
+Blockly.Msg.ARD_SERIAL_READ = "读取";
+Blockly.Msg.ARD_SERIAL_SETUP = "设置";
+Blockly.Msg.ARD_SERIAL_SETUP_TIP = "选择特定的串行外设的速度";
+Blockly.Msg.ARD_SERIAL_SPEED = "速度为";
+Blockly.Msg.ARD_SERIAL_WRITE = "写出";
+Blockly.Msg.ARD_SERVO_READ = "读取舵机信息,设置接口为PIN#";
+Blockly.Msg.ARD_SERVO_READ_TIP = "读取舵机的角度";
+Blockly.Msg.ARD_SERVO_SETUP = "舵机初始化";
+Blockly.Msg.ARD_SERVO_WRITE = "定义舵机接口为";
+Blockly.Msg.ARD_SERVO_WRITE_DEG_180 = "度 (0~180)";
+Blockly.Msg.ARD_SERVO_WRITE_TIP = "设置舵机转动一定的角度";
+Blockly.Msg.ARD_SERVO_WRITE_TO = "设置其转动角度为";
+Blockly.Msg.ARD_SPI_SETUP = "设置";
+Blockly.Msg.ARD_SPI_SETUP_CONF = "配置";
+Blockly.Msg.ARD_SPI_SETUP_DIVIDE = "时钟分频";
+Blockly.Msg.ARD_SPI_SETUP_LSBFIRST = "LSBFIRST";  // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE = "SPI模式(空 - 边界)";
+Blockly.Msg.ARD_SPI_SETUP_MODE0 = "0 (Low - Falling)";  // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE1 = "1 (Low - Rising)";  // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE2 = "2 (High - Falling)";  // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE3 = "3 (High - Rising)";  // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MSBFIRST = "MSBFIRST";  // untranslated
+Blockly.Msg.ARD_SPI_SETUP_SHIFT = "数据传输";
+Blockly.Msg.ARD_SPI_SETUP_TIP = "配置SPI外设";
+Blockly.Msg.ARD_SPI_TRANSRETURN_TIP = "Send a SPI message to an specified slave device and get data back.";  // untranslated
+Blockly.Msg.ARD_SPI_TRANS_NONE = "none";  // untranslated
+Blockly.Msg.ARD_SPI_TRANS_SLAVE = "来控制接口";
+Blockly.Msg.ARD_SPI_TRANS_TIP = "Send a SPI message to an specified slave device.";  // untranslated
+Blockly.Msg.ARD_SPI_TRANS_VAL = "转换";
+Blockly.Msg.ARD_SPI_TRANS_WARN1 = "A setup block for %1 must be added to the workspace to use this block!";  // untranslated
+Blockly.Msg.ARD_SPI_TRANS_WARN2 = "Old pin value %1 is no longer available.";  // untranslated
+Blockly.Msg.ARD_STEPPER_COMPONENT = "stepper";  // untranslated
+Blockly.Msg.ARD_STEPPER_DEFAULT_NAME = "MyStepper";  // untranslated
+Blockly.Msg.ARD_STEPPER_MOTOR = "步进电机";
+Blockly.Msg.ARD_STEPPER_PIN1 = "接口1#':";
+Blockly.Msg.ARD_STEPPER_PIN2 = "接口2#':";
+Blockly.Msg.ARD_STEPPER_REVOLVS = "每转有多少步:";
+Blockly.Msg.ARD_STEPPER_SETUP = "设置步进电机名为:";
+Blockly.Msg.ARD_STEPPER_SETUP_TIP = "配置步进电机接口排列和其他设置";
+Blockly.Msg.ARD_STEPPER_SPEED = "设置转速(转/分)为";
+Blockly.Msg.ARD_STEPPER_STEP = "移动步进电机";
+Blockly.Msg.ARD_STEPPER_STEPS = "步";
+Blockly.Msg.ARD_STEPPER_STEP_TIP = "将步进电机转动一定数量的步数";
+Blockly.Msg.ARD_TIME_CHRONO_CHECK = "当秒表停至";
+Blockly.Msg.ARD_TIME_CHRONO_CHECK1 = "毫秒时";
+Blockly.Msg.ARD_TIME_CHRONO_ELAPSED = "秒表已过去的时间";
+Blockly.Msg.ARD_TIME_CHRONO_RESET = "重置秒表";
+Blockly.Msg.ARD_TIME_CHRONO_SETUP = "秒表初始化";
+Blockly.Msg.ARD_TIME_DELAY = "等待";
+Blockly.Msg.ARD_TIME_DELAY_MICROS = "微秒";
+Blockly.Msg.ARD_TIME_DELAY_MICRO_TIP = "等待一定的时间(以微秒为单位)";
+Blockly.Msg.ARD_TIME_DELAY_TIP = "等待一定的时间(以毫秒为单位)";
+Blockly.Msg.ARD_TIME_DELAY_seconds_TIP = "等待一定的时间(以秒为单位)";
+Blockly.Msg.ARD_TIME_DELAY_seconds = "秒";
+Blockly.Msg.ARD_TIME_DO = "执行";
+Blockly.Msg.ARD_TIME_DO_MS = "执行";
+Blockly.Msg.ARD_TIME_EVERY = "每隔";
+Blockly.Msg.ARD_TIME_EVERY_MS = "每隔";
+Blockly.Msg.ARD_TIME_INF = "永久等待(结束程序)";
+Blockly.Msg.ARD_TIME_INF_TIP = "无限期等待,即停止程序";
+Blockly.Msg.ARD_TIME_MICROS = "当前已过时间(微秒)";
+Blockly.Msg.ARD_TIME_MICROS_TIP = "返回自Arduino版开始执行当前程序以来的微秒数,必须以长整数型储存";
+Blockly.Msg.ARD_TIME_MILLIS = "当前已过时间(毫秒)";
+Blockly.Msg.ARD_TIME_MILLIS_TIP = "返回自Arduino版开始执行当前程序以来的毫秒数,必须以长整数型储存";
+Blockly.Msg.ARD_TIME_MS = "毫秒";
+Blockly.Msg.ARD_TIME_SECOND = "秒";
+Blockly.Msg.ARD_TIME_SECOND_MS = "毫秒";
+Blockly.Msg.ARD_TONE_FREQ = "frequency";  // untranslated
+Blockly.Msg.ARD_TONE_PIN = "Tone PIN#";  // untranslated
+Blockly.Msg.ARD_TONE_PIN_TIP = "Generate audio tones on a pin";  // untranslated
+Blockly.Msg.ARD_TYPE_ARRAY = "Array";  // untranslated
+Blockly.Msg.ARD_TYPE_BOOL = "Boolean";  // untranslated
+Blockly.Msg.ARD_TYPE_CHAR = "Character";  // untranslated
+Blockly.Msg.ARD_TYPE_CHILDBLOCKMISSING = "ChildBlockMissing";  // untranslated
+Blockly.Msg.ARD_TYPE_DECIMAL = "Decimal";  // untranslated
+Blockly.Msg.ARD_TYPE_LONG = "Large Number";  // untranslated
+Blockly.Msg.ARD_TYPE_NULL = "Null";  // untranslated
+Blockly.Msg.ARD_TYPE_NUMBER = "Number";  // untranslated
+Blockly.Msg.ARD_TYPE_SHORT = "Short Number";  // untranslated
+Blockly.Msg.ARD_TYPE_TEXT = "Text";  // untranslated
+Blockly.Msg.ARD_TYPE_UNDEF = "Undefined";  // untranslated
+Blockly.Msg.ARD_VAR_AS = "为";
+Blockly.Msg.ARD_VAR_AS_TIP = "Sets a value to a specific type";  // untranslated
+Blockly.Msg.ARD_WRITE_TO = "为";
+Blockly.Msg.AUTH = "请授权这个应用程序以保存您的作品并共享。";
+Blockly.Msg.BASIC_AS = "as";  // untranslated
+Blockly.Msg.BASIC_BLACK_OUT = "Black out";  // untranslated
+Blockly.Msg.BASIC_BRTN = "Brightness";  // untranslated
+Blockly.Msg.BASIC_BUZZER_PLAY = "Buzzer plays ";  // untranslated
+Blockly.Msg.BASIC_BUZZER_SETUP = "Buzzer Setup";  // untranslated
+Blockly.Msg.BASIC_COUNTER_SETTING = "按钮为";
+Blockly.Msg.BASIC_COUNTER_SETUP = "设置一个计数器 ";
+Blockly.Msg.BASIC_FOR = "for";  // untranslated
+Blockly.Msg.BASIC_FROM = "from";  // untranslated
+Blockly.Msg.BASIC_HZ = "Hz";  // untranslated
+Blockly.Msg.BASIC_IF_SWITCH = "If switch ";  // untranslated
+Blockly.Msg.BASIC_IS = " is ";  // untranslated
+Blockly.Msg.BASIC_LIGHT_PIN = "Light Pin#";  // untranslated
+Blockly.Msg.BASIC_LIGHT_WARNING = "亮度值必须在0到255之间";
+Blockly.Msg.BASIC_MUTE = "Mute";  // untranslated
+Blockly.Msg.BASIC_NOLCD = "关闭在接口%1上的灯光";
+Blockly.Msg.BASIC_NOTONE = "关闭在接口%1上的音调";
+Blockly.Msg.BASIC_NOTONE_TIP = "关闭所选接口上的音调输出";
+Blockly.Msg.BASIC_PIN_NUM = "Pin#";  // untranslated
+Blockly.Msg.BASIC_READBUTTON = "读取在接口%1上开关的状态";
+Blockly.Msg.BASIC_READCOUNTER = "读取计数器的数值 计数按钮为%1";
+Blockly.Msg.BASIC_READKNOB = "读取在接口%1上旋钮的数值";
+Blockly.Msg.BASIC_SET = "Set";  // untranslated
+Blockly.Msg.BASIC_SETANALOGLED = "设置在接口%1上的灯光亮度为%2";
+Blockly.Msg.BASIC_SETDIGITALLED = "打开在接口%1上的灯光";
+Blockly.Msg.BASIC_SETTONE = "设置在接口%1上的音调频率为%2";
+Blockly.Msg.BASIC_SET_PIN = "Set Pin#";  // untranslated
+Blockly.Msg.BASIC_TO = "to";  // untranslated
+Blockly.Msg.BASIC_TONE_TIP = "设置接口上的音调频率为31到65535中某个特定频率";
+Blockly.Msg.BASIC_TONE_WARNING = "频率值必须在31到65535之间";
+Blockly.Msg.BLUE = "蓝";
+Blockly.Msg.BLUETOOTH_INTERACTION_SET_CONTENT = "设定串口波特率为:";
+Blockly.Msg.BLUETOOTH_INTERACTION_TITLE = "蓝牙模块进入 AT 配置模式";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_DATA = "data";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG = "接收数据";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG_ISSUCCESS = "接收数据成功";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2 = "获取第";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2_2 = "位的数据";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE3 = "位的数据,并设置类型为";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_LINE3 = "长度为";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SENDMSG = "发送数据";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP = "蓝牙对蓝牙通信";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP1 = "对蓝牙通信";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP2 = "初始化";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED = "已接收到的列表";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED1 = "中第";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED2 = "位的值";
+Blockly.Msg.BLUETOOTH_NUMBER_RECEIVED = "已接收到的数字";
+Blockly.Msg.BLUETOOTH_PAIRING_BIND_ADDR = "绑定从属装置地址:";
+Blockly.Msg.BLUETOOTH_PAIRING_MASTER = "蓝牙配对: 主机装置设定";
+Blockly.Msg.BLUETOOTH_PAIRING_SETTING_BAUDRATE = "设置波特率:";
+Blockly.Msg.BLUETOOTH_PAIRING_SETTING_TIMEOUT = "设置延时:";
+Blockly.Msg.BLUETOOTH_PAIRING_SLAVE = "蓝牙配对: 从属装置设定";
+Blockly.Msg.BLUETOOTH_SETUP = "当蓝牙接收到";
+Blockly.Msg.BLUETOOTH_SETUP_DATA_SET = "设置";
+Blockly.Msg.BLUETOOTH_SETUP_DO = "并且做";
+Blockly.Msg.BLUETOOTH_SETUP_LIST_SETTING = "长度为";
+Blockly.Msg.BLUETOOTH_SETUP_OPT1 = "一串文字";
+Blockly.Msg.BLUETOOTH_SETUP_OPT2 = "一个数字";
+Blockly.Msg.BLUETOOTH_SETUP_OPT3 = "一个列表";
+Blockly.Msg.BLUETOOTH_SETUP_SET = "设置波特率";
+Blockly.Msg.BLUETOOTH_SETUP_TO = "为接收到的信息";
+Blockly.Msg.BLUETOOTH_TEXT_RECEIVED = "已接收到的字符串";
+Blockly.Msg.BLYNK_AUTH = "认证密匙: ";
+Blockly.Msg.BLYNK_CONNECT = "当Blynk连接成功";
+Blockly.Msg.BLYNK_CREATE_WITH_CONTAINER_TITLE_ADD = "Data";
+Blockly.Msg.BLYNK_CREATE_WITH_ITEM_TITLE = "item";
+Blockly.Msg.BLYNK_DATA = "data";
+Blockly.Msg.BLYNK_GET_DATANAME = "从";
+Blockly.Msg.BLYNK_GET_DATANAME1 = "获得";
+Blockly.Msg.BLYNK_GET_DATANAME2 = "数据";
+Blockly.Msg.BLYNK_GET_INDEX = "第";
+Blockly.Msg.BLYNK_GET_INDEX1 = "位的数据";
+Blockly.Msg.BLYNK_GET_OF = "获得数据";
+Blockly.Msg.BLYNK_GET_OF1 = "获得";
+Blockly.Msg.BLYNK_GET_OF2 = "的数据";
+Blockly.Msg.BLYNK_GPS_ALTITUDE = "高度(海拔)";
+Blockly.Msg.BLYNK_GPS_LATITUDE = "纬度";
+Blockly.Msg.BLYNK_GPS_LONGITUDE = "经度";
+Blockly.Msg.BLYNK_GPS_SPEED = "速度";
+Blockly.Msg.BLYNK_LOG = "BLYNK_LOG";
+Blockly.Msg.BLYNK_PW = "WiFi密码: ";
+Blockly.Msg.BLYNK_READ = "当Blynk请求";
+Blockly.Msg.BLYNK_READ1 = "数据";
+Blockly.Msg.BLYNK_SELECT = "选择";
+Blockly.Msg.BLYNK_SETUP = "BLYNK初始化";
+Blockly.Msg.BLYNK_SSID = "WiFi名称: ";
+Blockly.Msg.BLYNK_TIME_DO = "执行";
+Blockly.Msg.BLYNK_TIME_SECOND = "秒";
+Blockly.Msg.BLYNK_TIME_SETTING = "设置计时器: 每隔";
+Blockly.Msg.BLYNK_VIRTUALWRITE = "發送數據到";
+Blockly.Msg.BLYNK_VIRTUALWRITE_DATA = "Data:";
+Blockly.Msg.BLYNK_WIFI = "连接WiFi网络";
+Blockly.Msg.BLYNK_WRITE = "从";
+Blockly.Msg.BLYNK_WRITE1 = "获取数据";
+Blockly.Msg.BLYNK_WRITE_VARIABLE = "存到";
+Blockly.Msg.BLYNK_WRITE_VARLENGTH = "长度";
+Blockly.Msg.CHANGE_VALUE_TITLE = "更改值:";
+Blockly.Msg.CHAT = "通过在此框输入与您的合作者沟通!";
+Blockly.Msg.CLEAN_UP = "整理块";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_CONTAINER_TITLE_ADD = "key[]";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_INPUT_WITH = "添加";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_ITEM_TITLE = "value";
+Blockly.Msg.CLOUDDATA_GENERATOR_DATA = "生成数据";
+Blockly.Msg.CLOUDDATA_PARSE_JSON = "的数据从";
+Blockly.Msg.CLOUDDATA_PARSE_KEY = "解析得到名为";
+Blockly.Msg.CLOUDDATA_PARSE_PRETTYPRINT_DISPLAY = "获得生成的数据";
+Blockly.Msg.CLOUDDATA_PARSE_SETUP_INIT = "数据解析初始化为";
+Blockly.Msg.CLOUDDATA_PARSE_SETUP_PAYLOAD = "解析内容";
+Blockly.Msg.CLOUDDATA_PARSE_TYPE = "类型为";
+Blockly.Msg.CO2SENSOR_GET_CO2 = "获取二氧化碳浓度数值(单位:ppm)";
+Blockly.Msg.CO2SENSOR_GET_TVOC = "获取 TVOC(挥发性有机物)数值";
+Blockly.Msg.CO2SENSOR_SETUP = "CCS811 空气质量传感器初始化";
+Blockly.Msg.CO2SENSOR_SETUP_SCL = "SCL 引脚接在:";
+Blockly.Msg.CO2SENSOR_SETUP_SDA = "SDA 引脚接在:";
+Blockly.Msg.COCOCLOUD_CREATE_WITH_CONTAINER_TITLE_ADD = "LIST";
+Blockly.Msg.COCOCLOUD_CREATE_WITH_ITEM_TITLE = "Event";
+Blockly.Msg.COCOCLOUD_GET = "向项目";
+Blockly.Msg.COCOCLOUD_GET1 = " 获取数据";
+Blockly.Msg.COCOCLOUD_GETPAYLOAD = "从项目获取到的数据";
+Blockly.Msg.COCOCLOUD_POST = "发送到项目";
+Blockly.Msg.COCOCLOUD_POST_DATA = "数据";
+Blockly.Msg.COCOCLOUD_TIME_DAY = "日";
+Blockly.Msg.COCOCLOUD_TIME_GETDATE = "获取";
+Blockly.Msg.COCOCLOUD_TIME_GETTIME = "获取";
+Blockly.Msg.COCOCLOUD_TIME_HOUR = "时";
+Blockly.Msg.COCOCLOUD_TIME_MINUTE = "分";
+Blockly.Msg.COCOCLOUD_TIME_MONTH = "月份";
+Blockly.Msg.COCOCLOUD_TIME_SECOND = "秒";
+Blockly.Msg.COCOCLOUD_TIME_SETUP = "世界时间";
+Blockly.Msg.COCOCLOUD_TIME_YEAR = "年份";
+Blockly.Msg.COCOCLOUD_TITLE = "Web服务 CocoCloud";
+Blockly.Msg.COLLAPSE_ALL = "折叠块";
+Blockly.Msg.COLLAPSE_BLOCK = "折叠块";
+Blockly.Msg.COLOR = "颜色";
+Blockly.Msg.COLORANALYZER_SETUP = "颜色分析设置";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "颜色1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "颜色2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";  // untranslated
+Blockly.Msg.COLOUR_BLEND_RATIO = "比例";
+Blockly.Msg.COLOUR_BLEND_TITLE = "混合";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "用一个给定的比率(0.0-1.0)混合两种颜色。";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://zh.wikipedia.org/wiki/颜色";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "从调色板中选择一种颜色。";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";  // untranslated
+Blockly.Msg.COLOUR_RANDOM_TITLE = "随机颜色";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "随机选择一种颜色。";
+Blockly.Msg.COLOUR_RGB_BLUE = "蓝色";
+Blockly.Msg.COLOUR_RGB_GREEN = "绿色";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";  // untranslated
+Blockly.Msg.COLOUR_RGB_RED = "红色";
+Blockly.Msg.COLOUR_RGB_TITLE = "颜色";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须介于0和100之间。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "中断循环";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "继续下一次循环";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "中断包含它的循环。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "跳过这个循环的剩余部分,并继续下一次迭代。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "警告:此块仅可用于在一个循环内。";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "在列表 %2 中以 %1 遍历每个项目";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "遍历每个列表中的项目,将变量\"%1\"设定到该项中,然后执行某些语句。";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
+Blockly.Msg.CONTROLS_FOR_TITLE = "使用 %1 从范围 %2 到 %3 每隔 %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "从起始数到结尾数中取出变量\"%1\"的值,按指定的时间间隔,执行指定的块。";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "在if语句块中增加一个条件。";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "添加一个最终的,包括所有情况的节到if块中。";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "增加、删除或重新排列各节来重新配置\"if\"块。";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "否则";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "否则如果";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "如果";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "如果值为真,执行一些语句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "如果值为真,则执行语句的第一块。否则,则执行语句的第二块。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "如果第一个值为真,则执行语句的第一个块。否则,如果第二个值为真,则执行语句的第二块。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "如果第一个值为真,则执行语句的第一块。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行语句的最后一块。";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://zh.wikipedia.org/wiki/For循环";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "执行";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "重复 %1 次";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "多次执行一些语句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "重复直到";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "重复当";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "只要值为假,执行一些语句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "只要值为真,执行一些语句。";
+Blockly.Msg.DELETE_ALL_BLOCKS = "删除所有%1块吗?";
+Blockly.Msg.DELETE_BLOCK = "删除块";
+Blockly.Msg.DELETE_X_BLOCKS = "删除 %1 块";
+Blockly.Msg.DISABLE_BLOCK = "禁用块";
+Blockly.Msg.DUPLICATE_BLOCK = "复制";
+Blockly.Msg.ENABLE_BLOCK = "启用块";
+Blockly.Msg.ENCODER_GETROTATIONSPEED = "读取码盘数值";
+Blockly.Msg.ENCODER_SETUP = "码盘初始化";
+Blockly.Msg.ENCODER_SETUP_1 = "设定中断引脚";
+Blockly.Msg.ENV_AS = "as";  // untranslated
+Blockly.Msg.ENV_BLUE_PIN = "蓝 从接口";
+Blockly.Msg.ENV_BUZZER_ALARM = "Buzzer Alarm";  // untranslated
+Blockly.Msg.ENV_CRITICAL_VAL = "When the critical value of";  // untranslated
+Blockly.Msg.ENV_DO = "Do";  // untranslated
+Blockly.Msg.ENV_GREEN_PIN = "绿 从接口";
+Blockly.Msg.ENV_REACHES = "reaches";  // untranslated
+Blockly.Msg.ENV_RED_PIN = "红 从接口";
+Blockly.Msg.ENV_SENSOR_HUMID = "读取湿度的数值从接口 ";
+Blockly.Msg.ENV_SENSOR_HUMIDITY = "湿度";
+Blockly.Msg.ENV_SENSOR_LIGHT = " 读取光照的数值从接口 ";
+Blockly.Msg.ENV_SENSOR_MIC = " 读取声音的数值从接口 ";
+Blockly.Msg.ENV_SENSOR_READ = "读取数值从";
+Blockly.Msg.ENV_SENSOR_READTEMP = "读取温度的数值从接口 ";
+Blockly.Msg.ENV_SENSOR_SET_RGB = "设置RGB灯光";
+Blockly.Msg.ENV_SENSOR_SOUND = "声音";
+Blockly.Msg.ENV_SENSOR_TEMPUNIT = "设置单位为";
+Blockly.Msg.ENV_SENSOR_UNITC = "摄氏度";
+Blockly.Msg.ENV_SENSOR_UNITF = "华氏度";
+Blockly.Msg.ENV_SET = "Set";  // untranslated
+Blockly.Msg.ENV_SETRGB_B = "蓝 从接口";
+Blockly.Msg.ENV_SETRGB_G = "绿 从接口";
+Blockly.Msg.ENV_SETRGB_R = "红 从接口 ";
+Blockly.Msg.ENV_SETUP = "环境感应设置";
+Blockly.Msg.ENV_SET_TEMP = "Set temperature as ";  // untranslated
+Blockly.Msg.ENV_SET_TEMP_UNIT = "Set unit as ";  // untranslated
+Blockly.Msg.EXPAND_ALL = "展开块";
+Blockly.Msg.EXPAND_BLOCK = "展开块";
+Blockly.Msg.EXPORTPNG = "导出PNG快照";
+Blockly.Msg.EXPORTXML = "导出XML文件";
+Blockly.Msg.EXTERNAL_INPUTS = "外部输入";
+Blockly.Msg.Friday = "周五";
+Blockly.Msg.GPS_LATITUDE = "获取纬度";
+Blockly.Msg.GPS_LONGITUDE = "获取经度";
+Blockly.Msg.GPS_SETUP = "GPS 初始化";
+Blockly.Msg.GREEN = "绿";
+Blockly.Msg.HELP = "帮助";
+Blockly.Msg.HID_KEYBOARD_PRESS = "设置键盘: 按下";
+Blockly.Msg.HID_KEYBOARD_RELEASE = "设置键盘: 释放";
+Blockly.Msg.HID_KEYBOARD_RELEASEALL = "设置键盘: 释放全部";
+Blockly.Msg.HID_MOUSE_CLICK = "设置鼠标: 点击";
+Blockly.Msg.HID_MOUSE_CLICK_LEFT = "左键";
+Blockly.Msg.HID_MOUSE_CLICK_RIGHT = "右键";
+Blockly.Msg.HID_MOUSE_MOVE = "设置鼠标: 向";
+Blockly.Msg.HID_MOUSE_MOVE_DISTANCE = "px";
+Blockly.Msg.HID_MOUSE_MOVE_FOR = "移动";
+Blockly.Msg.HID_MOUSE_PRESS = "设置鼠标: 按下";
+Blockly.Msg.HID_MOUSE_RELEASE = "设置鼠标: 松开";
+Blockly.Msg.HID_SETUP = "HID初始化";
+Blockly.Msg.INFRAREDRAY_RECVAL = "接收值";
+Blockly.Msg.INFRAREDRAY_SETUP = "红外线接收器设置";
+Blockly.Msg.INLINE_INPUTS = "单行输入";
+Blockly.Msg.ISCOLOR = "是否颜色";
+Blockly.Msg.JSONOBJECT_CREATE = "JSON Object";  // untranslated
+Blockly.Msg.JSONTOOL_ARRAY_SIZE = "列表大小";
+Blockly.Msg.JSONTOOL_GENERATOR = "JSON构造器 ";
+Blockly.Msg.JSONTOOL_GENERATOR_ARRAY_VALUE = "JSON列表加入: value";
+Blockly.Msg.JSONTOOL_GENERATOR_JSONOBJECT = "Object";
+Blockly.Msg.JSONTOOL_GENERATOR_KEY = "JSON对象加入:Key ";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME = "JSONVar";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE = "生成JSON";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE_NAME = "命名为";
+Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE = "嵌套JSON";
+Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE_NAME = "命名为";
+Blockly.Msg.JSONTOOL_GENERATOR_SETUP = "JSON构造器初始化";
+Blockly.Msg.JSONTOOL_GENERATOR_VALUE = "Value";
+Blockly.Msg.JSONTOOL_OBJECT_SIZE = "对象大小";
+Blockly.Msg.JSONTOOL_PARSE_ARRAY = "(JSON列表)";
+Blockly.Msg.JSONTOOL_PARSE_BY = "获取";
+Blockly.Msg.JSONTOOL_PARSE_EACH = "从JSON对象";
+Blockly.Msg.JSONTOOL_PARSE_INDEX = "下标为";
+Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS = "是否成功解析";
+Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS_NAME = "对于JSON对象";
+Blockly.Msg.JSONTOOL_PARSE_JSONOBJECT = "Object";
+Blockly.Msg.JSONTOOL_PARSE_KEY = "(JSON对象)key";
+Blockly.Msg.JSONTOOL_PARSE_KEYVALUE = "从JSON Object %1 获得key %2 的值";
+Blockly.Msg.JSONTOOL_PARSE_NEST = "内嵌";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT = "打印 JSON ";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_DISPLAY = "规范化数据";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_WAY = "按规范方式";
+Blockly.Msg.JSONTOOL_PARSE_RESPONSE = "数据内容";
+Blockly.Msg.JSONTOOL_PARSE_SETUP = "JSON解析器初始化";
+Blockly.Msg.JSONTOOL_PARSE_TOVAR = "获取数据到";
+Blockly.Msg.JSONTOOL_PARSE_VARTYPE = "";
+Blockly.Msg.LED_BACKCOLOR = "背景";
+Blockly.Msg.LED_BRIGHTNESS_WARNING = "亮度应该在范围 0 - 255 之间";
+Blockly.Msg.LED_BRTN = "亮度";
+Blockly.Msg.LED_CLEAR = "清除";
+Blockly.Msg.LED_COLOR = "颜色";
+Blockly.Msg.LED_COORDINATE = "坐标";
+Blockly.Msg.LED_DRAW = "画";
+Blockly.Msg.LED_FONT = "字体";
+Blockly.Msg.LCD_FONT = "字体:";
+Blockly.Msg.SUPER_LARGE = "超大";
+Blockly.Msg.LARGE = "大";
+Blockly.Msg.MIDDLE = "中";
+Blockly.Msg.SMALL = "小";
+Blockly.Msg.LED_FULL = "实心";
+Blockly.Msg.LED_HEIGHT = "高";
+Blockly.Msg.LED_LINE = "线";
+Blockly.Msg.LED_LINE_END = "终点";
+Blockly.Msg.LED_LINE_START = "起点";
+Blockly.Msg.LED_MULTICOM = "H";  // untranslated
+Blockly.Msg.LED_PANELHEIGHT = "高(拼接个数)";
+Blockly.Msg.LED_PANELWIDTH = "宽(拼接个数)";
+Blockly.Msg.LED_PATTERN = "图形";
+Blockly.Msg.LED_PIN = "接口";
+Blockly.Msg.LED_PIXEL = "点";
+Blockly.Msg.LED_POSITION = "位置";
+Blockly.Msg.LED_RECTANGLE = "矩形";
+Blockly.Msg.LED_SCROLL = "滚动";
+Blockly.Msg.LED_SCROLL_NO = "否";
+Blockly.Msg.LED_SCROLL_SPEED = "速度";
+Blockly.Msg.LED_SCROLL_YES = "是";
+Blockly.Msg.LED_SETUP = "LED灯组设置";
+Blockly.Msg.LED_SET_BRIGHTNESS = "设置亮度为";
+Blockly.Msg.LED_SET_ROTATION = "将屏幕旋转至";
+Blockly.Msg.LED_SET_ROTATION_DEGREE = "度";
+Blockly.Msg.LED_SHOW_ALL = "显示图案";
+Blockly.Msg.LED_SINGLE_SETUP = "单个LED灯组设置";
+Blockly.Msg.LED_SIZE = "大小";
+Blockly.Msg.LED_STRIP_LOCATION = "位置";
+Blockly.Msg.LED_STRIP_PIXEL = "绘制像素";
+Blockly.Msg.LED_STROKED = "空心";
+Blockly.Msg.LED_TEXT = "文本";
+Blockly.Msg.LED_WIDTH = "宽";
+Blockly.Msg.LED_WORD = "单字";
+Blockly.Msg.LIGHT_BRIGHTNESS = "上的灯光亮度为:";
+Blockly.Msg.LIGHT_PIN = "设置";
+Blockly.Msg.LIGHT_TURNOFF = "关闭灯光输出在";
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "创建空列表";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "返回一个列表,长度为 0,不包含任何数据记录";
+Blockly.Msg.LISTS_CREATE_LIST_WITH = "创建列表";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "列表";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "增加、删除或重新排列各部分以此重新配置这个列表块。";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "将一个项添加到列表中。";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "建立一个具有任意数量项目的列表。";
+Blockly.Msg.LISTS_GETINDEX = "从列表 %1 中获取第 %2 位的值";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "第一";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒数第#";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_GET = "获得";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "取出并移除";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "最后";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "随机";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "移除";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "空白";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "返回列表中的第一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "返回在列表中的指定位置的项。#1是最后一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "返回在列表中的指定位置的项。#1是第一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "返回列表中的最后一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "随机返回列表中的一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "移除并返回列表中的第一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END = "移除并返回列表中的指定位置的项。#1 是最后一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START = "移除并返回列表中的指定位置的项。#1 是第一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "移除并返回列表中的最后一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "移除并返回列表中的一个随机项目中。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "移除列表中的第一项";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END = "删除在列表中的指定位置的项。#1是最后一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START = "移除在列表中的指定位置的项。#1 是第一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "移除列表中的最后一项";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "删除列表中的一个随机的项。";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "到倒数第#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "到#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "到最后";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "从头获得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "从倒数#取得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "从#取得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "空白";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "复制列表中指定的部分。";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "找出第一个项出现";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";  // untranslated
+Blockly.Msg.LISTS_INDEX_OF_LAST = "找出最后一个项出现";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回0。";
+Blockly.Msg.LISTS_INLIST = "在列表中";
+Blockly.Msg.LISTS_INT_CREATE_WITH_INPUT_WITH = "建立数字列表使用";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "如果改列表为空,则返回真。";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
+Blockly.Msg.LISTS_LENGTH_TITLE = "%1的长度";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "返回列表的长度。";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+Blockly.Msg.LISTS_REPEAT_TITLE = "建立列表使用项 %1 重复 %2 次";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "建立包含指定重复次数的值的列表。";
+Blockly.Msg.LISTS_SETINDEX = "赋值 %1 中第 %2 位的值到 %3";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "为";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "插入在";
+Blockly.Msg.LISTS_SET_INDEX_SET = "设置";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "在列表的起始处添加该项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END = "插入在列表中的指定位置的项。#1是最后一项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START = "插入在列表中指定位置的项。#1是第一项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "将该项追加到列表的末尾。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "在列表中随机插入项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "设置列表中的第一个项目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END = "设置在列表中指定位置的项。#1是最后一项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START = "设置在列表中指定位置的项。#1是第一项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "设置列表中的最后一项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "设置列表中一个随机的项目。";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "升序";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "降序";
+Blockly.Msg.LISTS_SORT_TITLE = "排序%1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "排序一个列表的拷贝。";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "按字母排序,忽略大小写";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "按数字排序";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "按字母排序";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "从文本制作列表";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "从列表拆出文本";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "加入文本列表至一个文本,由分隔符分隔。";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "拆分文本到文本列表,按每个分隔符拆分。";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "用分隔符";
+Blockly.Msg.LISTS_STRING_CREATE_WITH_INPUT_WITH = "建立字符串列表使用";
+Blockly.Msg.LISTS_THE_LENGTH_OF = "%1的长度";
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "假";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "返回真或假。";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "真";
+Blockly.Msg.LOGIC_CASE = "情况";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "如果两个输入结果相等,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "如果第一个输入结果比第二个大,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "如果第一个输入结果大于或等于第二个输入结果,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "如果第一个输入结果比第二个小,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "如果第一个输入结果小于或等于第二个输入结果,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "如果两个输入结果不相等,则返回真。";
+Blockly.Msg.LOGIC_DEFAULT = "默认";
+Blockly.Msg.LOGIC_DO = "做";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "非%1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "如果输入结果为假,则返回真;如果输入结果为真,则返回假。";
+Blockly.Msg.LOGIC_NULL = "空";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";  // untranslated
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "返回空值。";
+Blockly.Msg.LOGIC_OPERATION_AND = "和";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
+Blockly.Msg.LOGIC_OPERATION_OR = "或";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "如果两个输入结果都为真,则返回真。";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "如果至少有一个输入结果为真,则返回真。";
+Blockly.Msg.LOGIC_SWITCH = "切换";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "测试";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://zh.wikipedia.org/wiki/条件运算符";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "如果为假";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "如果为真";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "检查\"test\"中的条件。如果条件为真,则返回\"if true\"的值,否则,则返回\"if false\"的值。";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE = "从AI模块获取数据";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET = "从";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE2 = "获取第";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE3 = "位的数据,并设置类型为";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE2 = "并存到 ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE3 = "长度为 ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND = "创建列表";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND_LINE2 = "发送数据到AI上";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND_VALUE = "Data";
+Blockly.Msg.MAINWIFI_RECEIVEMSG = "接收数据到 ";
+Blockly.Msg.MAINWIFI_RECEIVEMSG_ISSUCCESS = "接收数据成功";
+Blockly.Msg.MAINWIFI_RECEIVEMSG_LENGTH = ",数据长度为 ";
+Blockly.Msg.MAINWIFI_SENDMSG = "发送数据";
+Blockly.Msg.MAINWIFI_SENDMSG_LENGTH = ",数据长度为";
+Blockly.Msg.MAINWIFI_SETUP = "无线数据传输初始化";
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+";  // untranslated
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://zh.wikipedia.org/wiki/算术";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "返回两个数字的和。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "返回两个数字的商。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "返回两个数字的区别。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "返回两个数字的乘积。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "返回第一个数的第二个数次幂。";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://zh.wikipedia.org/wiki/%E5%8A%A0%E6%B3%95";
+Blockly.Msg.MATH_CHANGE_TITLE = "将 %1 增加 %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "将一个数添加到变量\"%1\"。";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://zh.wikipedia.org/wiki/数学常数";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "返回一个常见常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(无穷大)。";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";  // untranslated
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "限制数字 %1 介于 (低) %2 到 (高) %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "限制数字介于两个指定的数字之间";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";  // untranslated
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "可被整除";
+Blockly.Msg.MATH_IS_EVEN = "是偶数";
+Blockly.Msg.MATH_IS_NEGATIVE = "为负";
+Blockly.Msg.MATH_IS_ODD = "是奇数";
+Blockly.Msg.MATH_IS_POSITIVE = "为正";
+Blockly.Msg.MATH_IS_PRIME = "是质数";
+Blockly.Msg.MATH_IS_TOOLTIP = "如果数字是偶数、奇数、非负整数、正数、负数或如果它可被某数字整除,则返回真或假。";
+Blockly.Msg.MATH_IS_WHOLE = "为整数";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg.MATH_MODULO_TITLE = "取余数自 %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "返回这两个数字相除后的余数。";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";  // untranslated
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://zh.wikipedia.org/wiki/数";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "一个数字。";
+Blockly.Msg.MATH_ONLIST_HELPURL = "";  // untranslated
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "列表中的平均数";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "列表中的最大值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "列表中位数";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "列表中的最小值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "列表模式";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "列表的随机项";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "列表中的标准差";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "列表中的数的总和";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "返回列表中的数值的平均值。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "返回列表中最大数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "返回列表中的中位数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "返回列表中最小数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "返回列表中的最常见的项的列表。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "从列表中返回一个随机的元素。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "返回列表的标准偏差。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "返回列表中的所有数字的和。";
+Blockly.Msg.MATH_POWER_SYMBOL = "^";  // untranslated
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "随机分数";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "返回介于(包含)0.0到1.0之间的随机数。";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "从 %1 到 %2 之间的随机整数";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "返回两个指定的范围(含)之间的随机整数。";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://zh.wikipedia.org/wiki/数值修约";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "四舍五入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "向下舍入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "向上舍入";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "数字向上或向下舍入。";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "绝对";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "平方根";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "返回一个数的绝对值。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "返回数的e次幂。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "返回一个数的自然对数。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "返回数字的对数。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "返回数的逻辑非。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "返回数的10次幂。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "返回数的平方根。";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";  // untranslated
+Blockly.Msg.MATH_TRIG_ACOS = "acos";  // untranslated
+Blockly.Msg.MATH_TRIG_ASIN = "asin";  // untranslated
+Blockly.Msg.MATH_TRIG_ATAN = "atan";  // untranslated
+Blockly.Msg.MATH_TRIG_COS = "cos";  // untranslated
+Blockly.Msg.MATH_TRIG_HELPURL = "https://zh.wikipedia.org/wiki/三角函数";
+Blockly.Msg.MATH_TRIG_SIN = "sin";  // untranslated
+Blockly.Msg.MATH_TRIG_TAN = "tan";  // untranslated
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "返回一个数的反余弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "返回一个数的反正弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "返回指定角度的反正切值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "返回指定角度的余弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL = '';
+Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP = '返回指定值保留小数点的结果';
+Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0 = '%1 保留 %2 位小数';
+Blockly.Msg.MATH_DIVISION_CONSULT_TITLE = "%1 ÷ %2 商的整数部分";
+Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP = "返回两数商的整数部分";
+//映射数字范围,放在math目录里
+Blockly.Msg.labplus_mapping_MESSAGE0 = '映射%1 从%2 , %3到%4 , %5'
+Blockly.Msg.labplus_mapping_TOOLTIP = '将0~100中的10映射到0~200中并返回映射值'
+Blockly.Msg.labplus_mapping_HELPURL = ''
+Blockly.Msg.ME = "我";
+Blockly.Msg.MOTION_GETACC = "获取";
+Blockly.Msg.MOTION_GETACC1 = "方向的加速度";
+Blockly.Msg.MOTION_GETRAWDATA = "获得数据";
+Blockly.Msg.MOTION_GETYPR = "获取";
+Blockly.Msg.MOTION_GETYPR1 = "的旋转度";
+Blockly.Msg.MOTION_ONDIRECTION = "正在向";
+Blockly.Msg.MOTION_ONDIRECTION1 = "偏转";
+Blockly.Msg.MOTION_ONDIRECTION_BACK = "后";
+Blockly.Msg.MOTION_ONDIRECTION_CLOCKWISE = "顺时针";
+Blockly.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE = "逆时针";
+Blockly.Msg.MOTION_ONDIRECTION_FRONT = "前";
+Blockly.Msg.MOTION_ONDIRECTION_LEFT = "左";
+Blockly.Msg.MOTION_ONDIRECTION_RIGHT = "右";
+Blockly.Msg.MOTION_ONSHAKE = "正在摇晃";
+Blockly.Msg.MOTION_SETUP = "运动初始化";
+Blockly.Msg.MOTION_TRENDENCY = "获得运动趋势";
+Blockly.Msg.MOTOR_MOVE_DIRECTION1 = "顺时针";
+Blockly.Msg.MOTOR_MOVE_DIRECTION2 = "逆时针";
+Blockly.Msg.MOTOR_MOVE_MOTOR = "驱动电机";
+Blockly.Msg.MOTOR_MOVE_MSG = "和";
+Blockly.Msg.MOTOR_SETUP = "电机驱动车设置";
+Blockly.Msg.MOTOR_SPEED = "速度";
+Blockly.Msg.MOTOR_STOP = "设置电机停止";
+Blockly.Msg.MUSIC_BEAT = "拍";
+Blockly.Msg.MUSIC_DURATION = "持续";
+Blockly.Msg.MUSIC_INSTRUMENT = "设定乐器";
+Blockly.Msg.MUSIC_INSTRUMENT_ACCORION = "手风琴";
+Blockly.Msg.MUSIC_INSTRUMENT_BASS = "贝斯";
+Blockly.Msg.MUSIC_INSTRUMENT_CELLO = "大提琴";
+Blockly.Msg.MUSIC_INSTRUMENT_DRAWBARORGAN = "爵士风琴";
+Blockly.Msg.MUSIC_INSTRUMENT_DRUM = "鼓";
+Blockly.Msg.MUSIC_INSTRUMENT_EGUITAR = "电吉他";
+Blockly.Msg.MUSIC_INSTRUMENT_EPIANO = "电子琴";
+Blockly.Msg.MUSIC_INSTRUMENT_FLUTE = "长笛";
+Blockly.Msg.MUSIC_INSTRUMENT_GPIANO = "经典钢琴";
+Blockly.Msg.MUSIC_INSTRUMENT_GUITAR = "吉他";
+Blockly.Msg.MUSIC_INSTRUMENT_MUSICBOX = "八音盒";
+Blockly.Msg.MUSIC_INSTRUMENT_PICCOLO = "短笛";
+Blockly.Msg.MUSIC_INSTRUMENT_SAX = "萨克斯";
+Blockly.Msg.MUSIC_INSTRUMENT_SITAR = "西塔琴";
+Blockly.Msg.MUSIC_INSTRUMENT_TRUMPET = "喇叭";
+Blockly.Msg.MUSIC_INSTRUMENT_VIOLA = "中提琴";
+Blockly.Msg.MUSIC_INSTRUMENT_VIOLIN = "小提琴";
+Blockly.Msg.MUSIC_INSTRUMENT_WHISTLE = "汽笛";
+Blockly.Msg.MUSIC_INSTRUMENT_WOODBLOCK = "木鱼";
+Blockly.Msg.MUSIC_INSTRUMENT_XYLOPHONE = "木琴";
+Blockly.Msg.MUSIC_MP3_CURRENTVOLUME = "获得当前音量";
+Blockly.Msg.MUSIC_MP3_PLAYALL = "播放列表";
+Blockly.Msg.MUSIC_MP3_PLAYALL_NAME = "播放模式";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_LISTREPEAT = "列表循环";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_NORMAL = "单次";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_REPEAT = "单曲循环";
+Blockly.Msg.MUSIC_MP3_PLAYONE = "播放音乐文件";
+Blockly.Msg.MUSIC_MP3_PLAYONE_NAME = "音乐:";
+Blockly.Msg.MUSIC_MP3_PLAYONE_NORMAL = "单次";
+Blockly.Msg.MUSIC_MP3_PLAYONE_REPEAT = "循环";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING = "播放器设置:";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_NEXTSONG = "下一曲";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PAUSE = "暂停";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PLAYALL = "播放所有乐曲";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PRESONG = "上一曲";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_RESUME = "播放";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_STOP = "停止";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_VOLDOWN = "调小音量";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_VOLUP = "调大音量";
+Blockly.Msg.MUSIC_MP3_PLAY_NORMAL = "顺序播放";
+Blockly.Msg.MUSIC_MP3_PLAY_REPEAT = "列表循环";
+Blockly.Msg.MUSIC_MP3_SETUP = "MP3播放器初始化";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME = "设置音量";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_HIGH = "高";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_LOW = "低";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_MID = "中";
+Blockly.Msg.MUSIC_MP3_SETVOLUME = "设置音量为";
+Blockly.Msg.MUSIC_NOTE = "音阶";
+Blockly.Msg.MUSIC_PLAY_NOTE = "播放";
+Blockly.Msg.MUSIC_PLAY_NOTE_TOOLTIP = "right click this block and check the help page to see the corresponding music note.";  // untranslated
+Blockly.Msg.MUSIC_REST = "音符间隔";
+Blockly.Msg.MUSIC_VOLUME = "设置音量";
+Blockly.Msg.MUSIC_VOL_MAX = "最大";
+Blockly.Msg.MUSIC_VOL_MIN = "最小";
+Blockly.Msg.Monday = "周一";
+Blockly.Msg.Motion_Accelerate = "加速度";
+Blockly.Msg.Motion_Gyroscope = "陀螺仪";
+Blockly.Msg.NBIOT_ENABLE = "启用NB-IoT 串口命令交互";
+Blockly.Msg.NBIOT_HTTP_APIKEY = "云端事件API密匙";
+Blockly.Msg.NBIOT_HTTP_CLOUD_GET = "NB-IoT CocoCloud: Receive Data";  // untranslated
+Blockly.Msg.NBIOT_HTTP_CONTENTTYPE = "Content Type";  // untranslated
+Blockly.Msg.NBIOT_HTTP_DATA = "数据名称";
+Blockly.Msg.NBIOT_HTTP_IFTTT_APIKEY = "IFTTT API Key";
+Blockly.Msg.NBIOT_HTTP_IFTTT_EVENT = "IFTTT项目名称";
+Blockly.Msg.NBIOT_HTTP_IFTTT_TITLE = "NB-IoT 连接IFTTT:发送数据";
+Blockly.Msg.NBIOT_HTTP_THINGSPEAK_APIKEY = "事件API密匙";
+Blockly.Msg.NBIOT_HTTP_THINGSPEAK_TITLE = "NB-IoT 连接Thingspeak:发送数据";
+Blockly.Msg.NBIOT_HTTP_TITLE = "NB-IoT 连接CocoCloud:发送数据";
+Blockly.Msg.NBIOT_IS_POWERON = "NB-IoT 模块启动成功";
+Blockly.Msg.NBIOT_NETWORK_CONNECTED = "网络连接成功";
+Blockly.Msg.NBIOT_NETWORK_IP = "获取  NB-IoT 模块 IP 地址";
+Blockly.Msg.NBIOT_SETUP = "NB-IoT 通信初始化";
+Blockly.Msg.NEW_INSTANCE = "New instance...";  // untranslated
+Blockly.Msg.NEW_INSTANCE_TITLE = "New instance name:";  // untranslated
+Blockly.Msg.NEW_VARIABLE = "新变量...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "新变量的名称:";
+Blockly.Msg.NRFMODULE_GET_RECEIVED_DATA = "获取 nRF 模块收到的数据";
+Blockly.Msg.NRFMODULE_RECEIVING_DATA_TEXT = "nRF 模块开始接收数据";
+Blockly.Msg.NRFMODULE_SEND_DATA_DATA_TEXT = "数据内容:";
+Blockly.Msg.NRFMODULE_SEND_DATA_TITLE = "nRF 模块发送数据";
+Blockly.Msg.NRFMODULE_SETUP_CE_TEXT = "CE 引脚连接:";
+Blockly.Msg.NRFMODULE_SETUP_CSN_TEXT = "CSN 引脚连接:";
+Blockly.Msg.NRFMODULE_SETUP_SET_ADDRESS = "设定通信地址";
+Blockly.Msg.NRFMODULE_SETUP_TITLE = "nRF24L01 通信模块初始化";
+Blockly.Msg.OLCD_CENTER_POS = "圆心坐标";
+Blockly.Msg.OLCD_SCALE = "比例";
+Blockly.Msg.OLCD_WT = "文字换行";
+Blockly.Msg.OLCD_BW = "边框宽度";
+Blockly.Msg.OLCD_SET_POS = "设置坐标";
+Blockly.Msg.OLCD_CIRCLE = "圆形";
+Blockly.Msg.OLCD_CLEAR = "清除";
+Blockly.Msg.OLCD_COLOR = "颜色";
+Blockly.Msg.OLCD_COORDINATE = "起始点坐标";
+Blockly.Msg.OLCD_DRAW = "LCD 显示:画";
+Blockly.Msg.OLCD_FALSE = "否";
+
+Blockly.Msg.OLCD_VLINE = "垂直";
+Blockly.Msg.OLCD_HLINE = "水平";
+Blockly.Msg.OLCD_LENGTHIS = "长度是";
+Blockly.Msg.OLCD_FULLCIRCLE = "全圆";
+Blockly.Msg.OLCD_CIRCLE = "圆圈";
+Blockly.Msg.OLCD_FULL = "实心";
+Blockly.Msg.OLCD_HEIGHT = "高";
+Blockly.Msg.OLCD_LINE = "线";
+Blockly.Msg.OLCD_SCREEN = "屏幕";
+Blockly.Msg.OLCD_LINE_END = "到";
+Blockly.Msg.OLCD_LINE_START = "从";
+Blockly.Msg.OLCD_POINT = "点";
+Blockly.Msg.OLCD_POSITION = "位置";
+Blockly.Msg.OLCD_RADIUS = "设置半径为";
+Blockly.Msg.OLCD_RECTANGLE = "矩形";
+Blockly.Msg.OLCD_SETROTATION = "将屏幕旋转";
+Blockly.Msg.OLCD_SETROTATION_DEGREE = "度";
+Blockly.Msg.OLCD_SETUP = "OLCD屏幕设置";
+Blockly.Msg.OLCD_SIZE = "尺寸";
+Blockly.Msg.OLCD_STROKED = "空心";
+Blockly.Msg.OLCD_TEXT = "文本";
+Blockly.Msg.OLCD_TEXTNEWLINE = "换行";
+Blockly.Msg.OLCD_TRIANGLE = "三角形";
+Blockly.Msg.OLCD_TRUE = "是";
+Blockly.Msg.OLCD_WIDTH = "宽";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "空白";
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "允许声明";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "与:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "运行用户定义的函数\"%1\"。";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "运行用户定义的函数\"%1\",并使用它的输出值。";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "与:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "创建\"%1\"";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "描述该功能...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "执行";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "func1";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "定义";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "创建一个不带输出值的函数。";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "返回";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "创建一个有输出值的函数。";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "警告: 此函数具有重复参数。";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "突出显示函数定义";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "如果值为真,则返回第二个值。";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "警告: 仅在定义函数内可使用此块。";
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "输入名称:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "添加函数输入。";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "输入";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "添加、删除或重新排此函数的输入。";
+Blockly.Msg.PULSESENSOR_GETBPM = "读取心率值";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_PRINT = "在串口摄像头中打印心率原始数据";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_WHEN = "当心率跳动时";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_WHENNO = "当心率未跳动时";
+Blockly.Msg.PULSESENSOR_SETUP = "心率传感器设置";
+Blockly.Msg.PULSESENSOR_SETUP_1 = "设置传感器的接口为";
+Blockly.Msg.READ_B = "读取蓝";
+Blockly.Msg.READ_G = "读取绿";
+Blockly.Msg.READ_R = "读取红";
+Blockly.Msg.RED = "红";
+Blockly.Msg.REDO = "重做";
+Blockly.Msg.REMOVE_COMMENT = "删除注释";
+Blockly.Msg.RENAME_INSTANCE = "Rename instance...";  // untranslated
+Blockly.Msg.RENAME_INSTANCE_TITLE = "Rename all '%1' instances to:";  // untranslated
+Blockly.Msg.RENAME_VARIABLE = "重命名变量...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "将所有\"%1\"变量重命名为:";
+Blockly.Msg.REQUEST_DATA_CLOUD = "云端数据";
+Blockly.Msg.REQUEST_DATA_STRING = "字符串";
+Blockly.Msg.RFID_READID = "读取卡片ID";
+Blockly.Msg.RFID_SETUP = "RFID初始化";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT = "设置双足的动作";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_BACKYARD = "向后退";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_GOINGUP = "上下蹲";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_KICKLEFT = "左踢脚";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_KICKRIGHT = "右踢脚";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKLEFT = "往左月球漫步";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKRIGHT = "往右月球漫步";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_RUN = "向前跑";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_SWING = "摇摆舞";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_TURNLEFT = "原地左转";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_TURNRIGHT = "原地右转";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_WALK = "向前走";
+Blockly.Msg.ROBOT_SETMOVE_TEMPO = "在速度为";
+Blockly.Msg.ROBOT_SETUP = "双足行走机器人设置";
+Blockly.Msg.ROBOT_SETUP_SETRLPIN = "和左脚接口";
+Blockly.Msg.ROBOT_SETUP_SETRRPIN = "设置右脚接口";
+Blockly.Msg.ROBOT_SETUP_SETYLPIN = "和左膝接口";
+Blockly.Msg.ROBOT_SETUP_SETYRPIN = "设置右膝接口";
+Blockly.Msg.RTC_DAY = "日";
+Blockly.Msg.RTC_GETDATE = "获取当前日期";
+Blockly.Msg.RTC_GETTIME = "获取当前时间";
+Blockly.Msg.RTC_GETWEEK = "获取当前周几";
+Blockly.Msg.RTC_setDATE = "设置当前日期";
+Blockly.Msg.RTC_setTIME = "设置当前时间";
+Blockly.Msg.RTC_setWEEK = "设置当前为周";
+Blockly.Msg.RTC_WEI = "为";
+Blockly.Msg.RTC_getDateTime = "获取时间(年,月,日,星期,时,分,秒)";
+Blockly.Msg.RTC_HOUR = "时";
+Blockly.Msg.RTC_MINUTE = "分";
+Blockly.Msg.RTC_MONTH = "月";
+Blockly.Msg.RTC_SECOND = "秒";
+Blockly.Msg.RTC_SETDATE = "日期";
+Blockly.Msg.RTC_SETDATETIME = "设置日期时间周几";
+Blockly.Msg.RTC_SETTIME = "时钟";
+Blockly.Msg.RTC_SETUP = "RTC初始化设置";
+Blockly.Msg.RTC_SETWEEK = "周几";
+Blockly.Msg.RTC_WEEK = "周";
+Blockly.Msg.RTC_YEAR = "年";
+Blockly.Msg.SONAR = "超声波";
+Blockly.Msg.SONAR_READ_DIST = "读取距离从";
+Blockly.Msg.SONAR_SETUP = "设置";
+Blockly.Msg.SONAR_SETUP_ECHOPIN = "和 Echo";
+Blockly.Msg.SONAR_SETUP_MAXDIST = "设置最大距离";
+Blockly.Msg.SONAR_SETUP_TRIGPIN = "设置 Trig";
+Blockly.Msg.Saturday = "周六";
+Blockly.Msg.Sunday = "周日";
+Blockly.Msg.DEEP_LEARING = "深度学习机器";
+Blockly.Msg.Emotion_recognition = "情绪识别";
+Blockly.Msg.Gesture_recognition = "手势识别";
+Blockly.Msg.Object_recognition = "物体识别";
+Blockly.Msg.guesswork_recognition = "猜拳手势识别";
+Blockly.Msg.Posture_recognition = "姿态识别";
+Blockly.Msg.Course_people = "慧眼识人";
+Blockly.Msg.Voice_recognition = "语音识别";
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "追加文本";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg.TEXT_APPEND_TO = "在";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "将一些文本追加到变量\"%1\"。";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "为小写";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "为首字母大写";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "为大写";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "使用不同的大小写复制这段文字。";
+Blockly.Msg.TEXT_CHARAT_FIRST = "获得第一个字符";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "获得倒数第#个字符";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "获得字符#";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "于文本中";
+Blockly.Msg.TEXT_CHARAT_LAST = "获得最后一个字符";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "获取随机的字母";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "返回位于指定位置的字母。";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "将一个项添加到文本中。";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "加入";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "添加、移除或重新排列各节来重新配置这个文本块。";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "到倒数第#个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "到字符#";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "到最后一个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";  // untranslated
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "自文本";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "取得一段字符串自第一个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "取得一段字符串自#到末尾";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "取得一段字符串自#";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "返回指定的部分文本。";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "自文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "寻找第一个出现的文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "寻找最后一个出现的文本";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "空白";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "返回在第二个字符串中的第一/最后一个匹配项的索引值。如果未找到则返回 0。";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "如果提供的文本为空,则返回真。";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "建立字符串使用";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "通过串起任意数量的项以建立一段文字。";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg.TEXT_LENGTH_TITLE = "%1的长度";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "返回提供文本的字母数(包括空格)。";
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
+Blockly.Msg.TEXT_PRINT_TITLE = "串口打印%1";
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "打印指定的文字、数字或其他值。";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "提示用户输入数字。";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "提示用户输入一些文本。";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "输入数字并显示提示消息";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "输入数字并显示提示消息";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://zh.wikipedia.org/wiki/字符串";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "一个字母、单词或一行文本。";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "消除两侧空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "消除左侧空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "消除右侧空格";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "复制这段文字的同时删除两端多余的空格。";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD = "Field";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_INPUT_WITH = "FIELD";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE = "value";
+Blockly.Msg.TODAY = "今天";
+Blockly.Msg.TOUCH_AT = "触摸传感接口 ";
+Blockly.Msg.TOUCH_CASE = "按键";
+Blockly.Msg.TOUCH_DEFAULT = "默认";
+Blockly.Msg.TOUCH_DO = "执行";
+Blockly.Msg.TOUCH_LOOSE = "当松开时";
+Blockly.Msg.TOUCH_SETUP = "触摸感应设置";
+Blockly.Msg.TOUCH_SWITCH = "⌘ 当触碰传感接口";
+Blockly.Msg.TOUCH_THEN_LOOSE_SWITCH = "⌘ 当松开被触碰的接口";
+Blockly.Msg.Thursday = "周四";
+Blockly.Msg.Tuesday = "周二";
+Blockly.Msg.UNDO = "撤销";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "item";  // untranslated
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "创建\"设定%1\"";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "返回此变量的值。";
+Blockly.Msg.VARIABLES_SET = "赋值 %1 为 %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "创建\"%1\"";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "设置此变量,以使它和输入值相等。";
+Blockly.Msg.WATERTEMP_GET_TEMP = "获取水温数值 (ºC)";
+Blockly.Msg.WATERTEMP_SETUP_ATTACHED_PIN = "数字引脚设定:";
+Blockly.Msg.WATERTEMP_SETUP_BLOCKNAME = "水温传感器";
+Blockly.Msg.WATERTEMP_SETUP_SENSORTYPE = "传感器型号:";
+Blockly.Msg.WATERTEMP_SETUP_SETUP = "初始化";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_SETPATH = " set path to:";  // untranslated
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_BOTTOM = "设置底部按钮为:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_CENTER = "设置中间按钮为:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_LEFT = "设置左侧按钮为:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_RIGHT = "设置右侧按钮为:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_TOP = "设置顶部按钮为:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TITLE = "网页控制面板: 按键控制器";
+Blockly.Msg.WEBPAGE_BUTTON_NAME = "按钮名称";
+Blockly.Msg.WEBPAGE_BUTTON_ROUTER = "设置请求路径为:";
+Blockly.Msg.WEBPAGE_BUTTON_TITLE = "网页控制面板: 按钮";
+Blockly.Msg.WEBPAGE_COLORPICKER_PATH = "设置请求路径为:";
+Blockly.Msg.WEBPAGE_COLORPICKER_SUBTITLE = "*注意: 传输的颜色数据为 RGB 颜色制式";
+Blockly.Msg.WEBPAGE_COLORPICKER_TITLE = "网页控制面板: 取色器控件";
+Blockly.Msg.WEBPAGE_LABLE = "标签名称";
+Blockly.Msg.WEBPAGE_LABLE_TITLE = "网页控制面板: 文本";
+Blockly.Msg.WIFICLIENT_HTTP_GET_DATA = "获取数据并存到";
+Blockly.Msg.WIFICLIENT_HTTP_GET_URL = "发送GET请求到";
+Blockly.Msg.WIFICLIENT_HTTP_POST_DATA = "数据";
+Blockly.Msg.WIFICLIENT_HTTP_POST_TYPE = "类型为";
+Blockly.Msg.WIFICLIENT_HTTP_POST_URL = "发送POST请求到";
+Blockly.Msg.WIFICLIENT_HTTP_POST_VAR = "创建列表";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_DATA = "要发送内容";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_TYPE = "类型为";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_URL = "发送PUT请求到";
+Blockly.Msg.WIFICLIENT_HTTP_RESPONSE = "获得HTTP响应";
+Blockly.Msg.WIFICLIENT_HTTP_SETUP = "客戶端初始化";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET = "从";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE2 = "获取第";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE3 = "位的数据,类型为";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_END = "值";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA = "获取数据并将其存到";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY = "从";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY1 = "获取云端项目中";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY2 = "属性名为";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA = "发送数据:";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR = "变量";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM = "";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_TYPE = "的";
+Blockly.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME = "数据名:";
+Blockly.Msg.WIFIEASYMODE_COCOClOUD_EVENT = "Cloud Event API Key :";
+Blockly.Msg.WIFIEASYMODE_IFTTT_EVENT = "IFTTT项目名称:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_FETCH = "获取数据";
+Blockly.Msg.WIFIEASYMODE_IFTTT_KEY = "IFTTT Key:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_POST = "发送数据";
+Blockly.Msg.WIFIEASYMODE_IFTTT_SENDDATA = "发送数据:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_TYPE = "Webhook类型:";
+Blockly.Msg.WIFIEASYMODE_NETWORK_PW = "密码:";
+Blockly.Msg.WIFIEASYMODE_NETWORK_SSID = "SSID:";
+Blockly.Msg.WIFIEASYMODE_NETWORK_TITLE = "连接Wi-Fi";
+Blockly.Msg.WIFIEASYMODE_THINGSPEAK_APIKEY = "Channel API Key:";
+Blockly.Msg.WIFIEASYMODE_THINGSPEAK_SENDDATA = "发送数据:";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE = "从主控获取数据";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET = "从";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE2 = "获取第";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE3 = "位的数据,并设置类型为";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2 = "并存到";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE3 = "长度为 ";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND = "创建列表";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2 = "发送数据到主控上";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE = "Data";
+Blockly.Msg.WIFINETWORK_AP_PW = "密码:";
+Blockly.Msg.WIFINETWORK_AP_SETUP = "建立Wi-Fi热点";
+Blockly.Msg.WIFINETWORK_AP_SSID = "SSID:";
+Blockly.Msg.WIFINETWORK_CONNECT = "连接Wi-Fi";
+Blockly.Msg.WIFINETWORK_CONNECT_PW = "密码:";
+Blockly.Msg.WIFINETWORK_CONNECT_SSID = "SSID:";
+Blockly.Msg.WIFINETWORK_GETGATEWAYIP = "获取网关IP";
+Blockly.Msg.WIFINETWORK_GETLOCALIP = "获取本地IP";
+Blockly.Msg.WIFINETWORK_GETMACADDR = "获取MAC地址";
+Blockly.Msg.WIFINETWORK_GETSTATIONNUM = "获取连接设备数量";
+Blockly.Msg.WIFINETWORK_ISCONNECTED = "是否成功连接";
+Blockly.Msg.WIFINETWORK_PW_WARN = "密码设置应该超过8位";
+Blockly.Msg.WIFISERVER_HANDLECLIENT = "handleclient";
+Blockly.Msg.WIFISERVER_LIST = "创建列表";
+Blockly.Msg.WIFISERVER_RECEIVE = "服务器接收数据";
+Blockly.Msg.WIFISERVER_RECEIVE_GET = "从";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_INT = "数字";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_LINE2 = "获取第";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_LINE3 = "位的值,类型为";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_STRING = "字符串";
+Blockly.Msg.WIFISERVER_RECEIVE_LENGTH = "长度为";
+Blockly.Msg.WIFISERVER_RECEIVE_TO = "并存储到";
+Blockly.Msg.WIFISERVER_SEND = "服务器发送数据";
+Blockly.Msg.WIFISERVER_SERVERSEND = "服务器 推送 ";
+Blockly.Msg.WIFISERVER_SERVERSEND_CODE = "HTTP 状态码";
+Blockly.Msg.WIFISERVER_SERVERSEND_CONTENT = "内容";
+Blockly.Msg.WIFISERVER_SERVERSEND_TYPE = "类型";
+Blockly.Msg.WIFISERVER_SETROOTPAGE = "设置主页";
+Blockly.Msg.WIFISERVER_SETROUTER = "服务器路由";
+Blockly.Msg.WIFISERVER_SETROUTER_ONNOTFOUND = "设置服务器路由当不存在URL时, 处理";
+Blockly.Msg.WIFISERVER_SETROUTER_SET = "设置路径";
+Blockly.Msg.WIFISERVER_SETROUTER_WITH = "响应";
+Blockly.Msg.WIFISERVER_SETUP = "服务器初始化";
+Blockly.Msg.WIFISERVER_WAIT_CONNECTION = "等待连接";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT = "Web服务 IFTTT";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_EVENT = "Event";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY = "Api-Key ";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY1 = "Key1";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY2 = "Key2";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY3 = "Key3";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE1 = "Value1";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE2 = "Value2";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE3 = "Value3";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK = "Web服务 Thinkspeak";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_FIELD1 = "Field";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_KEY = "Api-key";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_VALUE = "Value";
+Blockly.Msg.WIFI_RECEIVEMSG = "接收数据至";
+Blockly.Msg.WIFI_RECEIVEMSG_ISSUCCESS = "接收数据成功";
+Blockly.Msg.WIFI_RECEIVEMSG_LENGTH = ", 数据长度 ";
+Blockly.Msg.WIFI_SENDMSG = "发送数据 ";
+Blockly.Msg.WIFI_SENDMSG_LENGTH = ", 数据长度 ";
+Blockly.Msg.WIFI_SETUP = "数据传输初始化";
+Blockly.Msg.Wednesday = "周三";
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+
+
+Blockly.Msg.ADD_COMMENT = "添加注释";
+Blockly.Msg.AIYBOARD_AIY_BOARD = "AIY Board";  // untranslated
+Blockly.Msg.AIYBOARD_BUTTON_FROM = "from";  // untranslated
+Blockly.Msg.AIYBOARD_BUTTON_WHEN = "when button";  // untranslated
+Blockly.Msg.AIYBOARD_FROM = "from aiy.board";  // untranslated
+Blockly.Msg.AIYBOARD_IMPORT = "import";  // untranslated
+Blockly.Msg.AIYBOARD_LED_STATE = "get LED state of";  // untranslated
+Blockly.Msg.AIYBOARD_LED_STATUS = "get LED status of";  // untranslated
+Blockly.Msg.CAMERA_CAMERA = "camera";  // untranslated
+Blockly.Msg.CAMERA_DO = "Do";  // untranslated
+Blockly.Msg.CAMERA_FPS = "fps";  // untranslated
+Blockly.Msg.CAMERA_FRAME_RATE = "Frame Rete:";  // untranslated
+Blockly.Msg.CAMERA_IMPORT = "import piCamera";  // untranslated
+Blockly.Msg.CAMERA_RESOLUTION = "Resolution";  // untranslated
+Blockly.Msg.CAMERA_SENSOR_MODE = "Sensor Mode:";  // untranslated
+Blockly.Msg.CAMERA_SET_BOUNDING = "Set bounding box:";  // untranslated
+Blockly.Msg.CAMERA_USE_AS = "Use PiCamera as";  // untranslated
+Blockly.Msg.CHANGE_VALUE_TITLE = "更改值:";
+Blockly.Msg.CLEAN_UP = "整理块";
+Blockly.Msg.COLLAPSE_ALL = "折叠块";
+Blockly.Msg.COLLAPSE_BLOCK = "折叠块";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "颜色1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "颜色2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";  // untranslated
+Blockly.Msg.COLOUR_BLEND_RATIO = "比例";
+Blockly.Msg.COLOUR_BLEND_TITLE = "混合";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "用一个给定的比率(0.0-1.0)混合两种颜色。";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://zh.wikipedia.org/wiki/颜色";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "从调色板中选择一种颜色。";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";  // untranslated
+Blockly.Msg.COLOUR_RANDOM_TITLE = "随机颜色";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "随机选择一种颜色。";
+Blockly.Msg.COLOUR_RGB_BLUE = "蓝色";
+Blockly.Msg.COLOUR_RGB_GREEN = "绿色";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";  // untranslated
+Blockly.Msg.COLOUR_RGB_RED = "红色";
+Blockly.Msg.COLOUR_RGB_TITLE = "颜色";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须介于0和100之间。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "中断循环";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "继续下一次循环";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "中断包含它的循环。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "跳过这个循环的剩余部分,并继续下一次迭代。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "警告:此块仅可用于在一个循环内。";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "在列表 %2 中以 %1 遍历每个项目";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "遍历每个列表中的项目,将变量\"%1\"设定到该项中,然后执行某些语句。";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
+Blockly.Msg.CONTROLS_FOR_TITLE = "使用 %1 从范围 %2 到 %3 每隔 %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "从起始数到结尾数中取出变量\"%1\"的值,按指定的时间间隔,执行指定的块。";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "在if语句块中增加一个条件。";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "添加一个最终的,包括所有情况的节到if块中。";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "增加、删除或重新排列各节来重新配置\"if\"块。";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "否则";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "否则如果";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "如果";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "如果值为真,执行一些语句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "如果值为真,则执行第一块语句。否则,则执行第二块语句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://zh.wikipedia.org/wiki/For循环";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "执行";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "重复 %1 次";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "多次执行一些语句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "重复直到";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "重复当";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "只要值为假,执行一些语句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "只要值为真,执行一些语句。";
+Blockly.Msg.DELETE_ALL_BLOCKS = "删除所有%1块吗?";
+Blockly.Msg.DELETE_BLOCK = "删除块";
+Blockly.Msg.DELETE_VARIABLE = "删除\"%1\"变量";
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "删除\"%2\"变量的%1种用途么?";
+Blockly.Msg.DELETE_X_BLOCKS = "删除 %1 块";
+Blockly.Msg.DICTS_CREATE_EMPTY_TITLE = "empty dictionary";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD = "Create Dictionary";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP = "";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_INPUT_WITH = "create dict with";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_KEY = "key";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_MAPPING = ":";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE = "key/value";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP = "";  // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_TOOLTIP = "";  // untranslated
+Blockly.Msg.DICT_GET = "get key";  // untranslated
+Blockly.Msg.DICT_GET_TO = "of";  // untranslated
+// Blockly.Msg.DICT_KEYS = "get all keys from";  // untranslated
+Blockly.Msg.DISABLE_BLOCK = "禁用块";
+Blockly.Msg.DUPLICATE_BLOCK = "复制";
+Blockly.Msg.ENABLE_BLOCK = "启用块";
+Blockly.Msg.EXPAND_ALL = "展开块";
+Blockly.Msg.EXPAND_BLOCK = "展开块";
+Blockly.Msg.EXTERNAL_INPUTS = "外部输入";
+Blockly.Msg.HELP = "帮助";
+Blockly.Msg.INLINE_INPUTS = "单行输入";
+Blockly.Msg.LISTS_APPEND = "append item";  // untranslated
+Blockly.Msg.LISTS_APPEND_HELPURL = "http://google.com";  // untranslated
+Blockly.Msg.LISTS_APPEND_TO = "to list";  // untranslated
+Blockly.Msg.LISTS_APPEND_TOOLTIP = "Append an element to a list";  // untranslated
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "创建空列表";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "返回一个列表,长度为 0,不包含任何数据记录";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "列表";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "增加、删除或重新排列各部分以此重新配置这个列表块。";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "使用这些值建立列表";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "将一个项添加到列表中。";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "建立一个具有任意数量项目的列表。";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "第一";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒数第#";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_GET = "获得";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "取出并移除";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "最后";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "随机";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "移除";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "空白";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "返回列表中的第一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "返回在列表中的指定位置的项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "返回列表中的最后一项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "随机返回列表中的一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "移除并返回列表中的第一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "移除并返回列表中的指定位置的项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "移除并返回列表中的最后一个项目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "移除并返回列表中的一个随机项目中。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "移除列表中的第一项";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "移除在列表中的指定位置的项。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "移除列表中的最后一项";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "删除列表中的一个随机的项。";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "到倒数第#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "到#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "到最后";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "从头获得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "从倒数#取得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "从#取得子列表";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "空白";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "复制列表中指定的部分。";
+Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1是最后一项。";
+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1是第一个项目。";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "找出第一个项出现";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";  // untranslated
+Blockly.Msg.LISTS_INDEX_OF_LAST = "找出最后一个项出现";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。";
+Blockly.Msg.LISTS_INLIST = "在列表中";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "如果改列表为空,则返回真。";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
+Blockly.Msg.LISTS_LENGTH_TITLE = "%1的长度";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "返回列表的长度。";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+Blockly.Msg.LISTS_REPEAT_TITLE = "建立列表使用项 %1 重复 %2 次";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "建立包含指定重复次数的值的列表。";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "为";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "插入在";
+Blockly.Msg.LISTS_SET_INDEX_SET = "设置";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "在列表的起始处添加该项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "插入在列表中指定位置的项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "将该项追加到列表的末尾。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "在列表中随机插入项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "设置列表中的第一个项目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "设置在列表中指定位置的项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "设置列表中的最后一项。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "设置列表中一个随机的项目。";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "升序";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "降序";
+Blockly.Msg.LISTS_SORT_TITLE = "排序%1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "排序一个列表的拷贝。";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "按字母排序,忽略大小写";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "按数字排序";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "按字母排序";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "从文本制作列表";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "从列表拆出文本";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "加入文本列表至一个文本,由分隔符分隔。";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "拆分文本到文本列表,按每个分隔符拆分。";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "用分隔符";
+Blockly.Msg.LOGGING_CONF = "Logging Basic config";  // untranslated
+Blockly.Msg.LOGGING_CONFIG = "logging config";  // untranslated
+Blockly.Msg.LOGGING_CONFIG_LEVEL = "level =";  // untranslated
+Blockly.Msg.LOGGING_IMPORT = "import logging";  // untranslated
+Blockly.Msg.LOGGING_INFO = "Logging info";  // untranslated
+Blockly.Msg.LOGGING_SETUP = "Logging Setup";  // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "假";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "返回真或假。";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "真";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "如果两个输入结果相等,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "如果第一个输入结果比第二个大,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "如果第一个输入结果大于或等于第二个输入结果,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "如果第一个输入结果比第二个小,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "如果第一个输入结果小于或等于第二个输入结果,则返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "如果两个输入结果不相等,则返回真。";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "非%1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "如果输入结果为假,则返回真;如果输入结果为真,则返回假。";
+Blockly.Msg.LOGIC_NULL = "空";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";  // untranslated
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "返回空值。";
+Blockly.Msg.LOGIC_OPERATION_AND = "和";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
+Blockly.Msg.LOGIC_OPERATION_OR = "或";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "如果两个输入结果都为真,则返回真。";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "如果至少有一个输入结果为真,则返回真。";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "测试";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://zh.wikipedia.org/wiki/条件运算符";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "如果为假";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "如果为真";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "检查\"test\"中的条件。如果条件为真,则返回\"if true\"的值,否则,则返回\"if false\"的值。";
+Blockly.Msg.LOOP_FOREACH_ITEM = "for each item";  // untranslated
+Blockly.Msg.LOOP_FOREACH_LIST = "in list";  // untranslated
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+";  // untranslated
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://zh.wikipedia.org/wiki/算术";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "返回两个数字的和。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "返回两个数字的商。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "返回两个数字的区别。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "返回两个数字的乘积。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "返回第一个数的第二个数次幂。";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://zh.wikipedia.org/wiki/加法";
+Blockly.Msg.MATH_CHANGE_TITLE = "将 %1 增加 %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "将一个数添加到变量\"%1\"。";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://zh.wikipedia.org/wiki/数学常数";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "返回一个常见常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(无穷大)。";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";  // untranslated
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "限制数字 %1 介于 (低) %2 到 (高) %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "限制数字介于两个指定的数字之间";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";  // untranslated
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "可被整除";
+Blockly.Msg.MATH_IS_EVEN = "是偶数";
+Blockly.Msg.MATH_IS_NEGATIVE = "为负";
+Blockly.Msg.MATH_IS_ODD = "是奇数";
+Blockly.Msg.MATH_IS_POSITIVE = "为正";
+Blockly.Msg.MATH_IS_PRIME = "是质数";
+Blockly.Msg.MATH_IS_TOOLTIP = "如果数字是偶数、奇数、非负整数、正数、负数或如果它可被某数字整除,则返回真或假。";
+Blockly.Msg.MATH_IS_WHOLE = "为整数";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg.MATH_MODULO_TITLE = "取余数自 %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "返回这两个数字相除后的余数。";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";  // untranslated
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://zh.wikipedia.org/wiki/数";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "一个数字。";
+Blockly.Msg.MATH_ONLIST_HELPURL = "";  // untranslated
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "列表中的平均数";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "列表中的最大值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "列表中位数";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "列表中的最小值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "列表模式";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "列表的随机项";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "列表中的标准差";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "列表中的数的总和";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "返回列表中的数值的平均值。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "返回列表中最大数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "返回列表中的中位数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "返回列表中最小数。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "返回列表中的最常见的项的列表。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "从列表中返回一个随机的元素。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "返回列表的标准偏差。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "返回列表中的所有数字的和。";
+Blockly.Msg.MATH_POWER_SYMBOL = "^";  // untranslated
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "随机分数";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "返回介于(包含)0.0到1.0之间的随机数。";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://zh.wikipedia.org/wiki/随机数生成器";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "从 %1 到 %2 之间的随机整数";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "返回两个指定的范围(含)之间的随机整数。";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://zh.wikipedia.org/wiki/数值修约";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "四舍五入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "向下舍入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "向上舍入";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "数字向上或向下舍入。";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "绝对";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "平方根";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "返回一个数的绝对值。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "返回数的e次幂。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "返回一个数的自然对数。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "返回数字的对数。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "返回数的逻辑非。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "返回数的10次幂。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "返回数的平方根。";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";  // untranslated
+Blockly.Msg.MATH_SUM = "Sum";  // untranslated
+Blockly.Msg.MATH_TRIG_ACOS = "acos";  // untranslated
+Blockly.Msg.MATH_TRIG_ASIN = "asin";  // untranslated
+Blockly.Msg.MATH_TRIG_ATAN = "atan";  // untranslated
+Blockly.Msg.MATH_TRIG_COS = "cos";  // untranslated
+Blockly.Msg.MATH_TRIG_HELPURL = "https://zh.wikipedia.org/wiki/三角函数";
+Blockly.Msg.MATH_TRIG_SIN = "sin";  // untranslated
+Blockly.Msg.MATH_TRIG_TAN = "tan";  // untranslated
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "返回一个数的反余弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "返回一个数的反正弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "返回指定角度的反正切值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "返回指定角度的余弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg.NEW_VARIABLE = "创建变量...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "新变量的名称:";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "空白";
+Blockly.Msg.PLATFORM_IMPORT = "import platform";  // untranslated
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "允许声明";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "与:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "运行用户定义的函数\"%1\"。";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "运行用户定义的函数\"%1\",并使用它的输出值。";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "与:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "创建\"%1\"";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "描述该功能...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "执行";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "做点什么";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "自定义函数";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE_CALLBACK = "回调函数";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "创建一个不带输出值的函数。";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "返回";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "创建一个有输出值的函数。";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "警告: 此函数具有重复参数。";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "突出显示函数定义";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "如果值为真,则返回第二个值。";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "警告: 仅在定义函数内可使用此块。";
+Blockly.Msg.PROCEDURES_MAINFUNCTION = "Define Main function";  // untranslated
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "输入名称:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "添加函数输入。";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "输入";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "添加、删除或重新排此函数的输入。";
+Blockly.Msg.REDO = "重做";
+Blockly.Msg.REMOVE_COMMENT = "删除注释";
+Blockly.Msg.RENAME_VARIABLE = "重命名变量...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "将所有\"%1\"变量重命名为:";
+Blockly.Msg.REQUEST_DATA = "data";  // untranslated
+Blockly.Msg.REQUEST_IMPORT = "import requests";  // untranslated
+Blockly.Msg.REQUEST_POST_DATATYPE = "Request Post Data: JSON";  // untranslated
+Blockly.Msg.REQUEST_SET_URL = "Set URL:";  // untranslated
+Blockly.Msg.SYSTEM_EXIT = "Sys.exit";  // untranslated
+Blockly.Msg.SYSTEM_IMPORT = "import sys";  // untranslated
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "追加文本";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg.TEXT_APPEND_TO = "在";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "将一些文本追加到变量\"%1\"。";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "为小写";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "为首字母大写";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "为大写";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "使用不同的大小写复制这段文字。";
+Blockly.Msg.TEXT_CHARAT_FIRST = "获得第一个字符";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "获得倒数第#个字符";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "获得字符#";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "于文本中";
+Blockly.Msg.TEXT_CHARAT_LAST = "获得最后一个字符";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "获取随机的字母";
+Blockly.Msg.TEXT_CHARAT_TAIL = "空白";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "返回位于指定位置的字母。";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "将一个项添加到文本中。";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "加入";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "添加、移除或重新排列各节来重新配置这个文本块。";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "到倒数第#个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "到字符#";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "到最后一个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";  // untranslated
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "自文本";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "取得一段字符串自第一个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "取得一段字符串自倒数第#个字符";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "取得一段字符串自#";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "空白";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "返回指定的部分文本。";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "自文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "寻找第一个出现的文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "寻找最后一个出现的文本";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "空白";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "返回在第二个字符串中的第一/最后一个匹配项的索引值。如果未找到则返回%1。";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "如果提供的文本为空,则返回真。";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "建立字符串使用";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "通过串起任意数量的项以建立一段文字。";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg.TEXT_LENGTH_TITLE = "%1的长度";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "返回提供文本的字母数(包括空格)。";
+Blockly.Msg.TEXT_LOWER = "set lower case";  // untranslated
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
+Blockly.Msg.TEXT_PRINT_TITLE = "串口打印%1";
+Blockly.Msg.TEXT_PRINT_TITLE_PRINT = "print";  // untranslated
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "打印指定的文字、数字或其他值。";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "提示用户输入数字。";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "提示用户输入一些文本。";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "输入数字并显示提示消息";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "输入数字并显示提示消息";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://zh.wikipedia.org/wiki/字符串";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "一个字母、单词或一行文本。";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "消除两侧空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "消除左侧空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "消除右侧空格";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "复制这段文字的同时删除两端多余的空格。";
+Blockly.Msg.THREAD_IMPORT = "import threading";  // untranslated
+Blockly.Msg.THREAD_SET_TARGET = "threading set target";  // untranslated
+Blockly.Msg.THREAD_START = "start";  // untranslated
+Blockly.Msg.THREAD_THREADING = "threading";  // untranslated
+Blockly.Msg.TODAY = "今天";
+Blockly.Msg.TYPE_CHECK = "type of";  // untranslated
+Blockly.Msg.UNDO = "撤销";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "项目";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "创建\"设定%1\"";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
+Blockly.Msg.VARIABLES_GET_SELF = "get self";  // untranslated
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "返回此变量的值。";
+Blockly.Msg.VARIABLES_SET = "赋值 %1 为 %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "创建\"%1\"";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
+Blockly.Msg.VARIABLES_SET_SELF = "set self";  // untranslated
+Blockly.Msg.VARIABLES_SET_SELF_TO = "to";  // untranslated
+Blockly.Msg.VARIABLES_SET_TAIL = "=";  // untranslated
+Blockly.Msg.VARIABLES_SET_TITLE = "set";  // untranslated
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "设置此变量,以使它和输入值相等。";
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "已存在名为\"%1\"的变量。";
+Blockly.Msg.VISIONKIT_AIY_VISION_INFERENCE = "AIY Vision Inference";  // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR = "Annotator";  // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_BOUNDING = "Annotator Bounding Box";  // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_FILL = "fill=";  // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_SETTING = "set dimensions:";  // untranslated
+Blockly.Msg.VISIONKIT_CAMERA_INFERENCE = "Camera Inference as";  // untranslated
+Blockly.Msg.VISIONKIT_CLOUDEVENT_API = "Cloud Event API:";  // untranslated
+Blockly.Msg.VISIONKIT_DO = "Do";  // untranslated
+Blockly.Msg.VISIONKIT_GETINFERENCE = "Get Inference";  // untranslated
+Blockly.Msg.VISIONKIT_GETMODEL_MODEL = "model";  // untranslated
+Blockly.Msg.VISIONKIT_GETMODEL_Of = "of";  // untranslated
+Blockly.Msg.VISIONKIT_IMPORT = "from";  // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_ANNOTATOR = "annotator import";  // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_INFERENCE = "inference import";  // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_MODELS = "models import";  // untranslated
+Blockly.Msg.VISIONKIT_JOY_DETECT = "Detect Joy Score and stored it to Core Cloud";  // untranslated
+Blockly.Msg.VISIONKIT_MODEL = "Model";  // untranslated
+Blockly.Msg.VISIONKIT_RUN_INFERENCE = "Run inference";  // untranslated
+Blockly.Msg.VISIONKIT_SETUP = "Google AIY Vision Kit Setup";  // untranslated
+Blockly.Msg.VISIONKIT_USE_MODEL = "Use model";  // untranslated
+Blockly.Msg.VOICEKIT_ASSISTANT = "Assistant";  // untranslated
+Blockly.Msg.VOICEKIT_DEMO_1 = "Command Control Demo";  // untranslated
+Blockly.Msg.VOICEKIT_DEMO_2 = "Via Google Assistant";  // untranslated
+Blockly.Msg.VOICEKIT_EVENTTYPE_ASSISTANT = "Assistant Event Type:";  // untranslated
+Blockly.Msg.VOICEKIT_EVENTTYPE_IMPORT = "import EventType";  // untranslated
+Blockly.Msg.VOICEKIT_EVENT_ARGS = "event args";  // untranslated
+Blockly.Msg.VOICEKIT_EVENT_OF = "of";  // untranslated
+Blockly.Msg.VOICEKIT_EVENT_TYPE_OF = "event type of";  // untranslated
+Blockly.Msg.VOICEKIT_FROM = "from";  // untranslated
+Blockly.Msg.VOICEKIT_GET_CREDENTIAL = "Get Assistant Credential";  // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_ASSISTANT = "import Assistant";  // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_AUTH = "import auth_helpers";  // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_TTS = "import TTS";  // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_TTS_SAY = "aiy.voice.tts.say";  // untranslated
+Blockly.Msg.VOICEKIT_SETUP = "Google AIY Voice Kit Setup";  // untranslated
+Blockly.Msg.VOICEKIT_SET_CREDENTIAL = "set credential for Assistant";  // untranslated
+Blockly.Msg.VOICEKIT_SET_DO = "do";  // untranslated
+Blockly.Msg.VOICEKIT_SET_FROM = "from";  // untranslated
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.VARIABLES_SET_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+
+Blockly.Msg.CONTROL_FOREVER = "重复执行"
+Blockly.Msg.CONTROL_REPEAT = "重复执行 %1 次"
+Blockly.Msg.CONTROL_IF = "如果 %1 那么"
+Blockly.Msg.CONTROL_ELSE = "否则"
+Blockly.Msg.CONTROL_STOP = "停止"
+Blockly.Msg.CONTROL_STOP_ALL = "全部脚本"
+Blockly.Msg.CONTROL_STOP_THIS = "这个脚本"
+Blockly.Msg.CONTROL_STOP_OTHER = "该角色的其他脚本"
+Blockly.Msg.CONTROL_WAIT = "等待 %1 秒"
+Blockly.Msg.CONTROL_WAITUNTIL = "在 %1 之前一直等待"
+Blockly.Msg.CONTROL_REPEATUNTIL = "重复执行直到 %1"
+Blockly.Msg.CONTROL_WHILE = "当 %1 重复执行"
+Blockly.Msg.CONTROL_FOREACH = "对于 %2 中的每个 %1"
+Blockly.Msg.CONTROL_STARTASCLONE = "当作为克隆体启动时"
+Blockly.Msg.CONTROL_CREATECLONEOF = "克隆 %1"
+Blockly.Msg.CONTROL_CREATECLONEOF_MYSELF = "自己"
+Blockly.Msg.CONTROL_DELETETHISCLONE = "删除此克隆体"
+Blockly.Msg.CONTROL_COUNTER = "计数器"
+Blockly.Msg.CONTROL_INCRCOUNTER = "计数器加一"
+Blockly.Msg.CONTROL_CLEARCOUNTER = "计数器归零"
+Blockly.Msg.CONTROL_ALLATONCE = "所有脚本"
+Blockly.Msg.DATA_SETVARIABLETO = "将 %1 设为 %2"
+Blockly.Msg.DATA_CHANGEVARIABLEBY = "将 %1 增加 %2"
+Blockly.Msg.DATA_SHOWVARIABLE = "显示变量 %1"
+Blockly.Msg.DATA_HIDEVARIABLE = "隐藏变量 %1"
+Blockly.Msg.DATA_ADDTOLIST = "将 %1 加入 %2"
+Blockly.Msg.DATA_DELETEOFLIST = "删除 %2 的第 %1 项"
+Blockly.Msg.DATA_DELETEALLOFLIST = "删除 %1 的全部项目"
+Blockly.Msg.DATA_INSERTATLIST = "在 %3 的第 %2 项插入 %1"
+Blockly.Msg.DATA_REPLACEITEMOFLIST = "将 %2 的第 %1 项替换为 %3"
+Blockly.Msg.DATA_ITEMOFLIST = "%2 的第 %1 项"
+Blockly.Msg.DATA_ITEMNUMOFLIST = "%2 中第一个 %1 的编号"
+Blockly.Msg.DATA_LENGTHOFLIST = "%1 的项目数"
+Blockly.Msg.DATA_LISTCONTAINSITEM = "%1 包含 %2 ?"
+Blockly.Msg.DATA_SHOWLIST = "显示列表 %1"
+Blockly.Msg.DATA_HIDELIST = "隐藏列表 %1"
+Blockly.Msg.DATA_INDEX_ALL = "全部"
+Blockly.Msg.DATA_INDEX_LAST = "末尾"
+Blockly.Msg.DATA_INDEX_RANDOM = "随机"
+Blockly.Msg.EVENT_WHENFLAGCLICKED = "当 %1 被点击"
+Blockly.Msg.EVENT_WHENTHISSPRITECLICKED = "当角色被点击"
+Blockly.Msg.EVENT_WHENSTAGECLICKED = "当舞台被点击"
+Blockly.Msg.EVENT_WHENTOUCHINGOBJECT = "当该角色碰到 %1"
+Blockly.Msg.EVENT_WHENBROADCASTRECEIVED = "当接收到 %1"
+Blockly.Msg.EVENT_WHENBACKDROPSWITCHESTO = "当背景换成 %1"
+Blockly.Msg.EVENT_WHENGREATERTHAN = "当 %1 > %2"
+Blockly.Msg.EVENT_WHENGREATERTHAN_TIMER = "计时器"
+Blockly.Msg.EVENT_WHENGREATERTHAN_LOUDNESS = "响度"
+Blockly.Msg.EVENT_BROADCAST = "广播 %1"
+Blockly.Msg.EVENT_BROADCASTANDWAIT = "广播 %1 并等待"
+Blockly.Msg.EVENT_WHENKEYPRESSED = "当按下 %1 键"
+Blockly.Msg.EVENT_WHENKEYPRESSED_SPACE = "空格"
+Blockly.Msg.EVENT_WHENKEYPRESSED_LEFT = "←"
+Blockly.Msg.EVENT_WHENKEYPRESSED_RIGHT = "→"
+Blockly.Msg.EVENT_WHENKEYPRESSED_DOWN = "↓"
+Blockly.Msg.EVENT_WHENKEYPRESSED_UP = "↑"
+Blockly.Msg.EVENT_WHENKEYPRESSED_ANY = "任意"
+Blockly.Msg.LOOKS_SAYFORSECS = "说 %1 %2 秒"
+Blockly.Msg.LOOKS_SAY = "说 %1"
+Blockly.Msg.LOOKS_HELLO = "你好!"
+Blockly.Msg.LOOKS_THINKFORSECS = "思考 %1 %2 秒"
+Blockly.Msg.LOOKS_THINK = "思考 %1"
+Blockly.Msg.LOOKS_HMM = "嗯……"
+Blockly.Msg.LOOKS_SHOW = "显示"
+Blockly.Msg.LOOKS_HIDE = "隐藏"
+Blockly.Msg.LOOKS_HIDEALLSPRITES = "隐藏所有角色"
+Blockly.Msg.LOOKS_EFFECT_COLOR = "颜色"
+Blockly.Msg.LOOKS_EFFECT_FISHEYE = "鱼眼"
+Blockly.Msg.LOOKS_EFFECT_WHIRL = "漩涡"
+Blockly.Msg.LOOKS_EFFECT_PIXELATE = "像素化"
+Blockly.Msg.LOOKS_EFFECT_MOSAIC = "马赛克"
+Blockly.Msg.LOOKS_EFFECT_BRIGHTNESS = "亮度"
+Blockly.Msg.LOOKS_EFFECT_GHOST = "虚像"
+Blockly.Msg.LOOKS_CHANGEEFFECTBY = "将 %1 特效增加 %2"
+Blockly.Msg.LOOKS_SETEFFECTTO = "将 %1 特效设定为 %2"
+Blockly.Msg.LOOKS_CLEARGRAPHICEFFECTS = "清除图形特效"
+Blockly.Msg.LOOKS_CHANGESIZEBY = "将大小增加 %1"
+Blockly.Msg.LOOKS_SETSIZETO = "将大小设为 %1"
+Blockly.Msg.LOOKS_SIZE = "大小"
+Blockly.Msg.LOOKS_CHANGESTRETCHBY = "伸缩%1"
+Blockly.Msg.LOOKS_SETSTRETCHTO = "设置伸缩为%1 %"
+Blockly.Msg.LOOKS_SWITCHCOSTUMETO = "换成 %1 造型"
+Blockly.Msg.LOOKS_NEXTCOSTUME = "下一个造型"
+Blockly.Msg.LOOKS_SWITCHBACKDROPTO = "换成 %1 背景"
+Blockly.Msg.LOOKS_GOTOFRONTBACK = "移到最 %1 "
+Blockly.Msg.LOOKS_GOTOFRONTBACK_FRONT = "前面"
+Blockly.Msg.LOOKS_GOTOFRONTBACK_BACK = "后面"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS = "%1 %2 层"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_FORWARD = "前移"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_BACKWARD = "后移"
+Blockly.Msg.LOOKS_BACKDROPNUMBERNAME = "背景 %1"
+Blockly.Msg.LOOKS_COSTUMENUMBERNAME = "造型 %1"
+Blockly.Msg.LOOKS_NUMBERNAME_NUMBER = "编号"
+Blockly.Msg.LOOKS_NUMBERNAME_NAME = "名称"
+Blockly.Msg.LOOKS_SWITCHBACKDROPTOANDWAIT = "换成 %1 背景并等待"
+Blockly.Msg.LOOKS_NEXTBACKDROP_BLOCK = "下一个背景"
+Blockly.Msg.LOOKS_NEXTBACKDROP = "下一个背景"
+Blockly.Msg.LOOKS_PREVIOUSBACKDROP = "上一个背景"
+Blockly.Msg.LOOKS_RANDOMBACKDROP = "随机背景"
+Blockly.Msg.MOTION_MOVESTEPS = "移动 %1 步"
+Blockly.Msg.MOTION_TURNLEFT = "左转 %1 %2 度"
+Blockly.Msg.MOTION_TURNRIGHT = "右转 %1 %2 度"
+Blockly.Msg.MOTION_POINTINDIRECTION = "面向 %1 方向"
+Blockly.Msg.MOTION_POINTTOWARDS = "面向 %1"
+Blockly.Msg.MOTION_POINTTOWARDS_POINTER = "鼠标指针"
+Blockly.Msg.MOTION_GOTO = "移到 %1"
+Blockly.Msg.MOTION_GOTO_POINTER = "鼠标指针"
+Blockly.Msg.MOTION_GOTO_RANDOM = "随机位置"
+Blockly.Msg.MOTION_GOTOXY = "移到 x: %1 y: %2"
+Blockly.Msg.MOTION_GLIDESECSTOXY = "在 %1 秒内滑行到 x: %2 y: %3"
+Blockly.Msg.MOTION_GLIDETO = "在 %1 秒内滑行到 %2"
+Blockly.Msg.MOTION_GLIDETO_POINTER = "鼠标指针"
+Blockly.Msg.MOTION_GLIDETO_RANDOM = "随机位置"
+Blockly.Msg.MOTION_CHANGEXBY = "将x坐标增加 %1"
+Blockly.Msg.MOTION_SETX = "将x坐标设为 %1"
+Blockly.Msg.MOTION_CHANGEYBY = "将y坐标增加 %1"
+Blockly.Msg.MOTION_SETY = "将y坐标设为 %1"
+Blockly.Msg.MOTION_IFONEDGEBOUNCE = "碰到边缘就反弹"
+Blockly.Msg.MOTION_SETROTATIONSTYLE = "将旋转方式设为 %1"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT = "左右翻转"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE = "不可旋转"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND = "任意旋转"
+Blockly.Msg.MOTION_XPOSITION = "x 坐标"
+Blockly.Msg.MOTION_YPOSITION = "y 坐标"
+Blockly.Msg.MOTION_DIRECTION = "方向"
+Blockly.Msg.MOTION_SCROLLRIGHT = "向右滚动 %1"
+Blockly.Msg.MOTION_SCROLLUP = "向上滚动 %1"
+Blockly.Msg.MOTION_ALIGNSCENE = "和场景 %1 对齐"
+Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT = "左下角"
+Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT = "右下角"
+Blockly.Msg.MOTION_ALIGNSCENE_MIDDLE = "中间"
+Blockly.Msg.MOTION_ALIGNSCENE_TOPLEFT = "左上角"
+Blockly.Msg.MOTION_ALIGNSCENE_TOPRIGHT = "右上角"
+Blockly.Msg.MOTION_XSCROLL = "x滚动位置"
+Blockly.Msg.MOTION_YSCROLL = "y滚动位置"
+Blockly.Msg.MOTION_STAGE_SELECTED = "选中了舞台:不可使用运动类积木"
+Blockly.Msg.OPERATORS_ADD = "%1 + %2"
+Blockly.Msg.OPERATORS_SUBTRACT = "%1 - %2"
+Blockly.Msg.OPERATORS_MULTIPLY = "%1 * %2"
+Blockly.Msg.OPERATORS_DIVIDE = "%1 / %2"
+Blockly.Msg.OPERATORS_RANDOM = "在 %1 和 %2 中随机选一个数"
+Blockly.Msg.OPERATORS_GT = "%1 > %2"
+Blockly.Msg.OPERATORS_LT = "%1 < %2"
+Blockly.Msg.OPERATORS_EQUALS = "%1 = %2"
+Blockly.Msg.OPERATORS_AND = "%1 与 %2"
+Blockly.Msg.OPERATORS_OR = "%1 或 %2"
+Blockly.Msg.OPERATORS_NOT = "%1 不成立"
+Blockly.Msg.OPERATORS_JOIN = "连接 %1 和 %2"
+Blockly.Msg.OPERATORS_JOIN_APPLE = "苹果"
+Blockly.Msg.OPERATORS_JOIN_BANANA = "香蕉"
+Blockly.Msg.OPERATORS_LETTEROF = "%2 的第 %1 个字符"
+Blockly.Msg.OPERATORS_LETTEROF_APPLE = "果"
+Blockly.Msg.OPERATORS_LENGTH = "%1 的长度"
+Blockly.Msg.OPERATORS_CONTAINS = "%1 包含 %2 ?"
+Blockly.Msg.OPERATORS_MOD = "%1 除以 %2 的余数"
+Blockly.Msg.OPERATORS_ROUND = "将 %1 四舍五入"
+Blockly.Msg.OPERATORS_MATHOP = "%2 的 %1"
+Blockly.Msg.OPERATORS_MATHOP_ABS = "绝对值"
+Blockly.Msg.OPERATORS_MATHOP_FLOOR = "向下取整"
+Blockly.Msg.OPERATORS_MATHOP_CEILING = "向上取整"
+Blockly.Msg.OPERATORS_MATHOP_SQRT = "平方根"
+Blockly.Msg.OPERATORS_MATHOP_SIN = "sin"
+Blockly.Msg.OPERATORS_MATHOP_COS = "cos"
+Blockly.Msg.OPERATORS_MATHOP_TAN = "tan"
+Blockly.Msg.OPERATORS_MATHOP_ASIN = "asin"
+Blockly.Msg.OPERATORS_MATHOP_ACOS = "acos"
+Blockly.Msg.OPERATORS_MATHOP_ATAN = "atan"
+Blockly.Msg.OPERATORS_MATHOP_LN = "ln"
+Blockly.Msg.OPERATORS_MATHOP_LOG = "log"
+Blockly.Msg.OPERATORS_MATHOP_EEXP = "e ^"
+Blockly.Msg.OPERATORS_MATHOP_10EXP = "10 ^"
+Blockly.Msg.PROCEDURES_DEFINITION = "定义 %1"
+Blockly.Msg.SENSING_TOUCHINGOBJECT = "碰到 %1 ?"
+Blockly.Msg.SENSING_TOUCHINGOBJECT_POINTER = "鼠标指针"
+Blockly.Msg.SENSING_TOUCHINGOBJECT_EDGE = "舞台边缘"
+Blockly.Msg.SENSING_TOUCHINGCOLOR = "碰到颜色 %1 ?"
+Blockly.Msg.SENSING_COLORISTOUCHINGCOLOR = "颜色 %1 碰到 %2 ?"
+Blockly.Msg.SENSING_DISTANCETO = "到 %1 的距离"
+Blockly.Msg.SENSING_DISTANCETO_POINTER = "鼠标指针"
+Blockly.Msg.SENSING_ASKANDWAIT = "询问 %1 并等待"
+Blockly.Msg.SENSING_ASK_TEXT = "你叫什么名字?"
+Blockly.Msg.SENSING_ANSWER = "回答"
+Blockly.Msg.SENSING_KEYPRESSED = "按下 %1 键?"
+Blockly.Msg.SENSING_MOUSEDOWN = "按下鼠标?"
+Blockly.Msg.SENSING_MOUSEX = "鼠标的x坐标"
+Blockly.Msg.SENSING_MOUSEY = "鼠标的y坐标"
+Blockly.Msg.SENSING_SETDRAGMODE = "将拖动模式设为 %1"
+Blockly.Msg.SENSING_SETDRAGMODE_DRAGGABLE = "可拖动"
+Blockly.Msg.SENSING_SETDRAGMODE_NOTDRAGGABLE = "不可拖动"
+Blockly.Msg.SENSING_LOUDNESS = "响度"
+Blockly.Msg.SENSING_LOUD = "响声?"
+Blockly.Msg.SENSING_TIMER = "计时器"
+Blockly.Msg.SENSING_RESETTIMER = "计时器归零"
+Blockly.Msg.SENSING_OF = "%2 的 %1"
+Blockly.Msg.SENSING_OF_XPOSITION = "x 坐标"
+Blockly.Msg.SENSING_OF_YPOSITION = "y 坐标"
+Blockly.Msg.SENSING_OF_DIRECTION = "方向"
+Blockly.Msg.SENSING_OF_COSTUMENUMBER = "造型编号"
+Blockly.Msg.SENSING_OF_COSTUMENAME = "造型名称"
+Blockly.Msg.SENSING_OF_SIZE = "大小"
+Blockly.Msg.SENSING_OF_VOLUME = "音量"
+Blockly.Msg.SENSING_OF_BACKDROPNUMBER = "背景编号"
+Blockly.Msg.SENSING_OF_BACKDROPNAME = "背景名称"
+Blockly.Msg.SENSING_OF_STAGE = "舞台"
+Blockly.Msg.SENSING_CURRENT = "当前时间的 %1"
+Blockly.Msg.SENSING_CURRENT_YEAR = "年"
+Blockly.Msg.SENSING_CURRENT_MONTH = "月"
+Blockly.Msg.SENSING_CURRENT_DATE = "日"
+Blockly.Msg.SENSING_CURRENT_DAYOFWEEK = "星期"
+Blockly.Msg.SENSING_CURRENT_HOUR = "时"
+Blockly.Msg.SENSING_CURRENT_MINUTE = "分"
+Blockly.Msg.SENSING_CURRENT_SECOND = "秒"
+Blockly.Msg.SENSING_DAYSSINCE2000 = "2000年至今的天数"
+Blockly.Msg.SENSING_USERNAME = "用户名"
+Blockly.Msg.SENSING_USERID = "用户id"
+Blockly.Msg.SOUND_PLAY = "播放声音 %1"
+Blockly.Msg.SOUND_PLAYUNTILDONE = "播放声音 %1 等待播完"
+Blockly.Msg.SOUND_STOPALLSOUNDS = "停止所有声音"
+Blockly.Msg.SOUND_SETEFFECTO = "将 %1 音效设为 %2"
+Blockly.Msg.SOUND_CHANGEEFFECTBY = "将 %1 音效增加 %2"
+Blockly.Msg.SOUND_CLEAREFFECTS = "清除音效"
+Blockly.Msg.SOUND_EFFECTS_PITCH = "音调"
+Blockly.Msg.SOUND_EFFECTS_PAN = "左右平衡"
+Blockly.Msg.SOUND_CHANGEVOLUMEBY = "将音量增加 %1"
+Blockly.Msg.SOUND_SETVOLUMETO = "将音量设为 %1%"
+Blockly.Msg.SOUND_VOLUME = "音量"
+Blockly.Msg.SOUND_RECORD = "录制…"
+Blockly.Msg.CATEGORY_MOTION = "运动"
+Blockly.Msg.CATEGORY_LOOKS = "外观"
+Blockly.Msg.CATEGORY_SOUND = "声音"
+Blockly.Msg.CATEGORY_EVENTS = "事件"
+Blockly.Msg.CATEGORY_CONTROL = "控制"
+Blockly.Msg.CATEGORY_SENSING = "侦测"
+Blockly.Msg.CATEGORY_OPERATORS = "运算"
+Blockly.Msg.CATEGORY_VARIABLES = "变量"
+Blockly.Msg.CATEGORY_MYBLOCKS = "自制积木"
+Blockly.Msg.DUPLICATE = "复制"
+Blockly.Msg.DUPLICATE_PASTE = "复制并粘贴"
+Blockly.Msg.DELETE = "删除"
+Blockly.Msg.ADD_COMMENT = "添加注释"
+Blockly.Msg.REMOVE_COMMENT = "删除注释"
+Blockly.Msg.DELETE_BLOCK = "删除"
+Blockly.Msg.DELETE_X_BLOCKS = "删除 %1 积木"
+Blockly.Msg.DELETE_ALL_BLOCKS = "删除全部 %1 积木?"
+Blockly.Msg.CLEAN_UP = "整理积木"
+Blockly.Msg.HELP = "帮助"
+Blockly.Msg.UNDO = "撤销"
+Blockly.Msg.REDO = "重做"
+Blockly.Msg.EDIT_PROCEDURE = "编辑"
+Blockly.Msg.SHOW_PROCEDURE_DEFINITION = "查看定义"
+Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT = "说些什么……"
+Blockly.Msg.COLOUR_HUE_LABEL = "颜色"
+Blockly.Msg.COLOUR_SATURATION_LABEL = "饱和度"
+Blockly.Msg.COLOUR_BRIGHTNESS_LABEL = "亮度"
+Blockly.Msg.CHANGE_VALUE_TITLE = "更改变量:"
+Blockly.Msg.RENAME_VARIABLE = "修改变量名"
+Blockly.Msg.RENAME_VARIABLE_TITLE = "将所有的「%1」变量名改为:"
+Blockly.Msg.RENAME_VARIABLE_MODAL_TITLE = "修改变量名"
+Blockly.Msg.NEW_VARIABLE = "建立一个变量"
+Blockly.Msg.NEW_VARIABLE_TITLE = "新变量名:"
+Blockly.Msg.VARIABLE_MODAL_TITLE = "新建变量"
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "已经存在名为「%1」的变量。"
+Blockly.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE = "已经存在一个名为「%1」的变量,其类型为「%2」。"
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "删除%1处「%2」变量吗?"
+Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE = "无法删除变量「%1」,因为函数「%2」的定义中用到了它"
+Blockly.Msg.DELETE_VARIABLE = "删除变量「%1」"
+Blockly.Msg.NEW_PROCEDURE = "制作新的积木"
+Blockly.Msg.PROCEDURE_ALREADY_EXISTS = "已经存在名为「%1」的程序。"
+Blockly.Msg.PROCEDURE_DEFAULT_NAME = "积木名称"
+Blockly.Msg.NEW_LIST = "建立一个列表"
+Blockly.Msg.NEW_LIST_TITLE = "新的列表名:"
+Blockly.Msg.LIST_MODAL_TITLE = "新建列表"
+Blockly.Msg.LIST_ALREADY_EXISTS = "名为 「%1」 的列表已存在。"
+Blockly.Msg.RENAME_LIST_TITLE = "将所有的「%1」的列表名改为:"
+Blockly.Msg.RENAME_LIST_MODAL_TITLE = "修改列表名"
+Blockly.Msg.DEFAULT_LIST_ITEM = "东西"
+Blockly.Msg.NEW_BROADCAST_MESSAGE = "新消息"
+Blockly.Msg.NEW_BROADCAST_MESSAGE_TITLE = "新消息的名称:"
+Blockly.Msg.BROADCAST_MODAL_TITLE = "新消息"
+Blockly.Msg.DEFAULT_BROADCAST_MESSAGE_NAME = "消息1"
+Blockly.Msg.GROVEZERO_MINIWHEEL_SET_POWER = "%1 %2 小车底盘 左轮动力 %3 %,右轮动力 %4 %"
+Blockly.Msg.GROVEZERO_MINIWHEEL_STOP = "%1 %2 小车底盘 停止运动"
+Blockly.Msg.GROVEZERO_MINIWHEEL_RUN_VELOCITY_AZIMUTH = "%1 %2 小车底盘 以 %3 %4"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT1 = "慢速"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT2 = "中速"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT3 = "快速"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT4 = "前进"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT5 = "后退"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT6 = "左转"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT7 = "右转"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT8 = "顺时针转"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT9 = "逆时针转"
+Blockly.Msg.GROVEZERO_MOTOR_STOP = "%1 %2 %3 直流减速电机 停止转动"
+Blockly.Msg.GROVEZERO_DC_MOTOR_TRUN_POWER = "%1 %2 %3 直流减速电机 开始转动 动力 %4 %"
+Blockly.Msg.GROVEZERO_SERVO_TURN_ANGLE = "%1 %2 舵机 转到 %3 度"
+Blockly.Msg.GROVEZERO_RGB_TO_COLOR = "%1 %2 红 %3 绿 %4 蓝 %5"
+Blockly.Msg.GROVEZERO_HSL_TO_COLOR = "%1 %2 颜色 %3 饱和度 %4 亮度 %5"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_IS_ON = "%1 %2 LED 矩阵 x:%3 y:%4 是否被点亮?"
+Blockly.Msg.GROVEZERO_LED_MATRIX_SHOW_SHAPE = "%1 %2 LED 矩阵 显示图案 %3"
+Blockly.Msg.GROVEZERO_LED_MATRIX_SHOW_STRING = "%1 %2 LED 矩阵 显示字符串 %3"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_SET_ON = "%1 %2 LED 矩阵 点亮 x: %3 y: %4"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_SET_OFF = "%1 %2 LED 矩阵 熄灭 x: %3 y: %4"
+Blockly.Msg.GROVEZERO_LED_MATRIX_CLEAN = "%1 %2 LED 矩阵 全部熄灭"
+Blockly.Msg.GROVEZERO_RGB_LED_SHOW_STYLE_COLOR = "%1 %2 可调彩灯 一直 %3 %4"
+Blockly.Msg.GROVEZERO_RGB_LED_SHOW_STYLE = "%1 %2 可调彩灯 %3 效果"
+Blockly.Msg.GROVEZERO_RGB_LED_FADE_FROM_COLOR1_TO_COLOR2 = "%1 %2 可调彩灯 从 %3 渐变到 %4"
+Blockly.Msg.GROVEZERO_RGB_LED_SET_BRIGHTNESS = "%1 %2 可调彩灯 设置亮度为 %3 %"
+Blockly.Msg.GROVEZERO_RGB_LED_LIGHT_OFF = "%1 %2 可调彩灯 熄灭"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT1 = "亮"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT2 = "闪烁"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT3 = "呼吸"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT4 = "彩虹灯"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT5 = "随机色"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_SHAPE = "%1 %2 %3 RGB LED 矩阵 显示图案 %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_STRING = "%1 %2 %3 RGB LED 矩阵 显示字符串 %4 %5"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_ANIMA = "%1 %2 %3 RGB LED 矩阵 显示动画 %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_HISTOGRAM = "%1 %2 %3 RGB LED 矩阵 绘制柱状图 值为 %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON = "%1 %2 %3 RGB LED 矩阵 点亮 x: %4 y: %5 %6"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_OFF = "%1 %2 %3 RGB LED 矩阵 熄灭 x: %4 y: %5"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OFF = "%1 %2 %3 RGB LED 矩阵 开关 x: %4 y: %5 %6"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_IS_ON = "%1 %2 %3 RGB LED 矩阵 x: %4 y: %5 被点亮"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_CLEAN = "%1 %2 %3 RGB LED 矩阵 全部熄灭"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_GET_COLOR = "%1 %2 %3 RGB LED 矩阵 x: %4 y: %5 颜色值"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT1 = "波浪"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT2 = "顺时针画大方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT3 = "顺时针画小方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT4 = "逆时针画大方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT5 = "逆时针画小方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT6 = "变幻"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT7 = "火焰"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT8 = "行走"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT9 = "心碎"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT1 = "红"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT2 = "橙"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT3 = "黄"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT4 = "绿"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT5 = "青"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT6 = "蓝"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT7 = "紫"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT8 = "粉红"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT9 = "白"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT10 = "黑"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_WHEN_COUNTDOWN_END = "%1 %2 四位数码管 倒数结束"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_SHOW_NUMBER = "%1 %2 四位数码管 显示 %3"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_START_COUNTDOWN = "%1 %2 四位数码管 开始倒数 %3 秒"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_OFF = "%1 %2 四位数码管 熄灭"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_SET_BRIGHTNESS = "%1 %2 四位数码管 设置亮度 %3 %"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY = "%1 %2 蜂鸣器 播放旋律 %3 一次"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT0 = "ba ding"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT1 = "wawawawaa"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT2 = "jump up"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT3 = "jump down"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT4 = "power up"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT5 = "power down"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT6 = "magic wand"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT7 = "siren"
+Blockly.Msg.GROVEZERO_BUZZER_MUTE_FOR_BEAT = "%1 %2 蜂鸣器 停顿 %3 拍"
+Blockly.Msg.GROVEZERO_BUZZER_SET_BPM = "%1 %2 蜂鸣器 将节奏(bpm) 设定为 %3"
+Blockly.Msg.GROVEZERO_BUZZER_ADD_BPM = "%1 %2 蜂鸣器 将节奏(bpm) 增加 %3"
+Blockly.Msg.GROVEZERO_BUZZER_GET_BPM = "%1 %2  蜂鸣器 节奏(bpm)"
+Blockly.Msg.GROVEZERO_BUZZER_STOP = "%1 %2 蜂鸣器 停止播放"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_NOTE = "%1 %2 蜂鸣器 持续播放音符  %3"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_NOTE_FOR_BEAT = "%1 %2 蜂鸣器 弹奏音符 %3 持续 %4 拍"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT0 = "低 C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT1 = "低 D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT2 = "低 E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT3 = "低 F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT4 = "低 G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT5 = "低 A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT6 = "低 B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT7 = "中 C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT8 = "中 D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT9 = "中 E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT10 = "中 F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT11 = "中 G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT12 = "中 A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT13 = "中 B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT14 = "高 C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT15 = "高 D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT16 = "高 E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT17 = "高 F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT18 = "高 G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT19 = "高 A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT20 = "高 B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT21 = "低 C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT22 = "低 D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT23 = "低 F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT24 = "低 G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT25 = "低 A#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT26 = "中 C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT27 = "中 D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT28 = "中 F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT29 = "中 G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT30 = "中 A#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT31 = "高 C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT32 = "高 D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT33 = "高 F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT34 = "高 G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT35 = "高 A#"
+Blockly.Msg.GROVEZERO_MP3_START_PLAY = "%1 %2 MP3播放器 播放第 %3 首歌"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY = "%1 %2 MP3播放器 %3 播放"
+Blockly.Msg.GROVEZERO_MP3_SWITCH = "%1 %2 MP3播放器 %3"
+Blockly.Msg.GROVEZERO_MP3_ADD_VOLUME = "%1 %2 MP3播放器 将音量增加 %3 %"
+Blockly.Msg.GROVEZERO_MP3_SET_VOLUME = "%1 %2 MP3播放器 将音量设定为 %3 %"
+Blockly.Msg.GROVEZERO_MP3_STOP_PLAY = "%1 %2 MP3播放器 停止播放"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE = "%1 %2 MP3播放器 模式为 %3"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT0 = "暂停"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT1 = "恢复"
+Blockly.Msg.GROVEZERO_MP3_SWITCH_OPT0 = "下一首"
+Blockly.Msg.GROVEZERO_MP3_SWITCH_OPT1 = "上一首"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT0 = "顺序播放"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT1 = "随机播放"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT2 = "单曲循环"
+Blockly.Msg.GROVEZERO_MAINBOARD_START = "%1 %2 当控制板启动时"
+Blockly.Msg.GROVEZERO_MAINBOARD_WHEN_ARRIVAL_TIME = "%1 %2 当计时器大于 %3 秒"
+Blockly.Msg.GROVEZERO_MAINBOARD_WHEN_RADIO_RECEIVE = "%1 %2 当无线接收到 %3"
+Blockly.Msg.GROVEZERO_MAINBOARD_BROADCAST = "%1 %2 广播 %3"
+Blockly.Msg.GROVEZERO_MAINBOARD_STOP_BROADCAST = "%1 %2 停止广播"
+Blockly.Msg.GROVEZERO_MAINBOARD_SET_BROADCAST_CHANNEL = "%1 %2 设置广播频道 %3"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK = "%1 %2 当 %3 双按钮开关 的 %4 被 %5"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_IS_PRESSED = "%1 %2 %3 双按钮开关 的 %4 正在被按下?"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT3 = "单击"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT5 = "长按"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_WHEN_CHANGE = "%1 %2 当 9轴姿态传感器 %3"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT0 = "竖直向下"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT1 = "竖直向上"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT2 = "向左倾斜"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT3 = "向右倾斜"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT4 = "正面朝上"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT5 = "正面朝下"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT6 = "被摇晃"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT7 = "自由落体"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_IS = "%1 %2 9轴姿态传感器 %3 ?"
+Blockly.Msg.GROVEZERO_IMU9_DOF_GET_VALUE = "%1 %2 9轴姿态传感器 %3 轴加速度值(mg)"
+Blockly.Msg.GROVEZERO_PIR_MOTION_SENSOR_DETECT_SOMEONE = "%1 %2 当 红外运动传感器 检测到人"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK = "%1 %2 当 %3 机械按钮开关 被 %4"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT0 = "单击"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT1 = "长按"
+Blockly.Msg.GROVEZERO_MECH_KEY_IS_PRESSED = "%1 %2 %3 机械按钮开关 正在被按下?"
+Blockly.Msg.GROVEZERO_MECH_KEY_SET_RGB = "%1 %2 %3 机械按钮开关 背灯亮 %4"
+Blockly.Msg.GROVEZERO_MECH_KEY_CLOSE_RGB = "%1 %2 %3 机械按钮开关 背灯熄灭"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE = "%1 %2 当 %3 旋钮调节器被 %4"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT0 = "顺时针旋转"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT1 = "逆时针旋转"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT2 = "按下"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE = "%1 %2 当 手势识别传感器 检测到 %3"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT0 = "向左划"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT1 = "向右划"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT2 = "向上划"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT3 = "向下划"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT4 = "物体靠近"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT5 = "物体远离"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT6 = "顺时针画圈"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT7 = "逆时针画圈"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT8 = "手指舞动"
+Blockly.Msg.GROVEZERO_TOUCHPAD_IS_PRESSED = "%1 %2 %3 多触摸开关 引脚 %4 被按下?"
+Blockly.Msg.GROVEZERO_TOUCHPAD_WHEN_CLICK = "%1 %2 当 %3 多触摸开关 引脚 %4 被按下"
+Blockly.Msg.GROVEZERO_LIGHT_SENSOR_GET_VALUE = "%1 %2 光线传感器 光线强度(流明)"
+Blockly.Msg.GROVEZERO_SOUND_SENSOR_GET_VALUE = "%1 %2 声音传感器 声音响度"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE = "%1 %2 温度传感器 温度值 %3"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT0 = "℃"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT1 = "℉"
+Blockly.Msg.GROVEZERO_SLIDER_GET_VALUE = "%1 %2 %3 滑动变阻器 值"
+Blockly.Msg.GROVEZERO_ULTRASONIC_SENSOR_GET_VALUE = "%1 %2 超声波测距传感器 距离(厘米)"
+Blockly.Msg.GROVEZERO_TEMHUM_SENSOR_GET_TEM_VALUE = "%1 %2 温湿度传感器 温度值 %3"
+Blockly.Msg.GROVEZERO_TEMHUM_SENSOR_GET_HUM_VALUE = "%1 %2 温湿度传感器 湿度值(%)"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_GET_COLOR = "%1 %2 识色循迹传感器 颜色值"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITION = "%1 %2 识色循迹传感器 线的位置为 %3"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT0 = "中"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT1 = "右"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT2 = "最右"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT3 = "左"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT4 = "最左"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT5 = "丢失"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR = "%1 %2 识色循迹传感器 检测到 %3 色"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT0 = "红"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT1 = "绿"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT2 = "蓝"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT3 = "黑"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT4 = "其他"
+Blockly.Msg.ARDUINO_SEEED_SERVO_MOVE = "%1 %2 舵机 管脚 %3 角度 %4 延时 %5"
+Blockly.Msg.ARDUINO_SEEED_SERVO_READ_DEGREES = "%1 %2 舵机 管脚 %3 读取读取"
+Blockly.Msg.ARDUINO_SEEED_LED = "%1 %2 LED灯 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_SEEED_BUZZER = "%1 %2 蜂鸣器 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_SEEED_RELAY = "%1 %2 继电器 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_SEEED_BTN = "%1 %2 按键正在被按下 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_TILT = "%1 %2 倾斜传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_TOUCH = "%1 %2 触摸 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_ROTATION = "%1 %2 旋转电位计 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_SOUND = "%1 %2 噪声(模拟) 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_LIGHT = "%1 %2 光线传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE = "%1 %2 温度传感器 管脚 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT = "%1 %2 全彩背光LCD屏 打印第1行 %3 打印第2行 %4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT2 = "%1 %2 全彩背光LCD屏 在第 %3 行 第 %4 列 打印 %5"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER = "%1 %2 全彩背光LCD屏 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT1 = "开"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT2 = "关"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT3 = "有光标"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT4 = "无光标"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT5 = "闪烁"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT6 = "不闪烁"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT7 = "清除"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_SETRGB = "%1 %2 全彩背光LCD屏 设置颜色 R %3 G %4 B %5"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY = "%1 %2 温湿度传感器 管脚 %3 %4"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT1 = "温度"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT2 = "湿度"
+Blockly.Msg.ARDUINO_SEEED_THUMB_JOYSTICK = "%1 %2 拇指控制杆管脚 %3 坐标值 %4轴"
+Blockly.Msg.ARDUINO_SEEED_ULT = "%1 %2 超声波测距传感器距离(cm) 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_LINE_FINDER = "%1 %2 红外接近传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_LINE_FINDER_R = "%1 %2 巡线传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_WATER = "%1 %2 水分子检测传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_MAGNETIC_SWITCH = "%1 %2 磁力开关 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_PIR_MOTION = "%1 %2 人体红外传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_FLAME = "%1 %2 火焰传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_COLLISION = "%1 %2 碰撞传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_HALL = "%1 %2 霍尔电磁开关 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_SLIDE_POT = "%1 %2 滑动电位开关 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_MOISTURE = "%1 %2 土壤湿度传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_4DIGIT_DISPLAY = "%1 %2 4位数码管 管脚 %3 显示为 %4"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED = "%1 %2 炫彩RGB LED灯 管脚 %3 显示为 %4 序号 %5"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED1 = "%1 %2 炫彩RGB LED灯 管脚 %3 显示为 R %4 G %5 B %6 序号 %7"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED10 = "%1 %2 炫彩RGB LED灯 管脚 %3 显示为 %4"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED11 = "%1 %2 炫彩RGB LED灯 管脚 %3 显示为 R %4 G %5 B %6"
+Blockly.Msg.ARDUINO_SEEED_SPEAKER = "%1 %2 扬声器 管脚 %3 播放音符 %4 以%5拍"
+Blockly.Msg.ARDUINO_SEEED_RECORDER = "%1 %2 录音播放模块 管脚 %3 %4"
+Blockly.Msg.ARDUINO_SEEED_EL_DRIVER = "%1 %2 冷光条驱动 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_SEEED_EL_VIBRATION_MOTOR = "%1 %2 震动马达 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_SEEED_ELECTROMAGNET = "%1 %2 电磁铁模块 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_SEEED_MINI_FAN = "%1 %2 迷你风扇 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_3ADA = "%1 %2 三轴数字加速度(16g) %3 轴"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_TOUCH = "%1 %2 多通道触摸传感器 通道 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER = "%1 %2 迷你电机驱动模块 电机 %3 转速(-255~255)%4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER_STOP = "%1 %2 迷你电机驱动模块 电机 %3 停止"
+Blockly.Msg.ARDUINO_SEEED_LED_STRING_LIGHT = "%1 %2 LED灯条 管脚 %3 编号 %4 显示为 R %5 G %6 B %7"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR = "%1 %2 柱状发光二级管 管脚 %3 %4 %5"
+Blockly.Msg.ARDUINO_SEEED_LED_CIRCULAR_LED = "%1 %2 环形发光二级管 管脚 %3 亮灯 %4"
+Blockly.Msg.ARDUINO_SEEED_GESTURE = "%1 %2 手势识别传感器 识别手势 %3?"
+Blockly.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER = "%1 %2  语音识别传感器 管脚 %3 识别语音 %4?"
+Blockly.Msg.ARDUINO_FIGURE_OUTPUT = "数字输出 管脚 %1 设为 %2"
+Blockly.Msg.ARDUINO_FIGURE_INPUT = "数字输入 管脚 %1"
+Blockly.Msg.ARDUINO_ANALOG_INPUT = "模拟输入 管脚 %1"
+Blockly.Msg.ARDUINO_ANALOG_OUTPUT = "模拟输出 管脚 %1 赋值为 %2"
+Blockly.Msg.ARDUINO_PULSE_LEN = "脉冲长度 管脚 %1 状态 %2"
+Blockly.Msg.ARDUINO_PULSE_LEN_US = "脉冲长度 管脚 %1 状态 %2 超时(微秒) %3"
+Blockly.Msg.ARDUINO_SERIAL_BAUD_RATE = "串口 波特率 %1"
+Blockly.Msg.ARDUINO_SERIAL_PRINT = "串口 写入文本 %1"
+Blockly.Msg.ARDUINO_SERIAL_IS_READABLE = "串口 有数据可读吗?"
+Blockly.Msg.ARDUINO_SERIAL_READ = "串口 读取字符串"
+Blockly.Msg.ARDUINO_DELAY_MS = "延时 毫秒 %1"
+Blockly.Msg.ARDUINO_DELAY_US = "延时 微秒 %1"
+Blockly.Msg.ARDUINO_SYS_TIME = "系统运行时间 %1"
+Blockly.Msg.ARDUINO_KEEP_WAIT = "一直等待(结束程序)"
+Blockly.Msg.ARDUINO_FOR1 = "使用 %1 从 %2 到 %3 步长为 %4"
+Blockly.Msg.ARDUINO_FOR2 = "执行 %1"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT = "%1 %2 RGB矩阵 点亮 x:%3 y:%4 %5"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_TEXT = "%1 %2 RGB矩阵 显示字符串 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_EMOJS = "%1 %2 RGB矩阵 显示图案 %3"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1 = "%1 %2 Otto DIY机器人 %3 步数:%4 时间:%5"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2 = "%1 %2 Otto DIY机器人 %3 步数:%4 时间:%5 方向:%6"
+Blockly.Msg.ARDUINO_SETUP_LOOP0 = "初始化 setup"
+Blockly.Msg.ARDUINO_SETUP_LOOP2 = "循环 loop"
+Blockly.Msg.ARDUINO_REPEAT = "重复当 %1"
+Blockly.Msg.ARDUINO_BREAK = "中断循环"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT0 = "向上"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT1 = "向下"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT2 = "向左"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT3 = "向右"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT4 = "向前"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT5 = "向后"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT6 = "顺时针"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT7 = "逆时针"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT8 = "挥手"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT0 = "红"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT1 = "橙"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT2 = "黄"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT3 = "绿"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT4 = "青"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT5 = "蓝"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT6 = "紫"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT7 = "粉红"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT8 = "白"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT9 = "熄灭"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT0 = "前进"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT1 = "后退"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT2 = "往左"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT3 = "往右"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT0 = "停止"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT1 = "跳动"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT2 = "侧踢"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT3 = "摇摇腿"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT4 = "上下摇摆"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT5 = "左右摇摆"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT6 = "舞动脚尖"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT7 = "抖动"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT8 = "上下抖动"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT9 = "太空步"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT10 = "月球漫步"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT11 = "摇摆"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT12 = "向右/向前"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT13 = "向左/向后"
+Blockly.Msg.ARDUINO_SHIELD_BOT2 = "%1 %2 Shield Bot 小车 循迹传感器线的位置为 %3"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT1 = "中"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT2 = "左"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT3 = "最左"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT4 = "右"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT5 = "最右"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT6 = "丢失"
+Blockly.Msg.ARDUINO_SHIELD_BOT1 = "%1 %2 Shield Bot 小车 %3 %4"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT1 = "前进"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT2 = "后退"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT3 = "往左"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT4 = "往右"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT5 = "停止"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT6 = "低速"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT7 = "中速"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT8 = "高速"
+Blockly.Msg.CATEGORY_ARDUINO_INIT = "初始化"
+Blockly.Msg.CATEGORY_ARDUINO_INPUT = "输入"
+Blockly.Msg.CATEGORY_ARDUINO_OUTPUT = "输出"
+Blockly.Msg.CATEGORY_ARDUINO_SERIAL = "串口"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_IGURE = "Grove 数字"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_ANALOG = "Grove 模拟"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_I2C = "Grove I2C"
+Blockly.Msg.CATEGORY_ARDUINO_ROBOT_KIT = "M.A.R.K"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW = "%1 %2 web服务器 %3 %4 显示 名称:%5 数值:%6"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT1 = "水分子检测传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT2 = "超声波测距传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT3 = "人体红外传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT4 = "温湿度传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT5 = "LED灯"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT6 = "振动传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT7 = "电压分压器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT8 = "空气质量传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT9 = "火焰传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT10 = "图像识别传感器"
+Blockly.Msg.ARDUINO_WEBSERVER_INIT = "%1 %2 web服务器 初始化 %3 网络名称 %4 密码 %5"
+Blockly.Msg.ARDUINO_WEBSERVER_INIT_OPT1 = "智慧城市"
+Blockly.Msg.ARDUINO_COLOR_SENSOR = "%1 %2 颜色识别传感器 识别到颜色 %3 ?"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT1 = "红"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT2 = "绿"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT3 = "蓝"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT4 = "黑"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT5 = "白"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT6 = "其他"
+Blockly.Msg.GROVEZERO_MATH_ITOA_VALUE_MESSAGE0 = "转字符串 %1"
+Blockly.Msg.TOOLBOX_EXTENSION_CATEGORY_NAME = "扩展"
+Blockly.Msg.ARDUINO_SEEED_VOLTAGE = "%1 %2 电压分压器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_QUALITY = "%1 %2 空气质量传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_WATER_ANALOG = "%1 %2 水分子检测传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_HUMIDIFIER = "%1 %2 超声波雾化器 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_SEEED_VIBRATION = "%1 %2 震动传感器 管脚 %3"
+Blockly.Msg.ARDUINO_SEEED_LED_ANALOG = "%1 %2 LED灯 管脚 %3 设为 %4"
+Blockly.Msg.ARDUINO_VISION_SENSOR1 = "%1 %2 图像识别传感器 识别 球体 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR1_OPT1 = "橙色乒乓球"
+Blockly.Msg.ARDUINO_VISION_SENSOR1_OPT2 = "绿色网球"
+Blockly.Msg.ARDUINO_VISION_SENSOR2 = "%1 %2 图像识别传感器 识别 交通标示卡片 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR3 = "%1 %2 图像识别传感器 识别 数字卡片 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR4 = "%1 %2 图像识别传感器 识别 图形卡片 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT1 = "对号"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT2 = "叉号"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT3 = "圆形"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT4 = "方形"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT5 = "三角形"
+Blockly.Msg.ARDUINO_VISION_SENSOR5 = "%1 %2 图像识别传感器 识别 人体"
+Blockly.Msg.ARDUINO_VISION_SENSOR6 = "%1 %2 图像识别传感器 识别 颜色 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR7 = "%1 %2 图像识别传感器 获取识别颜色值"
+Blockly.Msg.BUZZER_TONE_LOW = "低"
+Blockly.Msg.BUZZER_TONE_MIDDLE = "中"
+Blockly.Msg.BUZZER_TONE_HIGH = "高"
+Blockly.Msg.BUZZER_SELECTED_PREFIX = "已选:"
+Blockly.Msg.ARDUINO_LED_STRIP1 = "%1 %2 炫彩RGB LED灯条 管脚 %3 显示为R值 %4 G值 %5 B值 %6 序号 %7"
+Blockly.Msg.ARDUINO_LED_STRIP2 = "%1 %2 炫彩RGB LED灯条 管脚 %3 显示为R值 %4 G值 %5 B值 %6"
+Blockly.Msg.ARDUINO_VISION_SENSOR8 = "%1 %2 图像识别传感器 获取球体 %3 值"
+Blockly.Msg.ARDUINO_OLCD1 = "%1 %2 OLCD屏幕 显示图案 %3"
+Blockly.Msg.ARDUINO_OLCD2 = "%1 %2 OLCD屏幕 显示字符串 %3 第 %4 行,第 %5 列"
+Blockly.Msg.ARDUINO_OLCD3 = "%1 %2 OLCD屏幕 清除显示"
+Blockly.Msg.MAIXDUINO_ENENT_WHENSTARTUP = "当启动时"
+Blockly.Msg.MAIXDUINO_DISPLAY_STRING = "显示 %1 于第 %2 行"
+Blockly.Msg.MAIXDUINO_DISPLAY_SET_CIRCLE = "绘制圆形:圆心坐标 X%1 Y%2 半径%3"
+Blockly.Msg.MAIXDUINO_DISPLAY_SET_RECTANGLE = "绘制长方形: X1%1 Y1%2 X2%3 Y2%4"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_CIRCLE = "%1 %2 绘制圆形区域 %3"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE = "%1 %2 绘制长方形区域 %3"
+Blockly.Msg.MAIXDUINO_CAMERA_SET_THRESHOLD = "设置图像识别 灵敏度为 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_TAKE_PICTURE = "拍照: 文件名 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_TAKE_VIDEO = "录像:时间 %1 秒, 文件名 %2"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL = "检测到圆形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_COORD = "检测到的圆 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_VALUE = "检测到的圆信息"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE = "检测到长方形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_COORD = "检测到的长方形 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_VALUE = "检测到的长方形信息"
+Blockly.Msg.MAIXDUINO_CAMERA_GET_BALL_AVERAGE_COLOR = "%1 %2 球形区域:X坐标 %3 Y坐标 %4 R值 %5 的平均颜色RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_GET_RECTANGLE_AVERAGE_COLOR = "%1 %2 长方形区域:Xmin坐标 %3 Xmax坐标 %4 Ymin坐标 %5 Ymax坐标 %6 的平均颜色RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_COLOR = "%1 %2 兴趣区域 %3 检测到 %4"
+Blockly.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_AVERAGE_COLOR = "%1 %2 兴趣区域 %3 的平均颜色RGB值"
+Blockly.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_DETECTION = "家庭动物识别结果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_SEL_DETECTION = "家庭动物 识别结果为 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_DETECTION = "动物园动物识别结果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_SEL_DETECTION = "动物园动物 识别结果为 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_DETECTION = "普通物体识别结果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_SEL_DETECTION = "普通物体 识别结果为 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_NUM_DETECTION = "检测到的数字结果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_NUM_SEL_DETECTION = "数字 检测结果为 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_NUM_CERTRE_DETECTION = "检测到的数字 %1 的 %2 概率 > %3 %"
+Blockly.Msg.MAIXDUINO_SENSING_TRAFFIC_SIGNS_DETECTION = "检测到的交通标志 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_SEL_DETECTION = "交通标志 检测结果为 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_CERTRE_DETECTION = "检测到的交通标志 %1 的 %2 概率 >%3 %"
+Blockly.Msg.MAIXDUINO_INPUT_SYSTEMTIME = "系统运行时间 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_R_MAX = "R最大"
+Blockly.Msg.MAIXDUINO_CAMERA_R_MIN = "R最小"
+Blockly.Msg.MAIXDUINO_CAMERA_SIZE_MAX = "最大"
+Blockly.Msg.MAIXDUINO_CAMERA_SIZE_MIN = "最小"
+Blockly.Msg.MAIXDUINO_CAMERA_COORD_X = "位置:X坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_Y = "Y坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_XMIN = "位置:Xmin坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_YMIN = "位置:Ymin坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_XMAX = "位置:Xmax坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_YMAX = "位置:Ymax坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_R_VALUE = "半径"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT1 = "红色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT2 = "绿色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT3 = "蓝色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT4 = "黄色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT5 = "青色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT6 = "紫色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT7 = "黑色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT8 = "白色"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT1 = "猫"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT2 = "狗"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT3 = "鸟"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT4 = "刺猬"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT5 = "老鼠"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT6 = "鳄鱼"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT7 = "熊"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT8 = "大象"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT9 = "长颈鹿"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT10 = "老虎"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT11 = "蝴蝶"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT12 = "蟑螂"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT13 = "鱼"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT14 = "蜥蜴"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT15 = "蜘蛛"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT0 = "左转"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT1 = "右转"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT2 = "直行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT3 = "调头"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT4 = "停车让行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT5 = "限速5"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT6 = "限速80"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT7 = "禁止直行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT8 = "减速让行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT9 = "注意行人"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT1 = "椅子"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT2 = "书籍"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT3 = "杯子"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT4 = "笔"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT5 = "比萨饼"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT6 = "智能手机"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT7 = "炸弹"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT8 = "电脑"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT9 = "人"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT10 = "背包"
+Blockly.Msg.MAIXDUINO_SENSING_COORD_X = "X 坐标"
+Blockly.Msg.MAIXDUINO_SENSING_COORD_Y = "Y 坐标"
+Blockly.Msg.MAIXDUINO_LINEPAROL_ANGLE = "%1 %2 巡线 设置线识别颜色为 %3 区域权重 红区%4%  蓝区%5%  绿区%6%"
+Blockly.Msg.MAIXDUINO_CAMERA_BALL_AERA = "球形"
+Blockly.Msg.MAIXDUINO_CAMERA_RECTANGLE_AERA = "长方形"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_RUN = "M.A.R.K 小车以 %1 %2"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN = "M.A.R.K 设置 %1 转速为 %2 %"
+Blockly.Msg.MAIXDUINO_ROBOT_SERVO_RUN = "M.A.R.K 舵机 %1 转到 %2 度"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETANGLE = "M.A.R.K 设置步进电机步距角为 %1 °"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETROTATESPEED = "M.A.R.K 设置步进电机转速为 %1 RPM"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_RUN = "M.A.R.K 步进电机转动 %1 步"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_TURN = "M.A.R.K 视觉巡线: 转弯角度 %1 速度 %2 灵敏度 %3"
+Blockly.Msg.CocoRobo_ENENT_WHENSTARTUP = "%1 %2 当教科板 启动"
+Blockly.Msg.CocoRobo_ENENT_WHENACTION = "%1 %2 当按键 %3 被 %4 时"
+Blockly.Msg.CocoRobo_ENENT_WHENPINVOLTAGE = "%1 %2 当引脚 %3 被 %4 时"
+Blockly.Msg.CocoRobo_ENENT_WHENSHARK = "%1 %2 当教科板 被摇晃时"
+Blockly.Msg.CocoRobo_ENENT_TILT_DIRECTION = "%1 %2 当教科板 %3 时"
+Blockly.Msg.CocoRobo_ENENT_WHENTOUCHKEY = "%1 %2 当触摸键 %3 被 %4 时"
+Blockly.Msg.CocoRobo_ENENT_FOR1 = "%1 %2 设置定时器 %3 %4 周期 %5 毫秒"
+Blockly.Msg.CocoRobo_ENENT_FOR2 = "执行 %1"
+Blockly.Msg.CocoRobo_ENENT_CLEAR_TIMER = "%1 %2 清除 定时器/事件 %3"
+Blockly.Msg.CocoRobo_ENENT_TIMER_COUNT = "%1 %2 定时器 %3 的计数值"
+Blockly.Msg.CocoRobo_EVENT_WHEN_ACTION = "%1 %2 事件 %3 : 当 %4 时"
+Blockly.Msg.CocoRobo_EVENT_CHILD_THREAD = "%1 %2 子线程 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_BUTTON_PRESSED = "%1 %2 按键 %3 被按下"
+Blockly.Msg.CocoRobo_SYSRESOURES_BUTTON_TOUCH = "%1 %2 按键 %3 被触摸"
+Blockly.Msg.CocoRobo_SYSRESOURES_TOUCH_VALUE = "%1 %2 按键 %3 触摸值"
+Blockly.Msg.CocoRobo_SYSRESOURES_VOLUME = "%1 %2 声音值"
+Blockly.Msg.CocoRobo_SYSRESOURES_LIGHT = "%1 %2 光线值"
+Blockly.Msg.CocoRobo_SYSRESOURES_ACCELERATION = "%1 %2 %3 轴加速度"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE = "%1 %2 %3  轴倾斜角"
+Blockly.Msg.CocoRobo_SYSRESOURES_SHARKED = "%1 %2 掌控版 被摇晃"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_ANGLE = "%1 %2 掌控版 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_COLOR = "%1 %2 设置 %3 RGB灯颜色为 %4"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_RGB = "%1 %2 设置 %3 RGB灯颜色为 R %4 G %5 B %6"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_ALL_COLOR = "%1 %2 设置所有 RGB灯颜色为 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_ALL_RGB = "%1 %2 设置所有 RGB灯颜色为 R %3 G %4 B %5"
+Blockly.Msg.CocoRobo_SYSRESOURES_CLOSE_RGB = "%1 %2 关闭 RGB灯"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_BME280 = "%1 %2 BME280 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_DRAW_CLOCK = "%1 %2 绘制时钟 x %3 y %4 半径 %5"
+Blockly.Msg.CocoRobo_SYSRESOURES_CLOCK_OPERATE = "%1 %2 %3 时钟"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_RUN_TIME = "%1 %2 运行时间 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_LOCAL_TIME = "%1 %2 本地时间 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_RESET = "%1 %2 复位"
+Blockly.Msg.CocoRobo_SYSRESOURES_MAC_ADDRESS = "%1 %2 MAC地址"
+Blockly.Msg.CocoRobo_LOOKS_OLCD = "%1 %2 LCD 屏 %3"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_LINE_TEXT = "%1 %2 LCD 屏第 %3 行显示 %4 模式 %5"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_CLEAR_LINE = "%1 %2 LCD 屏 清除第 %3 行"
+Blockly.Msg.CocoRobo_LOOKS_DISPLAY_TEXT = "%1 %2 显示文本 x %3 y %4 内容 %5 模式 %6"
+Blockly.Msg.CocoRobo_LOOKS_TRACE_POINT = "%1 %2 描点 x %3 y %4 为 %5"
+Blockly.Msg.CocoRobo_LOOKS_PROGRESS = "%1 %2 进度条 x %3 y %4 宽 %5 高 %6 进度 %7"
+Blockly.Msg.CocoRobo_LOOKS_COLUMN_STRIP = "%1 %2 柱状条 %3 x %4 y %5 宽 %6 高 %7 进度 %8"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_LINE = "%1 %2 %3 线 x1 %4 y1 %5 到 x2 %6 y2 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_FRAME = "%1 %2 %3 边框 x %4 y %5 宽 %6 高 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_ARC_BORDER = "%1 %2 %3 圆角边框 x %4 y %5 宽 %6 高 %7 半径 %8"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_RECT = "%1 %2 %3 矩形 x %4 y %5 宽 %6 高 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_CIRCLE = "%1 %2 %3 %4 圆 x %5 y %6 半径 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_TRIANGLE = "%1 %2 %3 %4 三角形 x %5 y %6 x2 %7 y2 %8 x3 %9 y3 %10"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_DISPLAY_PICTURE = "%1 %2 在 x %3 y %4 显示图像 %5"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_DISPLAY = "%1 %2 在 x %3 y %4 显示 %5 字体 %6 %7"
+Blockly.Msg.CocoRobo_MUSIC_STOP_PLAY = "%1 %2 停止音乐 引脚 %3"
+Blockly.Msg.CocoRobo_MUSIC_RESTORE_MUSIC_SET = "%1 %2 恢复音乐设置"
+Blockly.Msg.CocoRobo_MUSIC_NOTE_BEAT = "%1 %2 音符 %3 节拍 %4"
+Blockly.Msg.CocoRobo_MUSIC_NOTE_BEAT_PIN = "%1 %2 播放音符 音符 %3 节拍 %4 引脚 %5"
+Blockly.Msg.CocoRobo_MUSIC_TONE = "%1 %2 音调 %3"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN = "%1 %2 播放音调 音调%3 延时 %4 引脚 %5"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN_PARA = "%1 %2 播放音调 从 %3 到 %4 步长 %5 时长 %6 (毫秒)引脚 %7"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_MUSIC_PIN = "%1 %2 播放音乐 %3 等待 %4 循环 %5 引脚 %6"
+Blockly.Msg.CocoRobo_MUSIC_SET_PLAY_SPEED = "%1 %2 设置播放速度为 %3 倍"
+Blockly.Msg.CocoRobo_MUSIC_SET_BEAT = "%1 %2 设置每一拍等同 %3 分音符,每分钟节拍数 %4"
+Blockly.Msg.CocoRobo_MUSIC_SET_CURRENT_BEAT = "%1 %2 当前节拍数"
+Blockly.Msg.CocoRobo_BUZZER_INIT = "%1 %2 音频 初始化"
+Blockly.Msg.CocoRobo_BUZZER_RELEASE_CACHE = "%1 %2 音频 释放缓存"
+Blockly.Msg.CocoRobo_BUZZER_SET_VOLUMN = "%1 %2 设置音频音量 %3"
+Blockly.Msg.CocoRobo_BUZZER_SET_ACTION = "%1 %2 音频 %3"
+Blockly.Msg.CocoRobo_BUZZER_PLAY = "%1 %2 音频 播放 %3"
+Blockly.Msg.CocoRobo_BUZZER_VOICE_CONF = "%1 %2 TTS 语音配置 APPID %3 APIKey %4"
+Blockly.Msg.CocoRobo_BUZZER_VOICE_PLAY = "%1 %2 TTS 语音播放 %3"
+Blockly.Msg.CocoRobo_PIN_GET_VALUE = "%1 %2 读取引脚 %3 数字值"
+Blockly.Msg.CocoRobo_PIN_SET_VALUE = "%1 %2 设置引脚 %3 数字值为 %4"
+Blockly.Msg.CocoRobo_PIN_GET_ANALOG_VALUE = "%1 %2 读取引脚 %3 模拟值"
+Blockly.Msg.CocoRobo_PIN_SET_ANALOG_VALUE = "%1 %2 设置引脚 %3 PWM为 %4"
+Blockly.Msg.CocoRobo_PIN_SET_SERVO_ANGLE = "%1 %2 设置舵机 %3 角度为 %4"
+Blockly.Msg.CocoRobo_PIN_SET_SERVO_PWM_MAXANGLE = "%1 %2 设置舵机 %3 角度为 %4 脉宽从 %5 到 %6 最大角度 %7"
+Blockly.Msg.CocoRobo_PIN_SET_PIN_MODE = "%1 %2 设置引脚 %3 为 %4 模式 %5"
+Blockly.Msg.CocoRobo_PIN_EXTERNAL_LEVEL_DURATION = "%1 %2 %3 外部 %4 电平持续时间(微秒)"
+Blockly.Msg.CocoRobo_PIN_DHT11_VALUE = "%1 %2 DHT11 %3 %4"
+Blockly.Msg.CocoRobo_PIN_DHT22_VALUE = "%1 %2 DHT22 %3 %4"
+Blockly.Msg.CocoRobo_PIN_INIT_I2C_BAUD_RATE = "%1 %2 初始化I2C 波特率 %3"
+Blockly.Msg.CocoRobo_PIN_INIT_I2C_SCL_SDA_BAUD = "%1 %2 初始化I2C SCL %3 SDA %4 波特率 %5"
+Blockly.Msg.CocoRobo_PIN_I2C_ADDRESS_WRITE = "%1 %2 I2C地址 %3 写入 %4"
+Blockly.Msg.CocoRobo_PIN_I2C_ADDRESS_GET_BYTES_NUM = "%1 %2 I2C地址 %3 读取bytes数量 %4"
+Blockly.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_INIT = "%1 %2HCSR04 超声波初始化 名称 %3 trigger %4 echo %5"
+Blockly.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_DISTANCE_UNIT = "%1 %2 %3 HCSR04 超声测距 %4"
+Blockly.Msg.CocoRobo_RADIO_ACTION = "%1 %2 %3 无线广播"
+Blockly.Msg.CocoRobo_SET_RADIO_CHANNEL = "%1 %2 设置无线广播 频道为 %3"
+Blockly.Msg.CocoRobo_SET_RADIO_SEND_MES = "%1 %2 无线广播 发送 %3"
+Blockly.Msg.CocoRobo_RADIO_GET_MES = "%1 %2 无线广播 接收消息"
+Blockly.Msg.CocoRobo_RADIO_GET_MES_FOR1 = "当收到无线广播消息 %1"
+Blockly.Msg.CocoRobo_RADIO_GET_SPECIAL_FOR1 = "当收到特定无线广播消息 %1"
+Blockly.Msg.CocoRobo_WIFI_CONNECT = "%1 %2 连接 Wi-Fi 名称 %3 密码 %4"
+Blockly.Msg.CocoRobo_WIFI_DISCONNECT = "%1 %2 断开 Wi-Fi 连接"
+Blockly.Msg.CocoRobo_WIFI_CONNECTED = "%1 %2 Wi-Fi 已连接"
+Blockly.Msg.CocoRobo_WIFI_ALL_CONF = "%1 %2 所有 Wi-Fi 配置信息"
+Blockly.Msg.CocoRobo_WIFI_CONF_MES = "%1 %2 Wi-Fi 配置信息 %3"
+Blockly.Msg.CocoRobo_WIFI_OPEN_AP_MODE = "%1 %2 开启 AP模式 名称 %3 信道 %4"
+Blockly.Msg.CocoRobo_WIFI_CLOSE_AP_MODE = "%1 %2 关闭 AP模式"
+Blockly.Msg.CocoRobo_WIFI_SYNC_NETWORK_TIME = "%1 %2 同步网络时间 时区 %3 授时服务器 %4"
+Blockly.Msg.CocoRobo_NEOPIXEL_INIT = "%1 %2 灯带 初始化 %3 引脚 %4 数量 %5"
+Blockly.Msg.CocoRobo_NEOPIXEL_CHANNEL_COLOR = "%1 %2 灯带 %3 %4 号颜色为 %5"
+Blockly.Msg.CocoRobo_NEOPIXEL_CHANNEL_RGB = "%1 %2 灯带 %3 %4 号 红 %5 绿 %6 蓝 %7"
+Blockly.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_COLOR = "%1 %2 灯带 %3 全亮 颜色 %4"
+Blockly.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_RGB = "%1 %2 灯带 %3 全亮 红 %4 绿 %5 蓝 %6"
+Blockly.Msg.CocoRobo_NEOPIXEL_CLOSE = "%1 %2 灯带 %3 熄灭"
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_LIGHT_EFFECT = "%1 %2 彩虹灯带 %3 数量 %4 亮度 %5 偏移 %6"
+Blockly.Msg.CocoRobo_NEOPIXEL_SET_WRITE = "%1 %2 灯带 %3 设置生效"
+Blockly.Msg.CocoRobo_CONTROL_FOR1 = "为每个项目 %1 在列表中"
+Blockly.Msg.CocoRobo_OPERATORS_GET_TYPE = "值 %1 的类型"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_TYPE = "值 %1 的类型为 %2"
+Blockly.Msg.CocoRobo_OPERATORS_MOD_INT = "%1 ÷ %2 商的整数部分"
+Blockly.Msg.CocoRobo_OPERATORS_KEEP_TWO_DECIMALS = "%1 保留 %2 位小数"
+Blockly.Msg.CocoRobo_OPERATORS_LIMIT_RANGE = "限制数字 %1 介于低 %2 至 高 %3"
+Blockly.Msg.CocoRobo_OPERATORS_MAPPING_RANGE = "映射 %1 从低 %2 至 %3 到高 %4 至 %5"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_POSITION = "%1 %2 识色循迹传感器 线的位置为 %3"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_SEEING = "%1 %2 识色循迹传感器 检测到%3 色"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_COLOR = "%1 %2 识色循迹传感器 颜色值"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_3ADA15 = "%1 %2 三轴数字加速度(1.5g) %3 轴"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR_OPT1 = "亮灯"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR_OPT2 = "熄灭"
+Blockly.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER_GETVALUE = "%1 %2  语音识别传感器 管脚 %3 获取值"
+Blockly.Msg.ARDUINO_SERIAL_STR_TONUMBER = "串口 字符串转数值 %1"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT1 = "红"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT2 = "黄"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT3 = "绿"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT4 = "青"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT5 = "蓝"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT6 = "紫"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT7 = "黑"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT8 = "白"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT9 = "其他"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT1 = "前进"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT2 = "左转"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT3 = "右转"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT4 = "掉头"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT5 = "P"
+Blockly.Msg.ARDUINO_MARK_ROBOT_RUN = "%1 %2 M.A.R.K 小车 %3 %4"
+Blockly.Msg.ARDUINO_MARK_ROBOT_MOTOR_RUN = "%1 %2 M.A.R.K 设置电机 %3 转速为 %4"
+Blockly.Msg.ARDUINO_MARK_ROBOT_SERVO_RUN = "%1 %2 M.A.R.K 舵机 %3 转到 %4"
+Blockly.Msg.ARDUINO_NETWORK_SETWIFI = "%1 %2 开始连接无线网络 %3 密码 %4"
+Blockly.Msg.ARDUINO_NETWORK_STATE = "%1 %2 网络已连接?"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_REC = "%1 %2 识别 %3 语音 %4 秒钟"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_OPT01 = "汉语"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_OPT02 = "英语"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_RECTEXT = "%1 %2 语音识别出的文字"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_TTS = "%1 %2 说 %3"
+Blockly.Msg.ARDUINO_AUDIO_RECORD = "%1 %2 录音 %3 %4"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT01 = "文件"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT02 = "Micro SD"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT03 = "USB"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT04 = "暂存"
+Blockly.Msg.ARDUINO_AUDIO_STOP_RECORD = "%1 %2 录音停止"
+Blockly.Msg.ARDUINO_AUDIO_PLAY = "%1 %2 播放音频 %3 %4"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_SOMEONE = "%1 %2 播放第 %3 首曲目"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_PREORNEXT = "%1 %2 播放 %3 曲目"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_OPT1 = "上一首"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_OPT2 = "下一首"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_ATMODE = "%1 %2 %3 播放曲目"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT1 = "循环"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT2 = "暂停"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT3 = "停止"
+Blockly.Msg.ARDUINO_AUDIO_SETVOL = "%1 %2 设置扬声器音量 %3"
+Blockly.Msg.ELFBOT_MAINBOARD_START = "%1 %2 当精灵启动"
+Blockly.Msg.ELFBOT_WHEN_BUTTON_S_PRESSED = "%1 %2 当按下按钮 S "
+Blockly.Msg.ELFBOT_WHEN_LIGHTINTENSITY_LESSTHAN = "%1 %2 当环境光强度 %3 %4"
+Blockly.Msg.ELFBOT_WHENGREATERTHAN_TIMER = "%1 %2 当计时器 > %3"
+Blockly.Msg.ELFBOT_WHENGREATERTHAN_LOUDNESS = "%1 %2 当响度 %3 %4"
+Blockly.Msg.ELFBOT_BUTTONS_ISPRESSED = "%1 %2 精灵 按钮S被按下?"
+Blockly.Msg.ELFBOT_ULTRASONIC_DISTANCE_FROMOBJ = "%1 %2 精灵 前方障碍物距离(mm)"
+Blockly.Msg.ELFBOT_ULTRASONIC_ISDETECTED_OBJECT = "%1 %2 精灵 检测到前方物体?"
+Blockly.Msg.ELFBOT_ULTRASONIC_LED_SHOW_COLOR = "%1 %2 精灵 设置超声波 LED颜色为 %3"
+Blockly.Msg.ELFBOT_ULTRASONIC_LED_CRUSHOUT = "%1 %2 精灵 熄灭超声波 LED"
+Blockly.Msg.ELFBOT_ULTRASONIC_WHENDETECTEDOBJECT = "%1 %2 当检测到前方物体"
+Blockly.Msg.ELFBOT_LEDMATRIX_PLOT = "%1 %2 精灵 点亮 x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_UNPLOT = "%1 %2 精灵 熄灭 x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_PLOT_OR_UNPLOT = "%1 %2 精灵 切换点亮或熄灭 x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_ISPLOT = "%1 %2 精灵 x: %3 y: %4 是否被点亮?"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT = "%1 %2 精灵 显示 %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT_UNTILDONE = "%1 %2 精灵 显示 %3 直到结束"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON = "%1 %2 精灵 显示表情 %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON_FORDURATION = "%1 %2 精灵 显示表情 %3 持续 %4 秒"
+Blockly.Msg.ELFBOT_LEDMATRIX_SCREEN_CRUSHOUT = "%1 %2 精灵 熄灭屏幕"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION1 = "smile"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION2 = "wink"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION3 = "happy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION4 = "cute"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION5 = "lovely"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION6 = "expressionless"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION7 = "playful"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION8 = "like1"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION9 = "like2"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION10 = "sniker1"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION11 = "sniker2"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION12 = "bored"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION13 = "serious"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION14 = "sweat"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION15 = "frown"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION16 = "rage"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION17 = "pitiful"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION18 = "wail"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION19 = "cry"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION20 = "daze"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION21 = "caim"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION22 = "angry"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION23 = "thinking"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION24 = "dizziness"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION25 = "tired"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION26 = "sleepy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION27 = "dream"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION28 = "shocked"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION29 = "strabismus"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION30 = "cool"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION31 = "query"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION32 = "pain"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION33 = "uncomfortable"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION34 = "right"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION35 = "left"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION36 = "forward"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION37 = "backward"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION38 = "hello"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION39 = "bye"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION40 = "oK"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION41 = "good"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION42 = "yes"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION43 = "no"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION44 = "low_energy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION45 = "meow"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION46 = "panda"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE = "%1 %2 精灵 显示图案 %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE_DURATION = "%1 %2 精灵 显示图案 %3 持续 %4 秒"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_EFFECTS_COLOR = "%1 %2 精灵 RGB LED一直 %3 %4"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION0 = "亮"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION1 = "闪烁"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION2 = "呼吸"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR = "%1 %2 精灵 RGB LED 亮起 %3 灯,颜色为 %4"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION0 = "全部"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION1 = "左"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION2 = "右"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR_DURATION = "%1 %2 精灵 RGB LED 亮起 %3 灯,颜色为 %4 ,持续 %5秒"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_COLOR = "%1 %2 精灵 设置RGB LED颜色为 %3"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION0 = "红色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION1 = "绿色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION2 = "蓝色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION3 = "黄色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION4 = "青色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION5 = "紫色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION6 = "黑色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION7 = "白色"
+Blockly.Msg.ELFBOT_RGBLED_CRUSHOUT = "%1 %2 精灵 熄灭RGB LED"
+Blockly.Msg.ELFBOT_INFRARED_WHENOVERHEAD = "%1 %2 当检测到前方悬空"
+Blockly.Msg.ELFBOT_INFRARED_LIGHTINTENSITY_VALUE = "%1 %2 精灵 红外反射光强度"
+Blockly.Msg.ELFBOT_INFRARED_DETECTED_ISHEAD = "%1 %2 精灵 检测到前方悬空?"
+Blockly.Msg.ELFBOT_LINEPATROL_WHENDETECTEDCOLORD = "%1 %2 当检测到的颜色是 %3"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION0 = "红色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION1 = "绿色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION2 = "蓝色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION3 = "黄色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION4 = "青色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION5 = "紫色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION6 = "黑色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION7 = "白色"
+Blockly.Msg.ELFBOT_LINEPATROL_GREYSCALE = "%1 %2 精灵 灰度值"
+Blockly.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR = "%1 %2 精灵 检测到颜色是 %3 ?"
+Blockly.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR_VALUE = "%1 %2 精灵 检测到的 %3 色值"
+Blockly.Msg.ELFBOT_LINEPATROL_LIGHTINTENSITY_VALUE = "%1 %2 精灵 反射光强度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKLEFT = "%1 %2 精灵 头部向左转到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKRIGHT = "%1 %2 精灵 头部向右转到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKUP = "%1 %2 精灵 头部向上转到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKDOWN = "%1 %2 精灵 头部向下转到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_EAR_TURNFORWARD = "%1 %2 精灵 耳朵向前转到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_EAR_TURNBACKWARD = "%1 %2 精灵 耳朵向后转到 %3 度"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_DIRECTION_POWER = "%1 %2 精灵 %3 以动力 %4 %"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION0 = "前进"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION1 = "后退"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION2 = "左转"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION3 = "右转"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_POWER_DURATION = "%1 %2 精灵 前进以动力 %3 % 持续 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_POWER_DURATION = "%1 %2 精灵 后退以动力 %3 % 持续 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNLEFT_POWER_DURATION = "%1 %2 精灵 左转以动力 %3 % 持续 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNRIGHT_POWER_DURATION = "%1 %2 精灵 右转以动力 %3 % 持续 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_POWER = "%1 %2 精灵 移动左轮以动力 %3 % ,右轮以动力 %4 %"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_DURATION = "%1 %2 精灵 直线前进持续 %3 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_DURATION = "%1 %2 精灵 直线后退持续 %3 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_STOP = "%1 %2 精灵 停止运动"
+Blockly.Msg.ELFBOT_LIGHT_INTENSITY_VALUE = "%1 %2 精灵 环境光强度"
+Blockly.Msg.ELFBOT_SOUND_LOUDNESS_VALUE = "%1 %2 精灵 响度"
+Blockly.Msg.ELFBOT_SOUND_PLAY = "%1 %2 精灵 播放声音 %3"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION0 = "hello"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION1 = "miao"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION2 = "bye"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION3 = "hum"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION4 = "laugh"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION5 = "wrong"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION6 = "right"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION7 = "sad"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION8 = "vehicles"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION9 = "yeah"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION10 = "powerdown"
+Blockly.Msg.ELFBOT_SOUND_PLAY_UNTILDONE = "%1 %2 精灵 播放声音 %3 直到结束"
+Blockly.Msg.ELFBOT_SOUND_STOP_PLAY = "%1 %2 精灵 停止播放声音"
+Blockly.Msg.ELFBOT_SOUND_REST_BEATS = "%1 %2 精灵 休止 %3 拍"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION0 = "1"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION1 = "1/2"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION2 = "1/4"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION3 = "1/8"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION4 = "1/16"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION5 = "2"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION6 = "4"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION7 = "8"
+Blockly.Msg.ELFBOT_SOUND_PLAY_FREQUENCYHZ = "%1 %2 精灵 播放声音以频率 %3 赫兹,持续 %4 秒"
+Blockly.Msg.ELFBOT_SOUND_CHANGE_VOLUME = "%1 %2 精灵 将音量增加 %3"
+Blockly.Msg.ELFBOT_SOUND_SET_VOLUME = "%1 %2 精灵 将音量设定为 %3"
+Blockly.Msg.ELFBOT_SOUND_VOLUME = "%1 %2 精灵 音量"
+Blockly.Msg.ELFBOT_SOUND_NOTE_BEATS = "%1 %2  精灵 播放音符 %3 以 %4 拍"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT = "%1 %2 颜色识别传感器 检测到 %3 色"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION = "%1 %2 颜色识别传感器 %3 的位置为 %4"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT0 = "红"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT1 = "绿"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT2 = "蓝"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_BLACK = "黑线"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_WRITE = "白线"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT0 = "中"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT1 = "右"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT2 = "最右"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT3 = "左"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT4 = "最左"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT5 = "丢失"
+Blockly.Msg.MICROBIT_WHEN_START = "%1 %2 当 micro:bit 启动"
+Blockly.Msg.MICROBIT_WHEN_BUTTONPRESSED = "%1 %2 当 %3 被按下"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION0 = "A"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION1 = "B"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION2 = "A+B"
+Blockly.Msg.MICROBIT_WHEN_PINSTOUCHED = "%1 %2 当引脚 %3 被接触"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION0 = "0"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION1 = "1"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION2 = "2"
+Blockly.Msg.MICROBIT_WHEN_GESTURESTRIKE = "%1 %2 当姿态 %3"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION0 = "摇晃"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION1 = "向上倾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION2 = "向下倾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION3 = "向左倾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION4 = "向右倾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION5 = "正面朝上"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION6 = "正面朝下"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION7 = "自由落体"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION8 = "3g"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION9 = "6g"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION10 = "5g"
+Blockly.Msg.MICROBIT_COMMUCATION_OPEN = "%1 %2 打开无线通讯"
+Blockly.Msg.MICROBIT_COMMUCATION_CLOSED = "%1 %2 关闭无线通讯"
+Blockly.Msg.MICROBIT_COMMUCATION_RESET = "%1 %2 复位无线通讯"
+Blockly.Msg.MICROBIT_COMMUCATION_RECEIVE = "%1 %2 接受无线通讯"
+Blockly.Msg.MICROBIT_COMMUCATION_SEND = "%1 %2 发送无线消息 %3"
+Blockly.Msg.MICROBIT_COMMUCATION_SETCHANNEL = "%1 %2 设置无线通讯频道 %3"
+Blockly.Msg.MICROBIT_PIN_CONNECTED = "%1 %2 引脚 %3 被接触"
+Blockly.Msg.MICROBIT_PIN_ANALOGQUANTITY = "%1 %2 引脚 %3 模拟量"
+Blockly.Msg.MICROBIT_PIN_SET_ANALOGQUANTITY = "%1 %2 设置引脚 %3 模拟量为 %4"
+Blockly.Msg.MICROBIT_PIN_NUMBER_INPUT = "%1 %2 引脚 %3 有数字输入"
+Blockly.Msg.MICROBIT_PIN_ANALOG_MAP_TO = "%1 %2 映射 %3 模拟值到 %4 至 %5"
+Blockly.Msg.MICROBIT_PIN_ANALOG_READ = "%1 %2 模拟读取 引脚 %3"
+Blockly.Msg.MICROBIT_PIN_ANALOG_WRITE = "%1 %2 向引脚 %3 模拟写入 %4"
+Blockly.Msg.MICROBIT_PIN_ANALOG_SET_PERIOD = "%1 %2 设置引脚 %3 模拟期间为 %4 (us)"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_READ = "%1 %2 数字读取 引脚 %3"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS = "%1 %2 数字引脚 %3 为 %4"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS_OPT1 = "高"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS_OPT2 = "低"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_SET_TO = "%1 %2 设置数字引脚 %3 为 %4"
+Blockly.Msg.MICROBIT_PIN_I2C_READ = "%1 %2 i2c 读取 i2c地址 %3 ,格式为 %4 重复 %5"
+Blockly.Msg.MICROBIT_PIN_I2C_WRITE = "%1 %2 向 i2c地址 %3 写入值 %4 ,格式为 %5 重复 %6"
+Blockly.Msg.MICROBIT_PIN_I2C_READ_OPT1 = "否"
+Blockly.Msg.MICROBIT_PIN_I2C_READ_OPT2 = "是"
+Blockly.Msg.MICROBIT_SENSOR_BUTTON_PRESSED = "%1 %2 按键 %3 被按下?"
+Blockly.Msg.MICROBIT_SENSOR_GESTURE_STRIKE = "%1 %2 姿态是 %3?"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION = "%1 %2 %3 加速度"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION0 = "x轴"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION1 = "y轴"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION2 = "z轴"
+Blockly.Msg.MICROBIT_SENSOR_COMPASSANGLE = "%1 %2 指南针角度"
+Blockly.Msg.MICROBIT_SENSOR_COMPASS_MAGNETICDENSITY = "%1 %2 指南针磁场强度"
+Blockly.Msg.MICROBIT_SENSOR_CALIBRATE_COMPASS = "%1 %2 校正指南针"
+Blockly.Msg.MICROBIT_SENSOR_TEMPERATURE = "%1 %2 温度"
+Blockly.Msg.MICROBIT_SENSOR_RUNNINGTIME = "%1 %2 运行时间"
+Blockly.Msg.MICROBIT_SHOW_IMAGE = "%1 %2 显示图案 %3"
+Blockly.Msg.MICROBIT_SHOW_IMAGEFOR = "%1 %2 显示图案 %3 持续 %4 秒"
+Blockly.Msg.MICROBIT_SHOW_MIRRORING_IMAGE = "%1 %2 镜像显示图案 %3"
+Blockly.Msg.MICROBIT_SHOW_SETIMAGE = "%1 %2 设置图案 %3 %4 移动 %5"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION0 = "向左"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION1 = "向右"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION2 = "向上"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION3 = "向下"
+Blockly.Msg.MICROBIT_SHOW_TEXT = "%1 %2 显示 %3"
+Blockly.Msg.MICROBIT_SHOW_TEXTUNTIL = "%1 %2 显示 %3 直到滚动结束"
+Blockly.Msg.MICROBIT_SHOW_CLOSE = "%1 %2 熄灭屏幕"
+Blockly.Msg.MICROBIT_SHOW_LIGHT = "%1 %2 %3 在坐标 x: %4 y: %5"
+Blockly.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION0 = "点亮"
+Blockly.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION1 = "熄灭"
+Blockly.Msg.MICROBIT_SHOW_LIGHTON = "%1 %2 设置x: %3 y: %4 的亮度为 %5"
+Blockly.Msg.MICROBIT_SHOW_BRIGHTNESS = "%1 %2 获得 x: %3 y: %4的亮度"
+Blockly.Msg.MICROBIT_MUSIC_PLAY = "%1 %2 引脚 %3 播放声音 %4"
+Blockly.Msg.MICROBIT_MUSIC_PLAY_UNTILDONE = "%1 %2 引脚 %3 播放声音 %4 直到播放结束"
+Blockly.Msg.MICROBIT_MUSIC_PLAY_NOTE = "%1 %2 引脚 %3 播放音符 %4 持续 %5"
+Blockly.Msg.MICROBIT_MUSIC_CHANGETEMPO = "%1 %2 调整声音速度(bpm)%3"
+Blockly.Msg.MICROBIT_MUSIC_SETTEMPO = "%1 %2 将声音速度(bpm)设置为 %3"
+Blockly.Msg.MICROBIT_MUSIC_TEMPO = "%1 %2 声音速度(bpm)"
+Blockly.Msg.MICROBIT_BITPLAYER_KEY_IS_PRESSED = "%1 %2 BitPlayer: 当按键 %3 正在被按下"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK = "%1 %2 BitPlayer: 摇杆被推向 %3"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION = "%1 %2 BitPlayer: 震动 %3"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT1 = "开"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT2 = "关"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT1 = "左上"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT2 = "上"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT3 = "右上"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT4 = "左"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT5 = "中"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT6 = "右"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT7 = "左下"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT8 = "下"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT9 = "右下"
+Blockly.Msg.MICROBIT_BITWEAR_VIBRATION = "%1 %2 BitWear: 震动 %3"
+Blockly.Msg.MICROBIT_BITWEAR_SET_LED_COLOR = "%1 %2 BitWear: 设置LED灯颜色 %3"
+Blockly.Msg.MICROBIT_BITMAKER_SET_LED_COLOR = "%1 %2 BitMaker: 设置LED灯 %3 颜色 %4"
+Blockly.Msg.MICROBIT_BITCAR_MOVE = "%1 %2 BitCar: 左轮动力 %3 %,右轮动力 %4 %"
+Blockly.Msg.MICROBIT_BITCAR_STOP = "%1 %2 BitCar: 停止"
+Blockly.Msg.MICROBIT_BITCAR_STANDUP_STILL = "%1 %2 BitCar: 以速度 %3 %站立,冲刺 %4 (ms)"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR = "%1 %2 BitCar: 黑线在 %3 传感器下方"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT1 = "左侧"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT2 = "右侧"
+Blockly.Msg.MICROBIT_BITCAR_LINE_FOLLOW_AT_SPEED = "%1 %2 BitCar: 以 %3 % 速度巡线"
+Blockly.Msg.MICROBIT_GROVE_ONE_MINI_FAN_SET_SPEED = "%1 %2 迷你风扇 %3 :设置转速为 %4 %"
+Blockly.Msg.MICROBIT_GROVE_ONE_SERVO_SET_ANGLE = "%1 %2 舵机 %3 :设置角度为 %4 °"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE = "%1 %2 超声波测距传感器 %3 :距离 %4"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT1 = "厘米"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT2 = "英尺"
+Blockly.Msg.CATEGORY_COMMON = "常用"
+Blockly.Msg.CATEGORY_SYSTEM = "系统资源"
+Blockly.Msg.CATEGORY_SHOW = "显示"
+Blockly.Msg.CATEGORY_MUSIC = "音乐"
+Blockly.Msg.CATEGORY_AUDIO = "音频"
+Blockly.Msg.CATEGORY_PIN = "引脚"
+Blockly.Msg.CATEGORY_RADIO = "无线广播"
+Blockly.Msg.CATEGORY_DISPLAY = "显示"
+Blockly.Msg.CATEGORY_LIGHTING = "灯光"
+Blockly.Msg.CATEGORY_ACTION = "动作"
+Blockly.Msg.CATEGORY_SENSOR = "感知"
+Blockly.Msg.CATEGORY_WIRELESS = "无线通讯"
+Blockly.Msg.CATEGORY_ADDONS = "扩展板"
+Blockly.Msg.CATEGORY_GROVE_ONE = "Grove One"
+Blockly.Msg.CATEGORY_DISPLAY1 = "显示"
+Blockly.Msg.CATEGORY_MACHINE_VISION = "图像识别"
+Blockly.Msg.CATEGORY_CNN_MODELS = "模型预测"
+Blockly.Msg.CATEGORY_MAXIDUINO_SYSTEM = "系统"
+Blockly.Msg.CATEGORY_START = "初始化"
+Blockly.Msg.CATEGORY_GROVE_INPUT = "Grove 输入"
+Blockly.Msg.CATEGORY_GROVE_OUTPUT = "Grove 输出"
+Blockly.Msg.CATEGORY_MAIXDUINO_GROVE = "Grove"
+Blockly.Msg.SNAPSHOOT = "快照"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY = "等待 %1 %2"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY_UNIT_MS = "毫秒"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY_UNIT_US = "微秒"
+Blockly.Msg.MAIXDUINO_ENENT_RUNTIME = "运行时间 %1"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION = "设置屏幕方向为 %1"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION_NORMAL = "正常"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION_ROTATE = "翻转"
+Blockly.Msg.MAIXDUINO_DISPLAY_STRING_AT_POSITION = "显示 %1 于 X%2 Y%3"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE_WH = "绘制长方形: 长%1 宽%2 中心坐标 X%3 Y%4"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_AT_SIZE_COLOR = "检测到 %1 圆形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_RGB = "检测到的圆RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_AT_SIZE_COLOR = "检测到 %1 长方形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_RGB = "检测到的长方形RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_SETCOLOR = "设置线识别颜色为 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_SETWEIGHT = "设置线识别区域权重: A区 %1% B区 %2% C区 %3%"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_TURNANGLE = "转弯角度"
+Blockly.Msg.MAIXDUINO_SEEED_LINE_FINDER = "%1 %2 引脚 %3 巡线传感器检测到 %4"
+Blockly.Msg.MAIXDUINO_FIGURE_OUTPUT = "向 数字引脚 %1 写入值 %2"
+Blockly.Msg.MAIXDUINO_FIGURE_INPUT = "数字读取 引脚 %1"
+Blockly.Msg.MAIXDUINO_ANALOG_INPUT = "模拟输入 管脚 %1"
+Blockly.Msg.MAIXDUINO_ANALOG_OUTPUT = "向 模拟引脚 %1 写入值 %2"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_X = "X坐标"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_W = "长"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_H = "宽"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT1 = "前进"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT2 = "后退"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT3 = "左转"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT4 = "右转"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT6 = "慢速"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT7 = "中速"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT8 = "全速"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_STOP = "M.A.R.K 小车停止运动"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT1 = "左轮"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT2 = "右轮"
+Blockly.Msg.MAIXDUINO_GROVE_BUTTON_ISPRESSED = "%1 %2 引脚 %3 按键开关正在被按下?"
+Blockly.Msg.MAIXDUINO_GROVE_ULT_DISTANCE = "%1 %2 引脚 %3 超声波测距传感器 距离(cm)"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY = "%1 %2 引脚 %3 RGB 灯条 %4 灯亮 %5"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY1 = "%1 %2 引脚 %3 RGB 灯条 %4 R %5 G %6 B %7"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_CLOSED = "%1 %2 引脚 %3 RGB 灯条 熄灭"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_SETVOL = "M.A.R.K. 扬声器 设置音量为 %1 %"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_PLAYNOTE = "M.A.R.K. 扬声器 播放音调 %1 %2 拍"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_PAUSE = "M.A.R.K. 扬声器 停顿 %1 拍"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT0 = "1"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT1 = "1/2"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT2 = "1/4"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT3 = "1/8"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT4 = "1/16"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT5 = "2"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT6 = "4"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT7 = "8"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_SHOW = "M.A.R.K %1 车头灯亮 %2"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_SHOW = "M.A.R.K. 尾灯 %1 亮 %2 %3 %4 "
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_CRUSHOUT = "M.A.R.K. %1 车头灯熄灭"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT01 = "左"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT02 = "右"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT01 = "顶部"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT02 = "中间"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT03 = "尾部"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT01 = "全部"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT02 = "前"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT03 = "尾"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT1 = "向前倾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT2 = "向后倾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT3 = "向左倾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT4 = "向右倾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT1 = "温度"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT2 = "湿度"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT3 = "气压"
+Blockly.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT1 = "刷新"
+Blockly.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT2 = "删除"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT0 = "清空"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT1 = "年"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT2 = "月"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT3 = "日"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT4 = "时"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT5 = "分"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT6 = "秒"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT7 = "星期数"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT8 = "天数"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT9 = "毫秒"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT10 = "微秒"
+Blockly.Msg.CocoRobo_PIN_OPT = "default"
+Blockly.Msg.CocoRobo_PIN_OPT0 = "P0"
+Blockly.Msg.CocoRobo_PIN_OPT1 = "P1"
+Blockly.Msg.CocoRobo_PIN_OPT2 = "P2"
+Blockly.Msg.CocoRobo_PIN_OPT3 = "P3(EXT)"
+Blockly.Msg.CocoRobo_PIN_OPT4 = "P4(light)"
+Blockly.Msg.CocoRobo_PIN_OPT6 = "P6(buzzer)"
+Blockly.Msg.CocoRobo_PIN_OPT7 = "P7(RGB)"
+Blockly.Msg.CocoRobo_PIN_OPT8 = "P8"
+Blockly.Msg.CocoRobo_PIN_OPT9 = "P9"
+Blockly.Msg.CocoRobo_PIN_OPT10 = "P10(sound)"
+Blockly.Msg.CocoRobo_PIN_OPT13 = "P13"
+Blockly.Msg.CocoRobo_PIN_OPT14 = "P14"
+Blockly.Msg.CocoRobo_PIN_OPT15 = "P15"
+Blockly.Msg.CocoRobo_PIN_OPT16 = "P16"
+Blockly.Msg.CocoRobo_PIN_OPT19 = "P19(LCD)"
+Blockly.Msg.CocoRobo_PIN_OPT20 = "P20(LCD)"
+Blockly.Msg.CocoRobo_PIN_VOLTAGE_OPT1 = "高"
+Blockly.Msg.CocoRobo_PIN_VOLTAGE_OPT2 = "低"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT1 = "无上下拉"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT2 = "上拉"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT3 = "下拉"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT1 = "输入"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT2 = "推挽输出"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT3 = "开漏输出"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT1 = "清空"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT2 = "全亮"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT3 = "黑底"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT4 = "白底"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT1 = "按下"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT2 = "松开"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT3 = "触摸"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT4 = "释放"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT5 = "重复执行"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT6 = "延时执行"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT1 = "打开"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT2 = "关闭"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT3 = "暂停"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT4 = "继续播放"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT5 = "停止"
+Blockly.Msg.CocoRobo_EVENT_VOLTAGE_OPT1 = "↗从低到高"
+Blockly.Msg.CocoRobo_EVENT_VOLTAGE_OPT2 = "↘从高到低"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT1 = "普通"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT2 = "反转"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT3 = "透明"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT4 = "XOR"
+Blockly.Msg.CocoRobo_LOOKS_LIGHT_OPT1 = "亮"
+Blockly.Msg.CocoRobo_LOOKS_LIGHT_OPT2 = "暗"
+Blockly.Msg.CocoRobo_LOOKS_DIRECTION_OPT1 = "垂直"
+Blockly.Msg.CocoRobo_LOOKS_DIRECTION_OPT2 = "水平"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT1 = "是偶数"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT2 = "是奇数"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT3 = "是整数"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT4 = "为正"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT5 = "为负"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT6 = "可被整除"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_OPT1 = "绘制"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_OPT2 = "擦除"
+Blockly.Msg.CocoRobo_LOOKS_CIRCLE_OPT1 = "空心"
+Blockly.Msg.CocoRobo_LOOKS_CIRCLE_OPT2 = "实心"
+Blockly.Msg.CocoRobo_LOOKS_FONT_OPT1 = "不换行"
+Blockly.Msg.CocoRobo_LOOKS_FONT_OPT2 = "自动换行"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT1 = "心型"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT2 = "心型(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT3 = "高兴"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT4 = "笑脸"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT5 = "伤心"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT6 = "困惑"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT7 = "生气"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT8 = "睡着"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT9 = "惊讶"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT10 = "愚蠢"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT11 = "极妙"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT12 = "无聊"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT13 = "石头"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT14 = "石头(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT15 = "布"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT16 = "布(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT17 = "剪刀"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT18 = "剪刀(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT19 = "Expressions/Big smile.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT20 = "Expressions/Heart large.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT21 = "Expressions/Heart small.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT22 = "Expressions/Mouth 1 open.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT23 = "Expressions/Mouth 1 shut.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT24 = "Expressions/Mouth 2 open.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT25 = "Expressions/Mouth 2 shut.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT26 = "Expressions/Sad.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT27 = "Expressions/Sick.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT28 = "Expressions/Smile.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT29 = "Expressions/Swearing.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT30 = "Expressions/Talking.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT31 = "Expressions/Wink.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT32 = "Expressions/ZZZ.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT33 = "Eyes/Angry.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT34 = "Eyes/Awake.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT35 = "Eyes/Black eye.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT36 = "Eyes/Bottom left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT37 = "Eyes/Bottom right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT38 = "Eyes/Crazy 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT39 = "Eyes/Crazy 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT40 = "Eyes/Disappointed.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT41 = "Eyes/Dizzy.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT42 = "Eyes/Down.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT43 = "Eyes/Evil.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT44 = "Eyes/Hurt.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT45 = "Eyes/Knocked out.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT46 = "Eyes/Love.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT47 = "Eyes/Middle left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT48 = "Eyes/Middle right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT49 = "Eyes/Neutral.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT50 = "Eyes/Nuclear.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT51 = "Eyes/Pinch left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT52 = "Eyes/Pinch middle.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT53 = "Eyes/Pinch right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT54 = "Eyes/Tear.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT55 = "Eyes/Tired left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT56 = "Eyes/Tired middle.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT57 = "Eyes/Tired right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT58 = "Eyes/Toxic.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT59 = "Eyes/Up.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT60 = "Eyes/Winking.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT61 = "Information/Accept.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT62 = "Information/Backward.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT63 = "Information/Decline.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT64 = "Information/Forward.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT65 = "Information/Left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT66 = "Information/No go.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT67 = "Information/Question mark.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT68 = "Information/Right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT69 = "Information/Stop 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT70 = "Information/Stop 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT71 = "Information/Thumbs down.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT72 = "Information/Thumbs up.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT73 = "Information/Warning.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT74 = "Objects/Bomb.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT75 = "Objects/Boom.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT76 = "Objects/Fire.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT77 = "Objects/Flowers.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT78 = "Objects/Forest.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT79 = "Objects/Light off.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT80 = "Objects/Light on.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT81 = "Objects/Lightning.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT82 = "Objects/Night.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT83 = "Objects/Pirate.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT84 = "Objects/Snow.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT85 = "Objects/Target.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT86 = "Progress/Bar 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT87 = "Progress/Bar 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT88 = "Progress/Bar 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT89 = "Progress/Bar 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT90 = "Progress/Bar 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT91 = "Progress/Dial 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT92 = "Progress/Dial 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT93 = "Progress/Dial 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT94 = "Progress/Dial 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT95 = "Progress/Dial 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT96 = "Progress/Dots 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT97 = "Progress/Dots 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT98 = "Progress/Dots 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT99 = "Progress/Dots 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT100 = "Progress/Hourglass 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT101 = "Progress/Hourglass 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT102 = "Progress/Hourglass 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT103 = "Progress/Timer 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT104 = "Progress/Timer 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT105 = "Progress/Timer 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT106 = "Progress/Timer 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT107 = "Progress/Timer 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT108 = "Progress/Water level 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT109 = "Progress/Water level 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT110 = "Progress/Water level 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT111 = "Progress/Water level 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT112 = "System/Accept_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT113 = "System/Accept_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT114 = "System/Alert.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT115 = "System/Box.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT116 = "System/Busy_0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT117 = "System/Busy_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT118 = "System/Decline_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT119 = "System/Decline_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT120 = "System/Dot_empty.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT121 = "System/Dot_full.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT122 = "System/Play.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT123 = "System/Slider_0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT124 = "System/Slider_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT125 = "System/Slider_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT126 = "System/Slider_3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT127 = "System/Slider_4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT128 = "System/Slider_5.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT129 = "System/Slider_6.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT130 = "System/Slider_7.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT131 = "System/Slider_8.pbm"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT1 = "仿数码管11像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT2 = "仿数码管16像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT3 = "仿数码管21像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT4 = "仿数码管30像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT5 = "仿数码管44像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT6 = "仿数码管斜体 30像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT7 = "仿数码管斜体 42像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT8 = "DejaVu Sans Mono 12像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT9 = "DejaVu Sans Mono 16像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT10 = "DejaVu Sans Mono 21像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT11 = "DejaVu Sans Mono 黑体 12像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT12 = "DejaVu Sans Mono 黑体 16像素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT13 = "DejaVu Sans Mono 黑体 21像素"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT1 = "东一区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT2 = "东二区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT3 = "东三区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT4 = "东四区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT5 = "东五区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT6 = "东六区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT7 = "东七区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT8 = "东八区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT9 = "东九区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT10 = "东十区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT11 = "东十一区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT12 = "东十二区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT13 = "西一区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT14 = "西二区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT15 = "西三区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT16 = "西四区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT17 = "西五区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT18 = "西六区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT19 = "西七区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT20 = "西八区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT21 = "西九区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT22 = "西十区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT23 = "西十一区"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT24 = "西十二区"
+Blockly.Msg.GROVE_JOINT_SETUP = "初始化 setup"
+Blockly.Msg.GROVE_JOINT_SETUP_LOOP = "循环 loop"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE = "%1 %2 温湿度传感器 %3"
+Blockly.Msg.GROVE_JOINT_INPUT_INFRARED = "%1 %2 红外接近传感器"
+Blockly.Msg.GROVE_JOINT_INPUT_MAGNESWITCH = "%1 %2 磁力开关"
+Blockly.Msg.GROVE_JOINT_INPUT_ULTRASONIC = "%1 %2 超声波测距传感器"
+Blockly.Msg.GROVE_JOINT_INPUT_LIGHT = "%1 %2 光线传感器"
+Blockly.Msg.GROVE_JOINT_INPUT_SLIDESWITCH = "%1 %2 滑动电位开关"
+Blockly.Msg.GROVE_JOINT_INPUT_INCLINE = "%1 %2 倾斜传感器"
+Blockly.Msg.GROVE_JOINT_INPUT_TOUCH = "%1 %2 触摸传感器"
+Blockly.Msg.GROVE_JOINT_INPUT_NOISE = "%1 %2 噪音传感器"
+Blockly.Msg.GROVE_JOINT_INPUT_SOILHUMIDITY = "%1 %2 土壤湿度传感器"
+Blockly.Msg.GROVE_JOINT_INPUT_SHAFTSPEED = "%1 %2 三轴数字加速度 %3"
+Blockly.Msg.GROVE_JOINT_INPUT_MULTICHANNEDL_TOUCH = "%1 %2 多通道触摸传感器 通道 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_MINIMOTOR_RUN = "%1 %2 迷你电机驱动板 电机# %3 转速 %4"
+Blockly.Msg.GROVE_JOINT_OUTPUT_FOURDIGIT_TUBE_DISPLAY = "%1 %2 四位数码显示管 显示为 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_LEDBOARD_SHOW = "%1 %2 LED驱动板 设为 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_RGBLED_SHOW = "%1 %2 全彩RGB LED灯显示为红 %3 绿 %4 蓝 %5"
+Blockly.Msg.GROVE_JOINT_OUTPUT_SPEAKER_NOTEBEAT = "%1 %2 扬声器 音符 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_SERVO_TRUNANGLE = "%1 %2 舵机 角度(0-180) %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_BUZZER_PLAY = "%1 %2 蜂鸣器 设为 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_MOTOR_RUN = "%1 %2 震动马达 设为 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_DCMOTOR_RUN = "%1 %2 直流电机驱动板 设为 %3"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT01 = "温度"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT02 = "湿度"
+Blockly.Msg.GROVE_JOINT_INPUT_LEVEL_HIGH = "高电平"
+Blockly.Msg.GROVE_JOINT_INPUT_LEVEL_LOW = "低电平"
+
+
+Blockly.Categories = {};
+Blockly.Categories.motion = "motion"
+Blockly.Categories.looks = "looks"
+Blockly.Categories.sound = "sounds"
+Blockly.Categories.pen = "pen"
+Blockly.Categories.data = "data"
+Blockly.Categories.dataLists = "data-lists"
+Blockly.Categories.event = "events"
+Blockly.Categories.control = "control"
+Blockly.Categories.sensing = "sensing"
+Blockly.Categories.operators = "operators"
+Blockly.Categories.more = "more"
+
+Blockly.Msg.ESP32BUTTON = "当按钮";
+Blockly.Msg.ESP32IS = "是";
+Blockly.Msg.ESP32PRESSED = "按下时";
+Blockly.Msg.ESP32RELEASED = "松开时";
+Blockly.Msg.ESP32DIALER_LEFT = "左侧";
+Blockly.Msg.ESP32DIALER_MIDDLE = "中间";
+Blockly.Msg.ESP32DIALER_RIGHT = "右侧";
+Blockly.Msg.ESP32DIALSWITCH = "当拨盘";
+Blockly.Msg.ESP32TURN = "设置";
+Blockly.Msg.ESP32LED = "";
+Blockly.Msg.ESP32LED_MONO_TEXT_NO = "第";
+Blockly.Msg.ESP32LED_MONO_TEXT_AFTER = "颗 LED 灯";
+Blockly.Msg.ESP32LED_BLUE = "蓝灯";
+Blockly.Msg.ESP32LED_RED = "红灯";
+Blockly.Msg.ESP32LED_TURNON = "点亮";
+Blockly.Msg.ESP32LED_TURNOFF = "关闭";
+
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTUP = "点亮";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTOFF = "熄灭";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_INIT_TEXT = "位于(第";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_MIDDLE_TEXT = "列,第";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_END_TEXT = "行)的 LED 灯";
+
+Blockly.Msg.ESP32TURNOBAF = "蜂鸣器";
+Blockly.Msg.ESP32TURNOB = "关闭蜂鸣器";
+Blockly.Msg.ESP32TA = "当触摸区域";
+Blockly.Msg.ESP32_TOUCHED = "被触摸时";
+Blockly.Msg.ESP32_UNTOUCHED = "未被触摸时";
+Blockly.Msg.ESP32_READ = "获取触摸区域";
+Blockly.Msg.ESP32_READ_VALUE = "的电容变化数值";
+Blockly.Msg.ESP32_ENV_GET_TEXT = "获取";
+
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite = "蜂鸣器播放音符";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite_2 = "持续";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite_3 = "拍";
+
+Blockly.Msg.LCDINIT = "LCD初始化"
+Blockly.Msg.LCDINIT_R = "设置屏幕旋转"
+Blockly.Msg.LCDINIT_M = "设置镜像翻转"
+
+Blockly.Msg.LCDROTATION = "设置LCD屏幕旋转";
+
+Blockly.Msg.LCDMF = "设置LCD屏幕镜面翻转";
+
+Blockly.Msg.LCDDFSW = "设置LCD显示填充屏幕为";
+
+
+Blockly.Msg.LCDDT = "设置LCD显示文本";
+Blockly.Msg.LCDDT_C = "文字颜色";
+Blockly.Msg.LCDDT_BC = "背景色";
+Blockly.Msg.LED_COORDINATE = "坐标";
+Blockly.Msg.WIFISERVER_SERVERSEND_CONTENT = "内容";
+
+Blockly.Msg.LCDDLOC = "绘制线条";
+
+Blockly.Msg.LCDDCC = "LCD创建画布";
+Blockly.Msg.LCDDCC_F = "填充图像:";
+Blockly.Msg.LCDDCC_I = "图像路径:";
+
+Blockly.Msg.LCDDSC = "LCD显示画布";
+Blockly.Msg.LCDDSC_SC = "设置坐标";
+Blockly.Msg.LCDDSC_X = " X:";
+Blockly.Msg.LCDDSC_Y = " Y:";
+
+Blockly.Msg.LCD_CANVAS = "画布";
+Blockly.Msg.LCDDTOC = "绘制文本";
+Blockly.Msg.LCDDTOC_SH = "设置换行";
+
+Blockly.Msg.LCDDASOC = "绘制箭头标志";
+Blockly.Msg.LCDDASOC_SC = "开始坐标";
+Blockly.Msg.LCDDASOC_EC = "结束坐标";
+Blockly.Msg.LCDDASOC_LC = "线条颜色";
+Blockly.Msg.LCDDASOC_LT = "线条粗细";
+Blockly.Msg.LCDDASOC_T = "厚度";
+
+Blockly.Msg.LCDDFROC = "绘制";
+Blockly.Msg.LCDDFROC_R = "矩形";
+Blockly.Msg.LCDDFROC_C = "圆圈";
+Blockly.Msg.LCDRADIUS = "半径";
+
+Blockly.Msg.LCDDCSOC = "绘制十字标志";
+
+Blockly.Msg.LCDCEOC = "清除画布上的所有内容";
+
+Blockly.Msg.LCDSCIC = "设置画布:";
+Blockly.Msg.LCDSCIC_I = "颜色反转";
+
+Blockly.Msg.LCDSCCRTW = "设置画布";
+Blockly.Msg.LCDSCCRTW_R = "调整为宽度";
+Blockly.Msg.LCDSCCRTW_TCANC = "然后创建一个新画布";
+
+Blockly.Msg.LCDDI = "显示在";
+
+Blockly.Msg.LCDSCCCVTP = "设置画布:画布将矢量转换为像素";
+
+Blockly.Msg.LCDRQ = "二维码";
+
+
+
+Blockly.Msg.CAMERAINIT = "相机初始化";
+Blockly.Msg.CAMERAINIT_SFS = "设置帧大小:";
+Blockly.Msg.CAMERAINIT_SFS_I = " in";
+Blockly.Msg.CAMERAINIT_SWW = "设置窗口宽度:224高度:224";
+Blockly.Msg.CAMERAINIT_SVFOSHMO = "设置垂直翻转";
+Blockly.Msg.CAMERAINIT_SVFOSHMO_O = "设置水平镜像"
+Blockly.Msg.CAMERAINIT_SABOSAGO = "设置自动白平衡:";
+Blockly.Msg.CAMERAINIT_SABOSAGO_O = "设置自动增益:";
+Blockly.Msg.CAMERAINIT_SCBS = "设置对比度:";
+Blockly.Msg.CAMERAINIT_SCBS_B = "亮度:";
+Blockly.Msg.CAMERAINIT_SCBS_S = "饱和度:";
+
+Blockly.Msg.CAMERASVFO = "设置垂直翻转";
+Blockly.Msg.CAMERASVFO_SHMO = "设置水平镜像";
+Blockly.Msg.CAMERASVFO_SABO = "设置自动白平衡";
+Blockly.Msg.CAMERASVFO_SAGO = "设置自动增益";
+Blockly.Msg.CAMERASVFO_SCT = "设置对比度为";
+Blockly.Msg.CAMERASVFO_SBT = "设置亮度为";
+Blockly.Msg.CAMERASVFO_SST = "将饱和度设置为";
+
+Blockly.Msg.CAMERGICFC = "获取从相机捕获的图像";
+Blockly.Msg.CAMERGICFC_SCT = "选择摄像机类型:正常";
+
+Blockly.Msg.MODELLPM = "加载预设模型:";
+
+Blockly.Msg.CAMERINIT = "初始化预设模型:单数字识别";
+Blockly.Msg.CAMERINIT_SISF = "从以下位置设置图像源:";
+Blockly.Msg.CAMERINIT_FPM = "来自预设模型:单数字识别";
+Blockly.Msg.CAMERINIT_GCDN = "获取当前检测到的号码(0-9)";
+Blockly.Msg.CAMERINIT_CRC = "当前识别的置信度 (%)";
+Blockly.Msg.CAMERINIT_GTCS = "获取检测到的数字的置信度(%)";
+
+Blockly.Msg.MODELS_L = "识别到了任意常见物体";
+
+Blockly.Msg.MODELS_GET_F = "从";
+Blockly.Msg.MODELS_GET_G = "获取识别到常见物体的";
+Blockly.Msg.MODELS_GET_O = "物体名称";
+Blockly.Msg.MODELS_GET_X = "检测框起点X轴坐标";
+Blockly.Msg.MODELS_GET_Y = "检测框起点Y轴坐标";
+Blockly.Msg.MODELS_GET_W = "检测框终点X轴坐标";
+Blockly.Msg.MODELS_GET_H = "检测框终点Y轴坐标";
+Blockly.Msg.MODELS_GET_NO = "物体数量";
+Blockly.Msg.MODELS_GET_S = "序号";
+Blockly.Msg.MODELS_GET_C = "置信度";
+
+Blockly.Msg.MODELS_FACE = "识别到了人脸";
+
+Blockly.Msg.MODELS_XY_F = "获取识别到人脸的";
+Blockly.Msg.MODELS_XY_N = "数量";
+
+
+Blockly.Msg.MODELS_SDR = "手写数字识别模型";
+Blockly.Msg.MODELS_COR = "常见物体识别模型";
+Blockly.Msg.MODELS_AR = "常见动物识别模型";
+Blockly.Msg.MODELS_HFR = "人脸检测模型";
+
+
+Blockly.Msg.CAMERINITPM = "初始化预设模型:通用对象识别";
+Blockly.Msg.CAMERINITPM_SMSFIOR = "从设置图像源";
+Blockly.Msg.CAMERINITPM_ACOID = "检测到任何公共对象";
+Blockly.Msg.CAMERINITPM_IACOID = "如果检测到任何公共对象";
+Blockly.Msg.CAMERINITPM_D = "执行";
+Blockly.Msg.CAMERINITPM_E = "其他";
+Blockly.Msg.CAMERINITPM_FPM = "来自预设模型:通用对象识别";
+Blockly.Msg.CAMERINITPM_G = "获取";
+Blockly.Msg.CAMERINITPM_GIOTCOD = "检测到公共对象";
+Blockly.Msg.CAMERINITPM_DCOIA = "检测到的公共对象为";
+
+
+
+Blockly.Msg.CAMERINITPMA = "初始化预设模型:动物识别";
+Blockly.Msg.CAMERINITPMA_AAOID = "检测到任何动物";
+Blockly.Msg.CAMERINITPMA_IAAOID = "如果检测到任何动物";
+Blockly.Msg.CAMERINITPMA_FPMA = "来自预设模型:动物确认";
+Blockly.Msg.CAMERINITPMA_GIOTCAD = "检测到的动物";
+Blockly.Msg.CAMERINITPMA_DAOIA = "检测到的动物是";
+
+
+
+Blockly.Msg.CAMERINITPMF = "初始化预设模型:人脸检测";
+Blockly.Msg.CAMERINITPMF_SISFIF = "从设置图像源";
+Blockly.Msg.CAMERINITPMF_AFID = "检测到任何人的脸";
+Blockly.Msg.CAMERINITPMF_IAFID = "如果检测到人脸";
+Blockly.Msg.CAMERINITPMF_FPM = "来自预设模型:人脸检测";
+Blockly.Msg.CAMERINITPMF_GIOTFD = "检测到的脸";
+
+Blockly.Msg.CAMERINITPMF_LCMLM = "加载定制的机器学习模型";
+Blockly.Msg.CAMERINITPMF_FSC = "来自SD卡:";
+
+Blockly.Msg.CAMERINIINNYFNOT = "初始化神经网络YOLOv2"
+Blockly.Msg.CAMERINIINNYFNOT_F = "来自网络对象";
+Blockly.Msg.CAMERINIINNYFNOT_SPT = "设置概率阈值:"
+Blockly.Msg.CAMERINIINNYFNOT_SPT_S = "设置盒IoU阈值:";
+Blockly.Msg.CAMERINITPMF_SNOAA = "设置锚点数量"
+Blockly.Msg.CAMERINITPMF_SNOAA_S = "将锚设置为:锚";
+
+
+Blockly.Msg.CAMERGRFRNNY = "从运行神经网络YOLOv2获得结果";
+Blockly.Msg.CAMERGRFRNNY_FNOT = "来自网络对象";
+Blockly.Msg.CAMERGRFRNNY_SNOLTCTTN = "设置要计算到网络的层数:"
+Blockly.Msg.CAMERGRFRNNY_SISA = "将图像源设置为:";
+
+Blockly.Msg.CAMERGFMOFNOT = "从网络对象获取要素地图对象";
+Blockly.Msg.CAMERGFMOFNOT_SNOLTCTTN = "设置要计算到网络的层数:"
+Blockly.Msg.CAMERGFMOFNOT_SISAC = "将图像源设置为:";
+
+
+Blockly.Msg.CAMERDNOT = "取消初始化网络对象";
+
+
+Blockly.Msg.VISION_IF = "如果颜色";
+Blockly.Msg.VISION_IF_R = "从画布中检测到区域:";
+Blockly.Msg.VISION_IF_S = "设置最大检测大小:";
+
+Blockly.Msg.VISION_IF_C = "获取检测到的区域";
+
+
+Blockly.Msg.VISION_CIF = "从画布中检测到圆圈:";
+Blockly.Msg.VISION_CIF_D = "获取被发现的圈子";
+
+Blockly.Msg.VISION_SIF = "开始双线检测";
+Blockly.Msg.VISION_SIF_D = "检测线条颜色:";
+Blockly.Msg.VISION_SIF_G = "获取方向偏移值";
+Blockly.Msg.VISION_SIF_GF = "来自双线检测";
+
+
+
+Blockly.Msg.MPHONE = "麦克风初始化";
+Blockly.Msg.MPHONE_A = "从麦克风读取平均响度";
+
+
+Blockly.Msg.AUDIO_S = "扬声器初始化";
+Blockly.Msg.AUDIO_S_P = "播放音频文件";
+Blockly.Msg.AUDIO_S_PS = "设置音量";
+Blockly.Msg.AUDIO_S_PF = "文件路径:";
+
+Blockly.Msg.AUDIO_SET = "设置音频播放音量";
+
+Blockly.Msg.VIDEO_S = "视频录制初始化";
+Blockly.Msg.VIDEO_S_S = "文件保存路径:";
+Blockly.Msg.VIDEO_G = "从图像源";
+Blockly.Msg.VIDEO_S_I = "录制视频";
+Blockly.Msg.VIDEO_S_R = "停止录制视频";
+
+Blockly.Msg.VIDEO_SET_F = "播放视频文件";
+Blockly.Msg.VIDEO_SET_P = "文件路径:";
+
+Blockly.Msg.VIDEO_NUM = "设置视频播放音量 ";
+
+Blockly.Msg.VIDEO_STATUS = "获取视频播放的状态";
+
+
+Blockly.Msg.SYSTEM = "重启系统";
+Blockly.Msg.SYSTEM_GC = "启动内存回收";
+Blockly.Msg.SYSTEM_CREATE = "创建文本文件 ";
+Blockly.Msg.SYSTEM_CREATE_F = "文件名:";
+
+Blockly.Msg.SYSTEM_RUN = "运行程序文件";
+Blockly.Msg.SYSTEM_RUN_F = "文件名:";
+
+
+Blockly.Msg.SYSTEM_WRITE = "创建文本文件";
+Blockly.Msg.SYSTEM_WRITE_F = "文件名:";
+Blockly.Msg.SYSTEM_WRITE_W = "写入内容:";
+Blockly.Msg.SYSTEM_WRITE_S = "分隔符为:";
+Blockly.Msg.SYSTEM_WRITE_S_N = "换行";
+Blockly.Msg.SYSTEM_WRITE_S_C = "逗号";
+Blockly.Msg.SYSTEM_WRITE_S_S = "空格";
+Blockly.Msg.SYSTEM_WRITE_S_SE = "分号";
+
+Blockly.Msg.SYSTEM_INPUT = "读取文本文件为列表";
+
+
+
+Blockly.Msg.SERIALPORT_PRINT_TITLE = "串口打印 %1";
+Blockly.Msg.SERIALPORT_SPACER = "间隔符";
+Blockly.Msg.SERIALPORT_TERMINATOR = "结束符";
+Blockly.Msg.SERIALPORT_DATA = "数据";
+
+
+
+Blockly.Msg.SERIALPORT_COLOR = "文字颜色";
+Blockly.Msg.SERIALPORT_TCOLOR = "文字底色";
+Blockly.Msg.SERIALPORT_SLDT = "设置LCD灯显示文字";
+
+Blockly.Msg.LCD_CLEAR = "清除屏幕";
+
+Blockly.Msg.CAMERA_WINDOW = "设置摄像头窗口化";
+Blockly.Msg.CAMERA_SIZE = "窗口尺寸";
+
+Blockly.Msg.CAMERA_INIT = "摄像头初始化";
+Blockly.Msg.CAMERA_CIS = "捕捉图像尺寸:";
+Blockly.Msg.CAMERA_COCI = "捕捉图像颜色为:";
+
+Blockly.Msg.CAMERA_C = "彩色";
+Blockly.Msg.CAMERA_BW = "黑白";
+
+
+/*
+  __  __       _   _     
+ |  \/  | __ _| |_| |__  
+ | |\/| |/ _` | __| '_ \ 
+ | |  | | (_| | |_| | | |
+ |_|  |_|\__,_|\__|_| |_|
+                         
+*/
+
+Blockly.Msg.math_degrad_rad = "转换角度为弧度";
+Blockly.Msg.math_degrad_deg = "转换弧度为角度";
+
+
+/*
+  ___                   _      _____        _               _   
+ |_ _|_ __  _ __  _   _| |_   / / _ \ _   _| |_ _ __  _   _| |_ 
+  | || '_ \| '_ \| | | | __| / / | | | | | | __| '_ \| | | | __|
+  | || | | | |_) | |_| | |_ / /| |_| | |_| | |_| |_) | |_| | |_ 
+ |___|_| |_| .__/ \__,_|\__/_/  \___/ \__,_|\__| .__/ \__,_|\__|
+           |_|                                 |_|              
+*/
+
+Blockly.Msg.io_high = "高电平";
+Blockly.Msg.io_low = "低电平";
+Blockly.Msg.digital_set = "设置引脚 #";
+Blockly.Msg.digital_set_as = "为";
+Blockly.Msg.digital_get = "获取引脚 #";
+Blockly.Msg.digital_get_value = "的数字信号数值";
+
+Blockly.Msg.analog_get = "获取引脚 #";
+Blockly.Msg.analog_get_value = "的模拟信号数值 (PWM)";
+Blockly.Msg.analog_set = "IoT 模块设置引脚 #";
+Blockly.Msg.set_pin = "(范围:0 ~ 1023)";
+Blockly.Msg.analog_set_ai = "A.I. 模块设置引脚 #";
+Blockly.Msg.analog_set_freq = "设置频率为:";
+Blockly.Msg.analog_set_pwm = "设置 PWM 为:";
+Blockly.Msg.set_pwm = "的模拟输出为";
+Blockly.Msg.led = "LED";
+Blockly.Msg.control = "控制";
+Blockly.Msg.OUT_PWM = "输出 PWM 波";
+
+Blockly.Msg.analog_set_timer = "设置 Timer 为:";
+Blockly.Msg.analog_set_timer_channel = "设置 Timer 频道为:"; 
+
+Blockly.Msg.Esp32_Main_Controller_Io_analog_pin_1 = "A.I. 模块引脚 #";
+Blockly.Msg.Esp32_Main_Controller_Io_analog_pin_2 = "IoT 模块引脚 #";
+
+/*
+  _____ _                
+ |_   _(_)_ __ ___   ___ 
+   | | | | '_ ` _ \ / _ \
+   | | | | | | | | |  __/
+   |_| |_|_| |_| |_|\___|
+                         
+*/
+
+Blockly.Msg.time_iot_module = "IoT 模块 ";
+Blockly.Msg.time_ai_module = "AI 模块";
+Blockly.Msg.time_init_timer = "初始化计时器";
+Blockly.Msg.time_timer_get_time = "获取计时器已过时间(秒)";
+Blockly.Msg.time_timer_clear = "清除计时器";
+Blockly.Msg.time_timer_periodically = "启用周期重复计时器";
+Blockly.Msg.time_timer_every = "每隔";
+Blockly.Msg.time_timer_ms = "毫秒";
+Blockly.Msg.time_execution = "运行";
+Blockly.Msg.time_timer_periodically_clear = "清除周期重复计时器";
+
+Blockly.Msg.time_get_current_date_title = "获取本地时间:";
+Blockly.Msg.time_get_current_date_y = "年";
+Blockly.Msg.time_get_current_date_m = "月";
+Blockly.Msg.time_get_current_date_d = "日";
+Blockly.Msg.time_get_current_date_hour = "时";
+Blockly.Msg.time_get_current_date_min = "分";
+Blockly.Msg.time_get_current_date_sec = "秒";
+
+
+/*
+  ____            _       _    ____                            
+ / ___|  ___ _ __(_) __ _| |  / ___|___  _ __ ___  _ __ ___    
+ \___ \ / _ \ '__| |/ _` | | | |   / _ \| '_ ` _ \| '_ ` _ \   
+  ___) |  __/ |  | | (_| | | | |__| (_) | | | | | | | | | | |_ 
+ |____/ \___|_|  |_|\__,_|_|  \____\___/|_| |_| |_|_| |_| |_(_)
+
+*/
+
+Blockly.Msg.serialcomm_print = "串口打印";
+Blockly.Msg.serialcomm_write_title_text = "通过串口发送数据至其他设备";
+Blockly.Msg.serialcomm_write_title_text_arduino = "通过USB发送数据至Arduino";
+Blockly.Msg.serialcomm_read_setup_title_text_arduino = "通过USB获取数据初始化";
+Blockly.Msg.serialcomm_read_setup_title_text = "通过串口获取数据";
+Blockly.Msg.serialcomm_read_setup_title_text_1 = "初始化";
+Blockly.Msg.serial_read_data = "从";
+Blockly.Msg.Serial_Read_Data_all = "获取到的串口数据";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_GET_TEXT = "获取接收一代和二代串口数据中第";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_TEXT = "位的数据";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_FLOAT = "浮点数";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_INTEGER = "Number";  // untranslated
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_STRING = "字符";
+Blockly.Msg.serialcomm_write_item_first = "第 ";
+Blockly.Msg.serialcomm_write_item_last = " 位数据:";
+Blockly.Msg.serialcomm_write_item = "项目";
+Blockly.Msg.serialcomm_write_data = "数据";
+Blockly.Msg.serialcomm_write_data_bps_title = "设置波特率为:";
+Blockly.Msg.serialcomm_write_data_bps_attrib = "比特/秒";
+Blockly.Msg.serialcomm_write_on = "使用";
+Blockly.Msg.serialcomm_write_on_ai = "AI 模块 ";
+Blockly.Msg.serialcomm_write_on_iot = "IoT 模块";
+Blockly.Msg.serial_send_data_on = "在";
+Blockly.Msg.serial_send_data_on_send_data_cocorobo = "CocoPi 发送数据至一代和二代"
+Blockly.Msg.serial_send_data_on_send_data = "CocoPi 发送数据至 Micro:bit"
+Blockly.Msg.serial_send_data_on_send_data_control_panel = "CocoPi 发送数据至掌控板"
+Blockly.Msg.serial_send_data_on_send_data_control_panel_arduino = "CocoPi 发送数据至 Arduino"
+
+
+
+
+/*
+  ____            _      
+ | __ )  __ _ ___(_) ___ 
+ |  _ \ / _` / __| |/ __|
+ | |_) | (_| \__ \ | (__ 
+ |____/ \__,_|___/_|\___|
+
+*/
+
+
+Blockly.Msg.basic_button_read_value = "读取按钮";
+Blockly.Msg.basic_button_read_value_after = "的电平状态";
+
+Blockly.Msg.basic_buzzer_set_init = "蜂鸣器初始化,并设置引脚为:";
+Blockly.Msg.basic_buzzer_set = "蜂鸣器设置音调频率为 (Hz):";
+Blockly.Msg.basic_temperature = "温度";
+Blockly.Msg.basic_humidity = "湿度";
+Blockly.Msg.basic_pressure = "大气压";
+Blockly.Msg.basic_env_value = "数值(获取数值时间要大于1秒)";
+Blockly.Msg.basic_motion_use = "使用运动传感器";
+
+Blockly.Msg.basic_shaking_sensitivity = "设置灵敏度为";
+Blockly.Msg.basic_shaking_sensitivity_high = "高";
+Blockly.Msg.basic_shaking_sensitivity_middle = "中";
+Blockly.Msg.basic_shaking_sensitivity_low = "低";
+Blockly.Msg.basic_when_shaking_when_module = "当模块";
+Blockly.Msg.basic_when_shaking_when_is_in = "处于";
+Blockly.Msg.basic_when_shaking_when_is_not_in = "不处于";
+Blockly.Msg.basic_when_shaking_when_shaking = "摇晃状态时";
+
+Blockly.Msg.basic_when_shaking = "当模块处于摇晃状态时";
+Blockly.Msg.basic_when_shaking_not = "当模块不处于摇晃状态时";
+
+Blockly.Msg.basic_when_tilting_get = "当模块";
+Blockly.Msg.basic_when_tilting_get_left = "向左";
+Blockly.Msg.basic_when_tilting_get_right = "向右";
+Blockly.Msg.basic_when_tilting_get_forward = "向前";
+Blockly.Msg.basic_when_tilting_get_backward = "向后";
+Blockly.Msg.basic_when_tilting_get_left_and_forward = "向左前";
+Blockly.Msg.basic_when_tilting_get_left_and_backward = "向左后";
+Blockly.Msg.basic_when_tilting_get_right_and_forward = "向右前";
+Blockly.Msg.basic_when_tilting_get_right_and_backward = "向右后";
+Blockly.Msg.basic_when_tilting_not_tilting = "没有";
+Blockly.Msg.basic_when_tilting_get_when = "倾斜时";
+Blockly.Msg.basic_motion_get = "获取";
+Blockly.Msg.basic_motion_accel = "轴的加速度";
+Blockly.Msg.basic_motion_rotation_measurement = "轴的旋转测量值";
+Blockly.Msg.basic_motion_angle = "轴的倾斜角度";
+Blockly.Msg.isUnit = "需要单位";
+Blockly.Msg.confUnit = "是";
+Blockly.Msg.cancUnit = "否";
+Blockly.Msg.basic_light_get = "获取光线值(0~4095)";
+
+Blockly.Msg.basic_motion_statement_exec = "执行";
+
+
+
+
+/*
+  ____  _           _             
+ |  _ \(_)___ _ __ | | __ _ _   _ 
+ | | | | / __| '_ \| |/ _` | | | |
+ | |_| | \__ \ |_) | | (_| | |_| |
+ |____/|_|___/ .__/|_|\__,_|\__, |
+             |_|            |___/ 
+*/
+
+Blockly.Msg.display_clear_screen = "清除 LCD 屏幕";
+Blockly.Msg.display_fill_screen = "设置 LCD 铺满颜色为";
+Blockly.Msg.display_draw_pixel = "像素点";
+Blockly.Msg.display_draw_vertical = "垂直";
+Blockly.Msg.display_draw_horizontal = "水平";
+Blockly.Msg.display_start_cord = "起始坐标";
+Blockly.Msg.display_length = "长度";
+Blockly.Msg.display_draw_rectangle = "矩形";
+Blockly.Msg.display_drawqr_text = " QR 二维码";
+Blockly.Msg.display_drawqr_content = "文本内容";
+Blockly.Msg.display_drawqr_padding = "边距宽度";
+Blockly.Msg.display_draw_text = "文本";
+Blockly.Msg.display_draw_text_content = "文本内容";
+Blockly.Msg.display_draw_text_size = "文本大小";
+Blockly.Msg.display_draw_text_return = "是否换行";
+Blockly.Msg.display_red = "红";
+Blockly.Msg.display_green = "绿";
+Blockly.Msg.display_blue = "蓝";
+
+/*
+ __        ___       _____ _ 
+ \ \      / (_)     |  ___(_)
+  \ \ /\ / /| |_____| |_  | |
+   \ V  V / | |_____|  _| | |
+    \_/\_/  |_|     |_|   |_|
+                             
+*/
+
+Blockly.Msg.wifi_setup_hotspot = "创建 Wi-Fi 热点";
+Blockly.Msg.wifi_hotspot_ssid = "SSID:";
+Blockly.Msg.wifi_hotspot_pass = "密码:";
+Blockly.Msg.wifi_connect_router = "连接 WiFi 网络";
+Blockly.Msg.wifi_router_ssid = "SSID:";
+Blockly.Msg.wifi_router_pass = "密码:";
+Blockly.Msg.wifi_router_disconnect = "断开 WiFi 连接";
+Blockly.Msg.wifi_hotspot_get_clients = "获取当前已连接的设备数量";
+Blockly.Msg.wifi_hotspot_get_list = "获取当前已连接的设备列表";
+Blockly.Msg.wifi_router_connection_status = "获取 WiFi 连接状态";
+Blockly.Msg.wifi_close_hotspot = "关闭 Wi-Fi 热点";
+Blockly.Msg.wifi_router_get_info = "获取 WiFi 配置信息";
+Blockly.Msg.wifi_router_device_ip = "IP";
+Blockly.Msg.wifi_router_device_mask = "子网掩码";
+Blockly.Msg.wifi_router_device_gateway = "网关";
+Blockly.Msg.wifi_router_device_dns = "DNS";
+
+Blockly.Msg.wifi_ntptime_title = "同步网络时间";
+Blockly.Msg.wifi_ntptime_set_timezone = "设置同步时区";
+Blockly.Msg.wifi_ntptime_utc8 = "东8区";
+Blockly.Msg.wifi_ntptime_utc9 = "东9区";
+Blockly.Msg.wifi_ntptime_utc10 = "东10区";
+Blockly.Msg.wifi_ntptime_utc11 = "东11区";
+Blockly.Msg.wifi_ntptime_utc12 = "东12区";
+Blockly.Msg.wifi_ntptime_utcm12 = "西12区";
+Blockly.Msg.wifi_ntptime_utcm11 = "西区";
+Blockly.Msg.wifi_ntptime_utcm10 = "西区";
+Blockly.Msg.wifi_ntptime_utcm9 = "西9区";
+Blockly.Msg.wifi_ntptime_utcm8 = "西8区";
+Blockly.Msg.wifi_ntptime_utcm7 = "西7区";
+Blockly.Msg.wifi_ntptime_utcm6 = "西6区";
+Blockly.Msg.wifi_ntptime_utcm5 = "西5区";
+Blockly.Msg.wifi_ntptime_utcm4 = "西4区";
+Blockly.Msg.wifi_ntptime_utcm3 = "西3区";
+Blockly.Msg.wifi_ntptime_utcm2 = "西2区";
+Blockly.Msg.wifi_ntptime_utcm1 = "西1区";
+Blockly.Msg.wifi_ntptime_utc0 = "中时区";
+Blockly.Msg.wifi_ntptime_utc1 = "东1区";
+Blockly.Msg.wifi_ntptime_utc2 = "东2区";
+Blockly.Msg.wifi_ntptime_utc3 = "东3区";
+Blockly.Msg.wifi_ntptime_utc4 = "东4区";
+Blockly.Msg.wifi_ntptime_utc5 = "东5区";
+Blockly.Msg.wifi_ntptime_utc6 = "东6区";
+Blockly.Msg.wifi_ntptime_utc7 = "东7区";
+Blockly.Msg.wifi_ntptime_time_server = "设置同步服务器:";
+
+Blockly.Msg.wifi_web_http_server_setup = "HTTP 服务器初始化";
+Blockly.Msg.wifi_web_http_server_route_setting_title = "HTTP 服务器设置访问路径";
+Blockly.Msg.wifi_web_http_server_route_setting_path = "当路径:";
+Blockly.Msg.wifi_web_http_server_route_setting_being_requested = "被请求时";
+Blockly.Msg.wifi_web_http_server_route_setting_property = "设置请求属性为:";
+Blockly.Msg.wifi_web_http_server_route_setting_get = "GET 请求";
+Blockly.Msg.wifi_web_http_server_route_setting_post = "POST 请求";
+Blockly.Msg.wifi_web_http_server_route_setting_do = "运行";
+Blockly.Msg.wifi_web_http_server_respond_title = "HTTP 服务器设置响应内容";
+Blockly.Msg.wifi_web_http_server_respond_type = "设置返回数据类型:";
+Blockly.Msg.wifi_web_http_server_respond_text = "纯文本";
+Blockly.Msg.wifi_web_http_server_respond_json = "字典类型数据 (JSON)";
+Blockly.Msg.wifi_web_http_server_respond_html = "网页 (HTML 代码)";
+Blockly.Msg.wifi_web_http_server_respond_exec = "响应";
+Blockly.Msg.wifi_web_http_server_get_title = "HTTP 服务器获取从客户端收到的数据,类型为";
+Blockly.Msg.wifi_web_http_server_get_as_json = "字典类型数据 (JSON)";
+Blockly.Msg.wifi_web_http_server_get_as_text = "文本";
+
+
+/*
+  _   _ ____       ___    _____ 
+ | \ | | __ )     |_ _|__|_   _|
+ |  \| |  _ \ _____| |/ _ \| |  
+ | |\  | |_) |_____| | (_) | |  
+ |_| \_|____/     |___\___/|_|  
+
+*/
+Blockly.Msg.nbiot_module_which_module_iot = "在 IoT 模块上";
+Blockly.Msg.nbiot_module_which_module_ai = "在 AI 模块上";
+
+Blockly.Msg.nbiot_module_init = "NB-IoT 模块通信初始化";
+Blockly.Msg.nbiot_module_power = "获取 NB-IoT 模块启用状态";
+Blockly.Msg.nbiot_module_connectivity = "获取 NB-IoT 模块网络连接状态";
+Blockly.Msg.nbiot_module_ip = "获取 NB-IoT 模块网络 IP 地址";
+Blockly.Msg.nbiot_onenet_title = "NB-IoT 模块连接 OneNET";
+Blockly.Msg.nbiot_onenet_connect_productid = "产品 ID:";
+Blockly.Msg.nbiot_onenet_connect_deviceid = "设备 ID:";
+Blockly.Msg.nbiot_onenet_connect_device_api = "设备 API Key:";
+Blockly.Msg.nbiot_onenet_connectivity = "NB-IoT 模块获取 OneNET 连接状态";
+Blockly.Msg.nbiot_onenet_send_title = "NB-IoT 模块发送数据至 OneNET";
+Blockly.Msg.nbiot_onenet_send_property = "属性名称: ";
+Blockly.Msg.nbiot_onenet_when_incoming_msg = "当 NB-IoT 模块从 OneNET 收到消息";
+Blockly.Msg.nbiot_onenet_when_incoming_msg_when = "时";
+Blockly.Msg.nbiot_onenet_when_incoming_msg_exec = "运行";
+Blockly.Msg.nbiot_onenet_receive_command = "获取 NB-IoT 模块从 OneNET 发送的指令";
+Blockly.Msg.nbiot_cococloud_get_event_title = "NB-IoT 模块获取 CocoCloud 事件数据";
+Blockly.Msg.nbiot_cococloud_get_event_api = "云端事件 API Key:";
+Blockly.Msg.nbiot_cococloud_get_property = "获取 CocoCloud 事件中属性为";
+Blockly.Msg.nbiot_cococloud_get_data = "的数据";
+Blockly.Msg.nbiot_cococloud_send_title = "NB-IoT 模块发送数据至 CocoCloud";
+Blockly.Msg.nbiot_cococloud_send_api = "事件 API Key:";
+Blockly.Msg.nbiot_cococloud_send_property = "属性名称: ";
+Blockly.Msg.nbiot_http_get_title = "发送 HTTP GET 请求";
+Blockly.Msg.nbiot_http_get_url = "设置目标网址:";
+
+
+
+
+/*
+  ___       _                       _   
+ |_ _|_ __ | |_ ___ _ __ _ __   ___| |_ 
+  | || '_ \| __/ _ \ '__| '_ \ / _ \ __|
+  | || | | | ||  __/ |  | | | |  __/ |_ 
+ |___|_| |_|\__\___|_|  |_| |_|\___|\__|
+
+*/
+
+
+Blockly.Msg.internet_server_setup = "HTTP 服务器初始化";
+Blockly.Msg.internet_server_set_max = "设置最大连接数:";
+Blockly.Msg.internet_server_set_source = "获取发起请求设备的来源 IP";
+Blockly.Msg.internet_response_http_content_title = "获取 HTTP 响应内容的";
+Blockly.Msg.internet_response_text = "文本";
+Blockly.Msg.internet_response_content = "内容";
+Blockly.Msg.internet_response_status = "状态码";
+Blockly.Msg.internet_response_json = "JSON数据";
+Blockly.Msg.internet_response_encode = "编码";
+Blockly.Msg.internet_response_reason = "原因短语";
+Blockly.Msg.internet_http_get_title = "发送 HTTP GET 请求";
+Blockly.Msg.internet_http_get_url = "设置目标网址:";
+Blockly.Msg.internet_http_post_title = "发送 HTTP POST 请求";
+Blockly.Msg.internet_http_post_url = "设置目标网址:";
+Blockly.Msg.internet_http_post_json = "提交数据 (JSON):";
+
+Blockly.Msg.internet_http_get_server_data_title = "获取从本地 HTTP 服务器请求得到的数据";
+Blockly.Msg.internet_http_get_server_data_type = "数据类型为:";
+Blockly.Msg.internet_http_get_server_data_json = "字典数据类型";
+Blockly.Msg.internet_http_get_server_data_text = "纯文本";
+
+Blockly.Msg.internet_ws_setup_send_text = "实时通信 (WebSocket) 发送端初始化";
+Blockly.Msg.internet_ws_setup_send_ip = "设置目标设备 IP:";
+Blockly.Msg.internet_ws_send_msg = "透过实时通信 (WebSocket) 发送消息";
+Blockly.Msg.internet_ws_setup_recv = "实时通信 (WebSocket) 接收端初始化";
+Blockly.Msg.internet_ws_setup_receiving = "当实时通信 (WebSocket) 收到消息时";
+Blockly.Msg.internet_ws_setup_recv_exec = "运行";
+Blockly.Msg.internet_ws_setup_get_msg = "获取从实时通信 (WebSocket) 接收到的消息";
+Blockly.Msg.internet_ws_setup_get_msg_type = "类型为";
+Blockly.Msg.internet_ws_setup_get_msg_text = "文本";
+Blockly.Msg.internet_ws_setup_get_msg_json = "字典类型数据 (JSON)";
+
+Blockly.Msg.v831_get_weather_init = "初始化天气";
+Blockly.Msg.set_weather_city = "设置获取天气的城市";
+Blockly.Msg.set_weather_title_small = "设置天气时段";
+Blockly.Msg.set_weather_real_time = "实时";
+Blockly.Msg.set_weather_All_day_long = "全天";
+Blockly.Msg.set_weather_city_title = "设置获取天气的城市和时段"
+Blockly.Msg.beijing = "北京";
+Blockly.Msg.shanghai = "上海";
+Blockly.Msg.guangzhou = "广州";
+Blockly.Msg.shenzhen = "深圳";
+Blockly.Msg.tianjin= "天津";
+Blockly.Msg.HongKong = "香港"
+Blockly.Msg.weather_resulet= "天气结果"
+Blockly.Msg.weather_condition = "天气状况"
+Blockly.Msg.windDir = "风向"
+Blockly.Msg.windScale = "风向等级"
+Blockly.Msg.windSpeed = "风速"
+
+/*
+  ___    _____   ____                  _          
+ |_ _|__|_   _| / ___|  ___ _ ____   _(_) ___ ___ 
+  | |/ _ \| |   \___ \ / _ \ '__\ \ / / |/ __/ _ \
+  | | (_) | |    ___) |  __/ |   \ V /| | (_|  __/
+ |___\___/|_|   |____/ \___|_|    \_/ |_|\___\___|
+
+*/
+
+
+Blockly.Msg.iotservice_thingspeak_send_title = "发送数据至 ThingSpeak 频道 (Channel)";
+Blockly.Msg.iotservice_thingspeak_send_api_set = "设置频道 API Key:";
+Blockly.Msg.iotservice_thingspeak_send_data_1 = "数据1";
+Blockly.Msg.iotservice_onenet_mqtt_setup = "OneNET 物联网平台 (MQTTS) 连接初始化";
+Blockly.Msg.iotservice_onenet_mqtt_server = "设置连接服务器:";
+Blockly.Msg.iotservice_onenet_mqtt_productid = "设置产品 ID:";
+Blockly.Msg.iotservice_onenet_mqtt_productkey = "设置产品 API Key:";
+Blockly.Msg.iotservice_onenet_mqtt_deviceid = "设置设备 ID:";
+Blockly.Msg.iotservice_onenet_mqtt_send = "往 OneNET 发送数据";
+Blockly.Msg.iotservice_onenet_mqtt_send_item = "属性名称: ";
+Blockly.Msg.iotservice_onenet_mqtt_receive = "当从 OneNET 收到消息为";
+Blockly.Msg.iotservice_onenet_mqtt_receive_when = "时";
+Blockly.Msg.iotservice_onenet_mqtt_receive_exec = "运行";
+Blockly.Msg.iotservice_onenet_mqtt_disconnect = "断开 OneNET 连接";
+Blockly.Msg.iotservice_ifttt_send_title = "发送数据到 IFTTT Webhooks 事件";
+Blockly.Msg.iotservice_ifttt_send_webhook = "Webhooks API Key:";
+Blockly.Msg.iotservice_ifttt_send_eventname = "事件名称:";
+Blockly.Msg.iotservice_ifttt_send_1 = "数据 1:";
+Blockly.Msg.iotservice_ifttt_send_2 = "数据 2:";
+Blockly.Msg.iotservice_ifttt_send_3 = "数据 3:";
+Blockly.Msg.iotservice_ifttt_trigger_title = "触发 IFTTT 事件";
+Blockly.Msg.iotservice_ifttt_trigger_webhook = "Webhook API Key:";
+Blockly.Msg.iotservice_ifttt_trigger_eventname = "事件名称:";
+Blockly.Msg.iotservice_thingspeak_send_title = "发送数据至 ThingSpeak 频道";
+Blockly.Msg.iotservice_thingspeak_send_api = "频道 API Key:";
+Blockly.Msg.iotservice_thingspeak_query_title = "查找 ThingSpeak 指定频道的数据";
+Blockly.Msg.iotservice_thingspeak_query_api = "频道 API Key:";
+Blockly.Msg.iotservice_thingspeak_channel_id = "频道 ID:";
+Blockly.Msg.iotservice_thingspeak_read_total = "获取 ThingSpeak 频道中的数据总量";
+Blockly.Msg.iotservice_thingspeak_get_title = "获取 ThingSpeak 频道中第";
+Blockly.Msg.iotservice_thingspeaK_get_field = "条数据的 Field";
+Blockly.Msg.iotservice_thingspeaK_get_value = "的数值";
+Blockly.Msg.iotservice_cococloud_send_title = "发送数据至 CocoCloud 事件";
+Blockly.Msg.iotservice_cococloud_send_title_api = "事件 API Key:";
+Blockly.Msg.iotservice_cococloud_send_property = "属性名称: ";
+Blockly.Msg.iotservice_cococloud_send_property_1 = "属性值:";
+Blockly.Msg.iotservice_cococloud_get_title = "获取 CocoCloud 事件中的数据";
+Blockly.Msg.iotservice_cococloud_get_api = "事件 API Key:";
+Blockly.Msg.iotservice_cococloud_get_property = "获取 CocoCloud 事件中属性为";
+Blockly.Msg.iotservice_cococloud_get_data = "的数据";
+
+
+/*
+  ____            _                 
+ / ___| _   _ ___| |_ ___ _ __ ___  
+ \___ \| | | / __| __/ _ \ '_ ` _ \ 
+  ___) | |_| \__ \ ||  __/ | | | | |
+ |____/ \__, |___/\__\___|_| |_| |_|
+        |___/                                                                    
+*/
+
+
+Blockly.Msg.system_code_path = "程序路径为:";
+Blockly.Msg.system_get_size = "获取模块内剩余空间(单位: MB)";
+Blockly.Msg.system_get_mac = "获取模块的 MAC 地址";
+Blockly.Msg.system_get_cocorobo_cid = "获取 IoT 设备 ID";
+Blockly.Msg.iot_system_get_cocorobo_firmware_version = "获取 IoT 当前固件版本号";
+Blockly.Msg.iot_system_delete = "删除文件";
+Blockly.Msg.ai_system_get_cocorobo_firmware_version = "获取 AI 当前固件版本号";
+Blockly.Msg.ai_system_get_size = "获取内存内剩余空间(单位: MB)";
+Blockly.Msg.ai_system_sd_get_size = "获取SD卡内剩余空间(单位: MB)";
+Blockly.Msg.ai_system_thread = "启用多线程";
+Blockly.Msg.ai_systen_thread_val = "参数";
+Blockly.Msg.ai_system_thread_setting = "设置多线程";
+Blockly.Msg.ai_system_thread_setDaemon = "守护线程";
+Blockly.Msg.ai_system_thread_not_setDaemon = "非守护线程";
+Blockly.Msg.ai_system_thread_set_setDaemon_TOOLTIP = "设置子线程为守护线程,需要在子线程开启之前进行设置";
+Blockly.Msg.ai_system_thread_set_join = "阻塞";
+Blockly.Msg.ai_systen_queue_aritem = "将变量";
+Blockly.Msg.ai_systen_queue_put = "放在队列中";
+Blockly.Msg.ai_systen_queue_get = "得到队列";
+Blockly.Msg.ai_systen_queue_value = "的值";
+
+/*
+  _     _____ ____    ____  _        _       
+ | |   | ____|  _ \  / ___|| |_ _ __(_)_ __  
+ | |   |  _| | | | | \___ \| __| '__| | '_ \ 
+ | |___| |___| |_| |  ___) | |_| |  | | |_) |
+ |_____|_____|____/  |____/ \__|_|  |_| .__/ 
+                                      |_|                                               
+*/
+
+
+
+Blockly.Msg.ledstrip_setup_text_iot = "在 IoT 模块上 "
+Blockly.Msg.ledstrip_setup_text_ai = "在 AI 模块上";
+
+Blockly.Msg.ledstrip_setup_text = "LED 灯带";
+Blockly.Msg.ledstrip_setup = "初始化";
+Blockly.Msg.ledstrip_set_gpio = "设置灯带引脚 #:";
+Blockly.Msg.ledstrip_set_total_led = "设置灯带中灯的数量:";
+Blockly.Msg.ledstrip_set_light_up = "点亮 LED 灯带";
+Blockly.Msg.ledstrip_set_no = "设置要点亮的 LED 灯序号:";
+Blockly.Msg.ledstrip_set_color = "并设置颜色为:";
+
+Blockly.Msg.ledstrip_setup_text_show_above_set = "使灯带";
+Blockly.Msg.ledstrip_setup_text_show_above = "显示以上效果";
+
+Blockly.Msg.ledstrip_set_brightness_setup = "设置灯带亮度为:";
+
+
+Blockly.Msg.Pedometer_Init = "初始化计步器";
+
+Blockly.Msg.Pedometer_Run = "运行计步器";
+Blockly.Msg.Pedometer_Get = "获取计数";
+
+Blockly.Msg.Pedometer_Init_time = "时间间隔";
+Blockly.Msg.Pedometer_Init_sensitivity = "灵敏度";
+
+Blockly.Msg.ledstrip_set_brightness_1 = "设置 LED 灯带亮度为:";
+Blockly.Msg.ledstrip_set_brightness_after = "(亮度范围: 0~255)";
+
+
+
+
+/*
+  ____                       
+ / ___|  ___ _ ____   _____  
+ \___ \ / _ \ '__\ \ / / _ \ 
+  ___) |  __/ |   \ V / (_) |
+ |____/ \___|_|    \_/ \___/ 
+                                                                             
+*/
+
+
+Blockly.Msg.servo_setup = "IoT 模块舵机初始化";
+Blockly.Msg.servo_set_gpio = "IoT 模块设置位于引脚 #";
+Blockly.Msg.servo_rotate_to = "的舵机转动至";
+Blockly.Msg.servo_degree = "度 (0˚~180˚)";
+
+Blockly.Msg.servo_setup_ai = "舵机初始化";
+Blockly.Msg.servo_set_gpio_ai = "设置位于引脚 #";
+Blockly.Msg.servo_rotate_to_ai = "的舵机转动至";
+Blockly.Msg.servo_degree_ai = "度 (0˚~180˚)";
+
+
+/*
+  __  __       _             
+ |  \/  | ___ | |_ ___  _ __ 
+ | |\/| |/ _ \| __/ _ \| '__|
+ | |  | | (_) | || (_) | |   
+ |_|  |_|\___/ \__\___/|_|   
+
+*/
+
+Blockly.Msg.x_motor_set_motor = "IoT 模块电机驱动初始化设置";
+Blockly.Msg.x_motor_set_motor_turn = "IoT 模块设定电机";
+Blockly.Msg.x_motor_set_motor_speed = "以速度";
+Blockly.Msg.x_motor_exec = "(-255~255)进行";
+Blockly.Msg.x_motor_cw = "顺时针";
+Blockly.Msg.x_motor_acw = "逆时针";
+Blockly.Msg.x_motor_set_motor_turns = "转动";
+
+Blockly.Msg.x_motor_set_motor_ai = "电机驱动初始化设置";
+Blockly.Msg.x_motor_set_motor_turn_ai = "设定电机";
+Blockly.Msg.x_motor_set_motor_speed_ai = "以速度";
+Blockly.Msg.x_motor_exec_ai = "(0~255)进行";
+Blockly.Msg.x_motor_cw_ai = "顺时针";
+Blockly.Msg.x_motor_acw_ai = "逆时针";
+Blockly.Msg.x_motor_set_motor_turns_ai = "转动";
+
+
+/*
+  _     _____ ____    __  __       _        _      
+ | |   | ____|  _ \  |  \/  | __ _| |_ _ __(_)_  __
+ | |   |  _| | | | | | |\/| |/ _` | __| '__| \ \/ /
+ | |___| |___| |_| | | |  | | (_| | |_| |  | |>  < 
+ |_____|_____|____/  |_|  |_|\__,_|\__|_|  |_/_/\_\
+
+*/
+
+Blockly.Msg.x_led_matrix_setup_ai = "AI 模块 LED 灯屏模块 (6×6) 初始化设置";
+Blockly.Msg.x_led_matrix_setup_ai_set_bright_1 = "设置灯屏亮度为:";
+Blockly.Msg.x_led_matrix_setup_ai_set_bright_range = "(亮度范围: 0~255)";
+Blockly.Msg.x_led_matrix_width_ai_set_brightness_1 = "设置灯屏亮度为:";
+
+Blockly.Msg.x_led_matrix_width_ai_x = "列:";
+Blockly.Msg.x_led_matrix_width_ai_y = "行:";
+Blockly.Msg.x_led_matrix_width_ai = "宽:";
+Blockly.Msg.x_led_matrix_height_ai = "高:";
+Blockly.Msg.x_led_matrix_color_ai = "颜色";
+Blockly.Msg.x_led_matrix_draw_title_ai = "AI 模块 LED 灯屏模块";
+
+Blockly.Msg.x_led_matrix_draw_pixel_ai = "绘制点";
+Blockly.Msg.x_led_matrix_draw_rect_ai = "绘制矩形";
+
+Blockly.Msg.x_led_matrix_parameter_color_ai = "颜色:";
+Blockly.Msg.x_led_matrix_parameter_coord_ai = "坐标:";
+Blockly.Msg.x_led_matrix_parameter_size_ai = "尺寸:";
+
+Blockly.Msg.x_led_matrix_show_above_ai = "显示图案";
+Blockly.Msg.x_led_matrix_clear_all_ai = "清除灯屏";
+
+Blockly.Msg.x_led_matrix_setup_iot = "IoT 模块 LED 灯屏模块 (6×6) 初始化设置";
+Blockly.Msg.x_led_matrix_width_iot_x = "列:";
+Blockly.Msg.x_led_matrix_width_iot_y = "行:";
+Blockly.Msg.x_led_matrix_width_iot = "宽:";
+Blockly.Msg.x_led_matrix_height_iot = "高:";
+Blockly.Msg.x_led_matrix_color_iot = "颜色";
+Blockly.Msg.x_led_matrix_draw_title_iot = "IoT 模块 LED 灯屏模块";
+Blockly.Msg.x_led_matrix_setup_iot_set_bright_1 = "设置灯屏亮度为:";
+Blockly.Msg.x_led_matrix_setup_iot_set_bright_range = "(亮度范围: 0~255)";
+Blockly.Msg.x_led_matrix_width_iot_set_brightness_1 = "设置灯屏亮度为:";
+Blockly.Msg.x_led_matrix_setup_iot_io = "设置灯屏 引脚 # 为:";
+
+Blockly.Msg.x_led_matrix_draw_pixel_iot = "绘制点";
+
+Blockly.Msg.x_led_matrix_parameter_color_iot = "颜色:";
+Blockly.Msg.x_led_matrix_parameter_coord_iot = "坐标:";
+
+Blockly.Msg.x_led_matrix_show_above_iot = "IoT 模块 LED 灯屏模块显示生效";
+
+// Blockly.Msg.x_led_matrix_ = "";
+
+
+/*
+   ____                      ____           _ 
+  / ___| __ _ _ __ ___   ___|  _ \ __ _  __| |
+ | |  _ / _` | '_ ` _ \ / _ \ |_) / _` |/ _` |
+ | |_| | (_| | | | | | |  __/  __/ (_| | (_| |
+  \____|\__,_|_| |_| |_|\___|_|   \__,_|\__,_|
+
+*/
+
+Blockly.Msg.x_gamepad_read_button_first_text_iot = "当游戏手柄上的按键";
+Blockly.Msg.x_gamepad_read_button_first_text_pressed_iot = " 按下时";
+Blockly.Msg.x_gamepad_read_button_first_text_released_iot = " 松开时";
+Blockly.Msg.x_gamepad_read_button_status_first_text_iot = "获取游戏手柄上按键";
+Blockly.Msg.x_gamepad_read_button_status_after_text_iot = "的电平值";
+Blockly.Msg.x_gamepad_read_joystick_read_iot = "获取游戏手柄上摇杆";
+Blockly.Msg.x_gamepad_read_joystick_read_iot_x = "X轴方向";
+Blockly.Msg.x_gamepad_read_joystick_read_iot_y = "Y轴方向 ";
+Blockly.Msg.x_gamepad_read_joystick_read_after_iot = "的模拟数值 (范围: 0~1023)";
+Blockly.Msg.x_gamepad_read_joystick_when_iot = "当游戏手柄上的摇杆";
+Blockly.Msg.x_gamepad_read_joystick_when_top_iot = "向上推时";
+Blockly.Msg.x_gamepad_read_joystick_when_bottom_iot = "向下推时";
+Blockly.Msg.x_gamepad_read_joystick_when_left_iot = "向左推时";
+Blockly.Msg.x_gamepad_read_joystick_when_right_iot = "向右推时";
+Blockly.Msg.x_gamepad_read_joystick_when_not_iot = "没有动时";
+
+
+Blockly.Msg.x_gamepad_read_button_first_text_ai = "当游戏手柄上的按键";
+Blockly.Msg.x_gamepad_read_button_first_text_pressed_ai = " 按下时";
+Blockly.Msg.x_gamepad_read_button_first_text_released_ai = " 松开时";
+Blockly.Msg.x_gamepad_read_button_status_first_text_ai = "获取游戏手柄上按键";
+Blockly.Msg.x_gamepad_read_button_status_after_text_ai = "的电平值";
+Blockly.Msg.x_gamepad_read_joystick_read_ai = "获取游戏手柄上摇杆";
+Blockly.Msg.x_gamepad_read_joystick_read_ai_x = "X轴方向";
+Blockly.Msg.x_gamepad_read_joystick_read_ai_y = "Y轴方向 ";
+Blockly.Msg.x_gamepad_read_joystick_read_after_ai = "的模拟数值 (范围: 0~1023)";
+Blockly.Msg.x_gamepad_read_joystick_when_ai = "当游戏手柄上的摇杆";
+Blockly.Msg.x_gamepad_read_joystick_when_top_ai = "向上推时";
+Blockly.Msg.x_gamepad_read_joystick_when_bottom_ai = "向下推时";
+Blockly.Msg.x_gamepad_read_joystick_when_left_ai = "向左推时";
+Blockly.Msg.x_gamepad_read_joystick_when_right_ai = "向右推时";
+Blockly.Msg.x_gamepad_read_joystick_when_not_ai = "没有动时";
+
+/*
+     _    ___   ____            _      
+    / \  |_ _| | __ )  __ _ ___(_) ___ 
+   / _ \  | |  |  _ \ / _` / __| |/ __|
+  / ___ \ | |  | |_) | (_| \__ \ | (__ 
+ /_/   \_\___| |____/ \__,_|___/_|\___|
+*/
+
+
+Blockly.Msg.ai_basic_button_when = "当按钮";
+Blockly.Msg.ai_basic_pressed = "按下时";
+Blockly.Msg.ai_basic_released = "松开时";
+Blockly.Msg.ai_basic_led_set = "设置";
+Blockly.Msg.ai_basic_led_blue = "蓝色LED";
+Blockly.Msg.ai_basic_led_red = "LED2(右侧)";
+Blockly.Msg.ai_basic_led_on = "点亮";
+Blockly.Msg.ai_basic_led_off = "熄灭";
+Blockly.Msg.ai_basic_rgb_set_on = "点亮 RGB 灯,灯颜色为";
+Blockly.Msg.ai_basic_rgb_set_off = "熄灭 RGB 灯";
+
+Blockly.Msg.ai_basic_led_analog_set = "设置";
+Blockly.Msg.ai_basic_led_analog_led1 = "LED1";
+Blockly.Msg.ai_basic_led_analog_led2 = "LED2";
+Blockly.Msg.ai_basic_led_analog_brightness_text = "的灯光亮度为";
+Blockly.Msg.ai_basic_led_analog_range_text = "(数值范围: 0~100)";
+
+/*
+     _    ___   ___                              ____                              
+    / \  |_ _| |_ _|_ __ ___   __ _  __ _  ___  |  _ \ _ __ ___   ___ ___  ___ ___ 
+   / _ \  | |   | || '_ ` _ \ / _` |/ _` |/ _ \ | |_) | '__/ _ \ / __/ _ \/ __/ __|
+  / ___ \ | |   | || | | | | | (_| | (_| |  __/ |  __/| | | (_) | (_|  __/\__ \__ \
+ /_/   \_\___| |___|_| |_| |_|\__,_|\__, |\___| |_|   |_|  \___/ \___\___||___/___/
+                                    |___/                                          
+*/
+
+
+Blockly.Msg.image_process_lcd_init = "LCD 屏幕初始化";
+Blockly.Msg.image_process_lcd_direction = "设置屏幕方向";
+Blockly.Msg.image_process_lcd_landscape_screen = "横屏";
+Blockly.Msg.image_process_lcd_vertical_screen = "竖屏";
+Blockly.Msg.image_process_text_let_canvas = "将画布";
+Blockly.Msg.image_process_text_image_canvas = "图片化";
+Blockly.Msg.image_process_text_let_canvas_filled_with_color = "铺满颜色";
+Blockly.Msg.image_process_text_on_canvas = "在画布";
+Blockly.Msg.image_process_text_on_draw = "上绘制";
+Blockly.Msg.image_text_on_draw = "绘制";
+Blockly.Msg.image_process_text_set_canvas_setup = "设置画布";
+Blockly.Msg.image_process_draw_qrcode = "二维码";
+Blockly.Msg.image_process_draw_qr_code_size = "二维码大小";
+
+Blockly.Msg.image_process_text_filled = "实心";
+Blockly.Msg.image_process_text_stroked = "空心";
+
+Blockly.Msg.image_process_statistical_chart_bar = "条形";
+Blockly.Msg.image_process_statistical_chart_broken_line = "折线";
+Blockly.Msg.image_process_statistical_chart_sector = "扇形";
+
+Blockly.Msg.image_process_sensor = "传感器  ";
+Blockly.Msg.image_process_temperature = "温度";
+Blockly.Msg.image_process_humidity = "湿度";
+Blockly.Msg.image_process_Ray_value = "光线值";
+Blockly.Msg.image_process_temperature_range = "范围  ";
+Blockly.Msg.image_process_nothing = "不定义范围(温度除外)";
+
+Blockly.Msg.image_process_interface = "界面  ";
+Blockly.Msg.ai_speech_recognition_setup_set_english = "英文";
+Blockly.Msg.ai_speech_recognition_setup_set_simplified_chinese = "中文";
+Blockly.Msg.ai_speech_recognition_setup_set_traditional_chinese = "繁体中文";
+
+Blockly.Msg.image_process_text_start_coord_as = "起始点坐标为:";
+Blockly.Msg.image_process_text_start_coord = "设置起始点坐标:";
+Blockly.Msg.image_process_text_end_coord = "设置结束点坐标:";
+Blockly.Msg.image_process_text_size = "尺寸:";
+Blockly.Msg.image_process_text_color = "颜色:";
+Blockly.Msg.image_process_background_color = "背景颜色:";
+Blockly.Msg.image_process_text_thick = "厚度:";
+Blockly.Msg.image_process_text_radius = "半径:";
+Blockly.Msg.image_process_text_content = "内容";
+Blockly.Msg.image_process_statistical_chart_content = "获取需绘图的数据";
+Blockly.Msg.image_process_statistical_chart_y_property = "定义 Y 轴为";
+
+Blockly.Msg.image_process_pixtovec_text_first = "进行";
+Blockly.Msg.image_process_pixtovec_v2p = "矢量转像素";
+Blockly.Msg.image_process_pixtovec_p2v = "像素转矢量";
+Blockly.Msg.image_process_pixtovec_conversion = "转换";
+Blockly.Msg.image_process_color_mode_gray = "灰度模式";
+Blockly.Msg.image_process_color_mode_rgb = "彩色模式";
+Blockly.Msg.image_process_imgcut_cutting = "进行裁剪处理";
+Blockly.Msg.image_process_imgcut_start_coord = "裁剪起始坐标:";
+Blockly.Msg.image_process_imgcut_size = "裁剪尺寸:";
+Blockly.Msg.image_process_img_save = "保存至本地";
+Blockly.Msg.image_process_img_save_quality = "设置图像压缩质量:";
+Blockly.Msg.image_process_color_invert = "进行颜色反转";
+Blockly.Msg.image_process_resize_to = "调整尺寸至";
+Blockly.Msg.image_process_color_scheme_convert = "转换为";
+Blockly.Msg.image_process_color_scheme_bw = "黑白";
+Blockly.Msg.image_process_color_scheme_rgb = "彩色";
+Blockly.Msg.image_process_draw_cross_title = "上绘制十字标";
+Blockly.Msg.image_process_draw_cross_centerpos = "中心坐标:";
+Blockly.Msg.image_process_draw_cross_length = "十字线延伸长度:";
+Blockly.Msg.image_process_draw_cross_thick = "十字线厚度:";
+Blockly.Msg.image_process_draw_cross_color = "颜色:";
+Blockly.Msg.image_process_draw_arrow_title = "上绘制箭头";
+
+Blockly.Msg.image_process_draw_image_title = "上绘制图片";
+Blockly.Msg.image_process_draw_image_title_image_path = "设置图片文档路径:";
+Blockly.Msg.image_process_draw_image_scale_x = "设置 X 方向的缩放比例:";
+Blockly.Msg.image_process_draw_image_scale_y = "设置 Y 方向的缩放比例:";
+
+Blockly.Msg.image_process_draw_sensor_image_title = "上绘制相机捕捉的图像";
+Blockly.Msg.image_process_draw_sensor_image_path = "设置图像源:";
+
+Blockly.Msg.image_process_draw_arrow_start = "开始坐标:";
+Blockly.Msg.image_process_draw_arrow_end = "结束坐标:";
+Blockly.Msg.image_process_draw_arrow_color = "颜色:";
+Blockly.Msg.image_process_draw_arrow_thick = "厚度:";
+Blockly.Msg.image_process_draw_rectangle_text = "矩形";
+Blockly.Msg.image_process_draw_circle_text = "圆形";
+Blockly.Msg.image_process_draw_circle_text_start = "圆心坐标";
+Blockly.Msg.image_process_draw_text_font_size = "文本大小:(由 1 至 3 之间的整数)";
+Blockly.Msg.image_process_draw_text_if_monospace = "是否等宽字体";
+Blockly.Msg.image_process_draw_text = "文本";
+Blockly.Msg.image_process_draw_statistical_chart = "统计图";
+Blockly.Msg.image_process_draw_characters = "汉字字符";
+Blockly.Msg.image_process_draw_line = "直线";
+Blockly.Msg.image_process_create_blank_canvas = "创建空白画布";
+Blockly.Msg.image_process_create_image_canvas = "创建图像画布";
+Blockly.Msg.image_process_create_image_canvas_path = "图像路径: ";
+Blockly.Msg.image_process_show_canvas = "显示画布";
+Blockly.Msg.image_process_clear_canvas_1 = "清除画布";
+Blockly.Msg.image_process_clear_canvas_2 = "中的所有内容";
+Blockly.Msg.image_process_set_lcd_rotation = "旋转至";
+Blockly.Msg.image_process_set_lcd_mirror_flip = "将 LCD 屏幕进行镜面翻转";
+Blockly.Msg.image_process_set_filled_screen_color = "将 LCD 屏幕填充颜色为";
+Blockly.Msg.image_process_set_filled_screen_color_red = "红色";
+Blockly.Msg.image_process_set_filled_screen_color_green = "绿色";
+Blockly.Msg.image_process_set_filled_screen_color_blue = "蓝色";
+Blockly.Msg.image_process_set_filled_screen_color_purple = "紫色";
+Blockly.Msg.image_process_set_filled_screen_color_cyan = "青色";
+Blockly.Msg.image_process_set_filled_screen_color_orange = "橙色";
+Blockly.Msg.image_process_set_filled_screen_color_yellow = "黄色";
+Blockly.Msg.image_process_set_filled_screen_color_black = "黑色";
+Blockly.Msg.image_process_set_filled_screen_color_white = "白色";
+Blockly.Msg.image_process_clear_lcd = "清除屏幕";
+Blockly.Msg.image_process_rgb_r = "红";
+Blockly.Msg.image_process_rgb_g = "绿";
+Blockly.Msg.image_process_rgb_b = "蓝";
+Blockly.Msg.image_process_xy_x = "X";
+Blockly.Msg.image_process_xy_y = "Y";
+Blockly.Msg.image_process_wh_width = "宽";
+Blockly.Msg.image_process_wh_height = "高";
+Blockly.Msg.image_process_lcd_show_text = "在 LCD 屏幕上显示文本";
+Blockly.Msg.image_process_lcd_show_text_color = "文本颜色";
+Blockly.Msg.image_process_lcd_show_text_bg_color = "文本背景颜色";
+Blockly.Msg.image_process_lcd_show_text_color_red = "红色";
+Blockly.Msg.image_process_lcd_show_text_color_green = "绿色";
+Blockly.Msg.image_process_lcd_show_text_color_blue = "蓝色";
+Blockly.Msg.image_process_lcd_show_text_color_purple = "紫色";
+Blockly.Msg.image_process_lcd_show_text_color_cyan = "青色";
+Blockly.Msg.image_process_lcd_show_text_color_orange = "橙色";
+Blockly.Msg.image_process_lcd_show_text_color_yellow = "黄色";
+Blockly.Msg.image_process_lcd_show_text_color_black = "黑色";
+Blockly.Msg.image_process_lcd_show_text_color_white = "白色";
+Blockly.Msg.image_process_get_statistics_to_canvas = "获取对画布";
+Blockly.Msg.image_process_get_statistics_get_analysis = "进行颜色信道信息分析的结果";
+Blockly.Msg.image_process_get_statistics_start_coord = "设置分析区域的起始坐标:";
+Blockly.Msg.image_process_get_statistics_size = "设置分析区域的尺寸:";
+Blockly.Msg.image_process_get_statistics_boxes = "设置直方图信道的箱数:";
+Blockly.Msg.image_process_lab_rgb_conversion_exec = "运行颜色制式转换";
+Blockly.Msg.image_process_lab_rgb_conversion_torgb = "LAB 转 RGB";
+Blockly.Msg.image_process_lab_rgb_conversion_tolab = "RGB 转 LAB";
+Blockly.Msg.image_process_lab_rgb_conversion_tuple = "设置要转换的颜色元组为:";
+Blockly.Msg.image_process_rgb_grayscale_conversion_exec = "运行颜色制式转换";
+Blockly.Msg.image_process_rgb_grayscale_conversion_torgb = "灰度转 RGB";
+Blockly.Msg.image_process_rgb_grayscale_conversion_togray = "RGB 转灰度";
+Blockly.Msg.image_process_rgb_grayscale_conversion_set = "设置要转换的颜色元组或灰度值为:";
+Blockly.Msg.image_lcd_set_font = "设置字体为";
+
+
+/*
+     _    ___    ____                               
+    / \  |_ _|  / ___|__ _ _ __ ___   ___ _ __ __ _ 
+   / _ \  | |  | |   / _` | '_ ` _ \ / _ \ '__/ _` |
+  / ___ \ | |  | |__| (_| | | | | | |  __/ | | (_| |
+ /_/   \_\___|  \____\__,_|_| |_| |_|\___|_|  \__,_|
+
+*/
+
+
+Blockly.Msg.ai_camera_camera_init = "相机初始化";
+Blockly.Msg.ai_camera_camera_set_size = "设置捕捉画面的尺寸为:";
+
+Blockly.Msg.ai_camera_camera_fit_set = "设置相机捕捉画面";
+Blockly.Msg.ai_camera_camera_fit_to = "的尺寸为";
+Blockly.Msg.ai_camera_camera_fit_1 = "LCD 屏幕 (240*240px)";
+Blockly.Msg.ai_camera_camera_fit_2 = "用于 YOLO 模型推理 (224*224px)";
+
+Blockly.Msg.ai_camera_camera_color_mode = "设置捕捉画面颜色模式为:";
+Blockly.Msg.ai_camera_camera_color_mode_rgb = "彩色";
+Blockly.Msg.ai_camera_camera_color_mode_bw = "黑白";
+Blockly.Msg.ai_camera_windowing_resize = "将相机捕捉到的图像尺寸调整至";
+Blockly.Msg.ai_camera_windowing_w = "宽:";
+Blockly.Msg.ai_camera_windowing_h = "高:";
+Blockly.Msg.ai_camera_windowing_unit = " (单位: px)";
+Blockly.Msg.ai_camera_snapshot = "获取相机捕捉的图像";
+Blockly.Msg.ai_camera_enable = "启用";
+Blockly.Msg.ai_camera_disable = "关闭";
+Blockly.Msg.ai_camera_set_vflip = "设置相机图像垂直翻转";
+Blockly.Msg.ai_camera_set_hmirror = "设置相机图像水平镜像";
+Blockly.Msg.ai_camera_set_auto_whitebal = "设置相机图像自动白平衡";
+Blockly.Msg.ai_camera_set_auto_gain = "设置相机图像自动增益";
+Blockly.Msg.ai_camera_set_auto_exposure = "设置相机图像自动曝光";
+Blockly.Msg.ai_camera_set_contrast_to_value = "设置相机图像对比度为:";
+Blockly.Msg.ai_camera_set_brightness_to_value = "设置相机图像亮度为:";
+Blockly.Msg.ai_camera_set_saturation_value = "设置相机图像色彩饱和度为:";
+Blockly.Msg.ai_camera_set_range = "(范围: -3至3)";
+
+Blockly.Msg.ai_camera_set_lens_corr = "广角镜头画面纠正";
+
+Blockly.Msg.ai_camera_bcs_set_text = "设置摄像头图像的";
+Blockly.Msg.ai_camera_bcs_contrast = "对比度";
+Blockly.Msg.ai_camera_bcs_brightness = "亮度";
+Blockly.Msg.ai_camera_bcs_saturation = "色彩饱和度";
+Blockly.Msg.ai_camera_bcs_as = "为";
+Blockly.Msg.ai_camera_bcs_set_text_2 = "设置摄像头图像";
+Blockly.Msg.ai_camera_bcs_vflip = "垂直翻转";
+Blockly.Msg.ai_camera_bcs_hmirror = "水平镜像";
+Blockly.Msg.ai_camera_bcs_wb = "自动白平衡";
+Blockly.Msg.ai_camera_bcs_g = "自动增益";
+Blockly.Msg.ai_camera_bcs_e = "自动曝光";
+Blockly.Msg.ai_camera_bcs_as_2 = "为";
+Blockly.Msg.ai_camera_bcs_status = "状态";
+
+
+/*
+     _    ___  __     ___     _             
+    / \  |_ _| \ \   / (_)___(_) ___  _ __  
+   / _ \  | |   \ \ / /| / __| |/ _ \| '_ \ 
+  / ___ \ | |    \ V / | \__ \ | (_) | | | |
+ /_/   \_\___|    \_/  |_|___/_|\___/|_| |_|
+                                            
+*/
+
+
+Blockly.Msg.ai_vision_get_canvas = "获取画布";
+Blockly.Msg.ai_vision_from_canvas = "从画布";
+Blockly.Msg.ai_vision_from = "从";
+
+Blockly.Msg.ai_vision_color_analyze_get_result = "中指定区域的颜色分析结果 (RGB)";
+Blockly.Msg.ai_vision_color_analyze_start_coord = "设置分析区域的起始坐标:";
+Blockly.Msg.ai_vision_color_analyze_size = "设置分析区域的尺寸:";
+Blockly.Msg.ai_vision_find_blobs_color_region = "寻找指定的颜色色块";
+Blockly.Msg.ai_vision_find_lines_color_region = "寻找指定的颜色线";
+Blockly.Msg.ai_vision_find_lines_color_region_result = "获取寻找到线的结果";
+Blockly.Msg.ai_vision_find_blobs_color_threshold = "设置要追踪的颜色阈值:";
+Blockly.Msg.ai_vision_find_blobs_start_coord = "设置检测区域的起始坐标:";
+Blockly.Msg.ai_vision_find_blobs_size = "设置检测区域的尺寸:";
+Blockly.Msg.ai_vision_find_blobs_region_threshold = "设置边界框区域阈值";
+Blockly.Msg.ai_vision_find_blobs_pixel_threshold = "设置像素数阈值";
+Blockly.Msg.ai_vision_find_blobs_filtered_region = "是否合并所有没有被过滤掉的色块 ";
+Blockly.Msg.ai_vision_get_blobs_result = "获取追踪指定颜色的识别结果";
+Blockly.Msg.ai_vision_detection_box_x = "检测框起点 X 轴坐标";
+Blockly.Msg.ai_vision_detection_box_y = "检测框起点 Y 轴坐标";
+Blockly.Msg.ai_vision_detection_box_width = "检测框宽度";
+Blockly.Msg.ai_vision_detection_box_height = "检测框高度";
+Blockly.Msg.ai_vision_detection_box_pixels = "属于色块一部分的像素数量";
+Blockly.Msg.ai_vision_detection_box_cx = "检测框的中心点 X 轴坐标";
+Blockly.Msg.ai_vision_detection_box_cy = "检测框的中心点 Y 轴坐标";
+Blockly.Msg.ai_vision_detection_box_degree = "检测框的旋转角度";
+Blockly.Msg.ai_vision_detection_box_total = "总数量";
+Blockly.Msg.ai_vision_find_blobs_margin = "边界矩形的大小";
+Blockly.Msg.ai_vision_detection_color_threshold_set = "获取用于颜色追踪的默认颜色:";
+Blockly.Msg.ai_vision_detection_color_threshold_set_black = "黑色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_white = "白色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_red = "亮红色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_green = "绿色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_blue = "浅蓝色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_orange = "橙色";
+
+Blockly.Msg.ai_vision_qrcode_detected_result = "中 QR 码的检测结果";
+Blockly.Msg.ai_vision_apriltag_detected_result = "中 AprilTag 的检测结果";
+Blockly.Msg.ai_vision_datamatrices_detected_result = "中数据矩阵 (Data Matrix) 的检测结果";
+Blockly.Msg.ai_vision_barcode_detected_result = "中条形码的检测结果";
+
+Blockly.Msg.ai_vision_qrcode_get_result = "获取检测 QR 码的";
+Blockly.Msg.ai_vision_apriltag_get_result = "获取检测 AprilTag 的";
+Blockly.Msg.ai_vision_data_matrices_get_result = "获取检测数据矩阵 (Data Matrix) 的";
+Blockly.Msg.ai_vision_barcode_matrices_get_result = "获取检测条形码的";
+
+Blockly.Msg.ai_vision_pattern_detection_content = "源文本";
+Blockly.Msg.ai_vision_pattern_detection_type = "数据类型";
+Blockly.Msg.ai_vision_pattern_detection_x = "边界框的 X 轴坐标";
+Blockly.Msg.ai_vision_pattern_detection_y = "边界框的 Y 轴坐标";
+Blockly.Msg.ai_vision_pattern_detection_w = "边界框的宽度";
+Blockly.Msg.ai_vision_pattern_detection_h = "边界框的高度";
+Blockly.Msg.ai_vision_pattern_distance = "距离";
+Blockly.Msg.ai_vision_pattern_detection_type_id = "数字 ID";
+Blockly.Msg.ai_vision_pattern_detection_type_family = "数字家庭";
+Blockly.Msg.ai_vision_pattern_detection_rows = "行数";
+Blockly.Msg.ai_vision_pattern_detection_cols = "列数";
+Blockly.Msg.ai_vision_pattern_detection_can_tolerate_count = "所能容纳的字符数量";
+Blockly.Msg.ai_vision_pattern_detection_can_not_tolerate_count = "未使用的字符数量";
+
+Blockly.Msg.ai_vision_find_circle = "中寻找圆形";
+Blockly.Msg.ai_vision_find_circle_start_coord = "设置检测区域的起始坐标:";
+Blockly.Msg.ai_vision_find_circle_region_size = "设置检测区域的尺寸:";
+Blockly.Msg.ai_vision_find_circle_hoffman_threshold = "设置从霍夫变换中监测到圆的阈值:";
+Blockly.Msg.ai_vision_find_circle_merge_x = "设置所检测的圆的合并 (x):";
+Blockly.Msg.ai_vision_find_circle_merge_y = "设置所检测的圆的合并 (y):";
+Blockly.Msg.ai_vision_find_circle_merge_r = "设置所检测的圆的合并 (r):";
+Blockly.Msg.ai_vision_find_circle_min_radius = "设置检测到的最小圆半径:";
+Blockly.Msg.ai_vision_find_circle_max_radius = "设置检测到的最大圆半径:";
+Blockly.Msg.ai_vision_find_circle_step_radius = "设置逐步检测半径:";
+Blockly.Msg.ai_vision_find_circle_detected_result = "获取寻找圆形的结果";
+Blockly.Msg.ai_vision_find_circle_detected_x = "检测到圆的 X 轴坐标";
+Blockly.Msg.ai_vision_find_circle_detected_y = "检测到圆的 Y 轴坐标";
+Blockly.Msg.ai_vision_find_circle_detected_radius = "检测到圆的半径";
+
+
+Blockly.Msg.ai_vision_find_line = "中寻找直线";
+Blockly.Msg.ai_vision_find_line_start_coord = "设置检测区域的起始坐标:";
+Blockly.Msg.ai_vision_find_line_size = "设置检测区域的尺寸:";
+Blockly.Msg.ai_vision_find_line_hoffman_threshold = "设置从霍夫变换中监测到直线的阈值:";
+Blockly.Msg.ai_vision_find_line_merge_theta = "设置所监测的直线的合并值 (theta):";
+Blockly.Msg.ai_vision_find_line_merge_rho = "设置所监测的直线的合并值 (rho):";
+Blockly.Msg.ai_vision_find_line_detected_result = "获取寻找直线的结果";
+Blockly.Msg.ai_vision_find_line_detected_start_x = "检测到直线起始点的 X 轴坐标";
+Blockly.Msg.ai_vision_find_line_detected_start_y = "检测到直线起始点的 Y 轴坐标";
+Blockly.Msg.ai_vision_find_line_detected_end_x = "检测到直线结束点的 X 轴坐标";
+Blockly.Msg.ai_vision_find_line_detected_end_y = "检测到直线结束点的 Y 轴坐标";
+Blockly.Msg.ai_vision_find_line_detected_length = "检测到直线的长度";
+Blockly.Msg.ai_vision_find_line_detected_angle = "检测到直线的角度";
+
+Blockly.Msg.ai_vision_find_rect = "中寻找矩形";
+Blockly.Msg.ai_vision_find_rect_start_coord = "设置检测区域的起始坐标:";
+Blockly.Msg.ai_vision_find_rect_region_size = "设置检测区域的尺寸:";
+Blockly.Msg.ai_vision_find_rect_bounding_threshold = "设置边界阈值大小:";
+Blockly.Msg.ai_vision_find_rect_detected_result = "获取寻找矩形的结果";
+Blockly.Msg.ai_vision_find_rect_detected_tuple = "检测到矩形的坐标及尺寸元组";
+Blockly.Msg.ai_vision_find_rect_detected_corners = "检测到矩形的四个角的坐标位置";
+Blockly.Msg.ai_vision_find_rect_detected_x = "检测到矩形的起始点的 X 轴坐标";
+Blockly.Msg.ai_vision_find_rect_detected_y = "检测到矩形的起始点的 Y 轴坐标";
+Blockly.Msg.ai_vision_find_rect_detected_w = "检测到矩形的宽度";
+Blockly.Msg.ai_vision_find_rect_detected_h = "检测到矩形的高度";
+
+Blockly.Msg.ai_vision_get_histogram_get = "获取从画布";
+Blockly.Msg.ai_vision_get_histogram_compute = "中进行标准化直方图运算的结果";
+Blockly.Msg.ai_vision_get_histogram_region = "设定颜色追踪区域范围:";
+Blockly.Msg.ai_vision_get_histogram_region_xy = "区域坐标:";
+Blockly.Msg.ai_vision_get_histogram_region_wh = "区域尺寸:";
+Blockly.Msg.ai_vision_get_histogram_details_1 = "从直方图计算结果";
+Blockly.Msg.ai_vision_get_histogram_details_get = "获取直方图频道的 CDF 计算值 (%)";
+
+Blockly.Msg.ai_vision_get_histogram_percentile_1 = "从直方图计算结果获取的百分比值中";
+Blockly.Msg.ai_vision_get_histogram_percentile_2 = "获取";
+Blockly.Msg.ai_vision_get_histogram_percentile_3 = "灰度百分比值";
+Blockly.Msg.ai_vision_get_histogram_percentile_4 = "RGB565 LAB 的L通道的百分比值";
+Blockly.Msg.ai_vision_get_histogram_percentile_5 = "RGB565 LAB 的A通道的百分比值";
+Blockly.Msg.ai_vision_get_histogram_percentile_6 = "RGB565 LAB 的B通道的百分比值";
+
+
+Blockly.Msg.ai_vision_canvas_area_tuple = "创建区域元组";
+Blockly.Msg.ai_vision_canvas_area_tuple_xy = "设置起始座标:";
+Blockly.Msg.ai_vision_canvas_area_tuple_wh = "设置尺寸:";
+Blockly.Msg.ai_vision_lane_tracking_setup = "道路循线识别初始化";
+Blockly.Msg.ai_vision_lane_tracking_setup_threshold = "设置要追踪的颜色";
+Blockly.Msg.ai_vision_lane_tracking_setup_l = "设置左侧识别区域:";
+Blockly.Msg.ai_vision_lane_tracking_setup_r = "设置右侧识别区域:";
+Blockly.Msg.ai_vision_lane_tracking_setup_axis = "设置中轴线位置:";
+Blockly.Msg.ai_vision_lane_tracking_run = "运行道路循线识别";
+Blockly.Msg.ai_vision_lane_tracking_run_get = "从道路循线识别的结果中获取";
+Blockly.Msg.ai_vision_lane_tracking_run_ld = "左侧区域检测结果";
+Blockly.Msg.ai_vision_lane_tracking_run_lv = "左侧区域检测偏移距离";
+Blockly.Msg.ai_vision_lane_tracking_run_rd= "右侧区域检测结果";
+Blockly.Msg.ai_vision_lane_tracking_run_rv = "右侧区域检测偏移距离";
+
+/*
+     _    ___   __  __ _                      _                      
+    / \  |_ _| |  \/  (_) ___ _ __ ___  _ __ | |__   ___  _ __   ___ 
+   / _ \  | |  | |\/| | |/ __| '__/ _ \| '_ \| '_ \ / _ \| '_ \ / _ \
+  / ___ \ | |  | |  | | | (__| | | (_) | |_) | | | | (_) | | | |  __/
+ /_/   \_\___| |_|  |_|_|\___|_|  \___/| .__/|_| |_|\___/|_| |_|\___|
+                                       |_|                           
+ */
+
+
+Blockly.Msg.ai_microphone_init = "麦克风初始化";
+Blockly.Msg.ai_microphone_start_spectrum_analyze = "开始读取音频频谱";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result = "获取麦克风采集的音频频谱";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_1 = "低音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_2 = "低音 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_3 = "中低音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_4 = "中低音 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_5 = "中高音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_6 = "中高音 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_7 = "高音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_8 = "高音 2";
+Blockly.Msg.ai_mphone_Record_audio_init = "麦克风录制音频初始化";
+Blockly.Msg.ai_mphone_Record_audio_start = "开始录制音频";
+Blockly.Msg.ai_mphone_Record_audio_start_path = "设置音频保存路径:";
+Blockly.Msg.ai_mphone_Record_audio_start_time = "设置录制的时间(s):";
+Blockly.Msg.ai_audio_stop_recording = "停止录制音频";
+
+/*
+     _    ___      _             _ _       
+    / \  |_ _|    / \  _   _  __| (_) ___  
+   / _ \  | |    / _ \| | | |/ _` | |/ _ \ 
+  / ___ \ | |   / ___ \ |_| | (_| | | (_) |
+ /_/   \_\___| /_/   \_\__,_|\__,_|_|\___/
+*/ 
+
+
+Blockly.Msg.ai_audio_play_music_file = "播放音频文件(单个循环)";
+Blockly.Msg.ai_audio_play_music_file_list_loop = "播放音频文件(顺序播放)";
+Blockly.Msg.ai_audio_play_music_file_list_random = "播放音频文件(随机播放)";
+Blockly.Msg.ai_audio_play_music_file_set_vol = "设置音量为:";
+Blockly.Msg.ai_audio_play_music_file_set_file_path = "加载音乐文件,路径为:";
+Blockly.Msg.ai_audio_play_music_file_set_files_list = "音频文件列表:";
+Blockly.Msg.ai_audio_play_music_file_set_first_index = "起始位置:";
+Blockly.Msg.ai_audio_files_list_set_file_path = "当前路径:";
+Blockly.Msg.ai_audio_get_play_status = "获取音频文件播放状态";
+Blockly.Msg.ai_audio_end_play = "结束音频文件播放";
+Blockly.Msg.ai_audio_start_play = "播放音乐文件";
+Blockly.Msg.ai_audio_init = "喇叭初始化";
+Blockly.Msg.ai_audio_set_music_vol = "设置音频文件播放音量为:";
+Blockly.Msg.ai_audio_files_list = "获取音频文件列表";
+
+Blockly.Msg.ai_speech_recognition_setup = "语音识别初始化";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi = "设置环境噪音灵敏度为:";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_normal = "正常";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_high = "高";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_ehigh = "很高";
+Blockly.Msg.ai_speech_recognition_start_recording = "开始录制语音片段";
+Blockly.Msg.ai_speech_recognition_start_recording_clip_text = "设置要识别的语音片段个数为:";
+Blockly.Msg.ai_speech_recognition_start_recording_clip_note = "(不得超过 6 个片段)";
+Blockly.Msg.ai_speech_recognition_start_recording_take_text = "设置每个片段录制的次数为:";
+Blockly.Msg.ai_speech_recognition_start_recording_take_note = "(不得超过 4 次)";
+Blockly.Msg.ai_speech_recognition_start_recognizing = "开始进行语音识别";
+Blockly.Msg.ai_speech_recognition_any_result_text = "当语音识别获得任意结果的时候";
+Blockly.Msg.ai_speech_recognition_any_result_text_do = "执行";
+Blockly.Msg.ai_speech_recognition_get_result = "语音识别的结果为第 ";
+Blockly.Msg.ai_speech_recognition_get_result_after = "条片段";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_setup = "语音转拼音初始化";
+Blockly.Msg.ai_speech_recognition_setup_pinyin = "设置拼音";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result = "获取语音转拼音的结果";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param = "设置拼音识别参数";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_1 = "设置优先级";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_start_recognition = "开始语音拼音识别";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition = "终止语音拼音识别";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition = "清除语音拼音识别";
+Blockly.Msg.speech_recognition_number_of_recordings = "录制片段次数";
+Blockly.Msg.speech_recognition_In_recording = "录制片段中";
+Blockly.Msg.speech_recognition_Recorded_successfully = "录制片段成功";
+Blockly.Msg.speech_recognition_Start_speech_recognition = "录制语音片段并识别显示在";
+Blockly.Msg.speech_recognition_Start_speech_recognition_title = "录制语音片段并识别显示";
+Blockly.Msg.speech_recognition_Speech_recognition_result = "语音识别结果";
+Blockly.Msg.speech_recognition_Clean_up_the_last_study_result = "清理上一次学习结果";
+Blockly.Msg.speech_recognition_Recognition_success = "识别成功";
+Blockly.Msg.speech_recognition_Recognition_fail = "识别失败";
+/*
+     _    ___  __     ___     _            
+    / \  |_ _| \ \   / (_) __| | ___  ___  
+   / _ \  | |   \ \ / /| |/ _` |/ _ \/ _ \ 
+  / ___ \ | |    \ V / | | (_| |  __/ (_) |
+ /_/   \_\___|    \_/  |_|\__,_|\___|\___/ 
+*/
+
+
+Blockly.Msg.ai_video_start_recording = "开始录制视频";
+Blockly.Msg.ai_video_start_recording_file_path = "设置视频保存路径:";
+Blockly.Msg.ai_video_start_recording_width = "设置视频宽度 (px):";
+Blockly.Msg.ai_video_start_recording_height = "设置视频高度 (px):";
+Blockly.Msg.ai_video_to_canvas = "对画布";
+Blockly.Msg.ai_video_record = "进行录制";
+Blockly.Msg.ai_video_stop_recording = "停止录制视频";
+Blockly.Msg.ai_video_play_video = "播放视频文件";
+Blockly.Msg.ai_video_play_video_2 = "注:仅支持尺寸为 320*240 的视频";
+Blockly.Msg.ai_video_play_video_file_path = "视频路径:";
+Blockly.Msg.ai_video_stop_video_playing = "结束视频文件播放";
+Blockly.Msg.ai_video_get_video_playing_status = "获取视频播放的状态";
+Blockly.Msg.ai_video_recording_and_save = "录制视频文件并保存";
+Blockly.Msg.ai_video_set_play = "视频文件播放";
+Blockly.Msg.ai_video_set_play_stats = "视频属性";
+Blockly.Msg.ai_video_set_play_init = "视频初始化";
+
+
+/*
+     _    ___   __  __           _      _     
+    / \  |_ _| |  \/  | ___   __| | ___| |___ 
+   / _ \  | |  | |\/| |/ _ \ / _` |/ _ \ / __|
+  / ___ \ | |  | |  | | (_) | (_| |  __/ \__ \
+ /_/   \_\___| |_|  |_|\___/ \__,_|\___|_|___/
+*/
+
+
+Blockly.Msg.ai_models_from = "从";
+
+Blockly.Msg.ai_models_init_title = "初始化预设模型:";
+Blockly.Msg.ai_model_allinit_language = "设置语言为:";
+Blockly.Msg.ai_models_load_title = "加载预设模型:";
+Blockly.Msg.ai_models_init_hand_written_model = "手写数字识别模型";
+Blockly.Msg.ai_models_init_object_model = "常见物体检测模型";
+Blockly.Msg.ai_models_init_guesswork_model = "猜拳识别模型";
+Blockly.Msg.ai_models_guesswork_model_if = "检测到猜拳结果";
+Blockly.Msg.ai_models_guesswork_model_get = "获取检测到的猜拳结果的";
+Blockly.Msg.ai_model_guesswork_look_attribute = "待猜拳手势属性";
+Blockly.Msg.ai_models_init_object_model_title = "常见物体检测模型(飞机、自行车、鸟,船,瓶子,公共汽车,汽车,猫,椅子,牛,餐桌,狗,马,摩托车,人,盆栽,羊,沙发,火车,电视监视器)";
+Blockly.Msg.ai_models_init_face_model = "人脸检测模型";
+Blockly.Msg.ai_camera_camera_fit_set1 = "设置相机捕捉画面为:";
+Blockly.Msg.ai_models_init_source = "设置要检测的图像源为:";
+Blockly.Msg.ai_models_init_source_written = "设置要检测手写数字识别的图像源为:";
+Blockly.Msg.ai_models_hand_written_model_result = "获取手写数字检测模型的检测结果";
+Blockly.Msg.ai_models_hand_written_model_number = "获取当前检测到的数字 (0至9)";
+Blockly.Msg.ai_models_hand_written_model_confidence = "获取当前检测到的数字的置信度 (%)";
+Blockly.Msg.ai_model_digital = "待测数字属性";
+Blockly.Msg.ai_model_digital_attribute = "检测到待测数字";
+Blockly.Msg.ai_models_object_model_if = "检测到待测物体";
+Blockly.Msg.ai_models_object_model_get = "获取检测到的待测物体的";
+Blockly.Msg.ai_model_look_attribute = "待测物体属性";
+Blockly.Msg.ai_models_object_model_name = "物体名称";
+Blockly.Msg.ai_models_object_model_x = "检测框起点 X 轴坐标";
+Blockly.Msg.ai_models_object_model_y = "检测框起点 Y 轴坐标";
+Blockly.Msg.ai_models_object_model_w = "检测框终点 X 轴坐标";
+Blockly.Msg.ai_models_object_model_h = "检测框终点 Y 轴坐标";
+Blockly.Msg.ai_models_object_model_count = "物体数量";
+Blockly.Msg.ai_models_object_model_index = "出现顺序";
+Blockly.Msg.ai_models_object_model_confidence = "置信度";
+Blockly.Msg.ai_models_face_model_if_new = "识别到人脸";
+Blockly.Msg.ai_model_face_attribute_new = "人脸识别属性";
+Blockly.Msg.ai_models_face_model_if = "检测到人脸";
+Blockly.Msg.ai_model_face_attribute = "人脸属性";
+Blockly.Msg.ai_models_face_model_get = "获取检测到的人脸的";
+Blockly.Msg.ai_models_face_model_x = "检测框起点 X轴坐标";
+Blockly.Msg.ai_models_face_model_y = "检测框起点 Y轴坐标";
+Blockly.Msg.ai_models_face_model_w = "检测框终点 X轴坐标";
+Blockly.Msg.ai_models_face_model_h = "检测框终点 Y轴坐标";
+Blockly.Msg.ai_models_face_model_ws = "检测框的宽度";
+Blockly.Msg.ai_models_face_model_hs = "检测框的高度";
+Blockly.Msg.ai_models_face_model_rect = "检测框";
+Blockly.Msg.ai_models_face_model_count = "数量";
+Blockly.Msg.ai_models_face_model_index = "出现顺序";
+Blockly.Msg.ai_models_face_model_confidence = "置信度";
+Blockly.Msg.ai_models_face_model_confidence_1 = "置信度(人脸检测)";
+Blockly.Msg.ai_model_human_attribute = "人体属性";
+Blockly.Msg.ai_models_human_model_if = "检测到人体";
+Blockly.Msg.ai_models_human_model_get = "获取检测到的人体的";
+Blockly.Msg.ai_models_init_humane_model = "人体检测模型";
+Blockly.Msg.ai_models_init_card_model = "车牌识别模型";
+Blockly.Msg.ai_models_init_card_result = "车牌结果";
+Blockly.Msg.ai_models_card_if_true = "检测到车牌";
+Blockly.Msg.ai_models_card_attribute = "检测到的车牌属性";
+Blockly.Msg.ai_models_card_model_get = "获取检测到车牌的";
+
+Blockly.Msg.ai_model_customized_init_setup_definition = "加载自定义模型前的设置";
+Blockly.Msg.ai_models_customized_init_setup_title = "自定义模型 (TinyYOLOv2)";
+Blockly.Msg.ai_model_customized_load_setup_title = "加载自定义模型 (TinyYOLOv2)";
+Blockly.Msg.ai_models_customized_init_setup_path = "模型文件路径:";
+Blockly.Msg.ai_models_customized_init_setup_source = "设置要识别的图像源为:";
+Blockly.Msg.v831_transmission_init_setup_source = "设置要传输的图像源为:";
+Blockly.Msg.v831_transmission_setup_show = "将捕捉的相机图像传输到电脑并显示";
+Blockly.Msg.v831_internet_transmission_setup_show = "将捕捉的相机图像在网页显示";
+
+
+Blockly.Msg.ai_models_customized_init_type_set = "设置识别模式:";
+Blockly.Msg.ai_models_customized_init_type_set_fast = "识别单张人脸(速度快)";
+Blockly.Msg.ai_models_customized_init_type_set_slow = "识别多张人脸(速度慢):";
+
+Blockly.Msg.ai_models_customized_init_setup_name = "设置模型识别物体的名称:";
+Blockly.Msg.ai_models_customized_if_got = "识别到了自定义模型的对象";
+Blockly.Msg.ai_model_customized_attribute = "自定义模型对象属性";
+Blockly.Msg.ai_models_customized_get_result_any = "获取识别到自定义模型结果的";
+Blockly.Msg.ai_models_customized_get_result_name = "名称";
+Blockly.Msg.ai_models_customized_get_result_x = "检测框起点 X 轴坐标";
+Blockly.Msg.ai_models_customized_get_result_y = "检测框起点 Y 轴坐标";
+Blockly.Msg.ai_models_customized_get_result_w = "检测框终点 X 轴坐标";
+Blockly.Msg.ai_models_customized_get_result_h = "检测框终点 Y 轴坐标";
+Blockly.Msg.ai_models_customized_get_result_count = "数量";
+Blockly.Msg.ai_models_customized_get_result_index = "出现顺序";
+Blockly.Msg.ai_models_customized_get_result_confidence = "置信度";
+Blockly.Msg.ai_model_face_name = "设置模型识别人脸的名称:";
+
+Blockly.Msg.ai_model_face_setup = "自定义人脸识别";
+Blockly.Msg.ai_model_face = "自定义初始化人脸识别模型";
+Blockly.Msg.ai_face_detection_model = "初始化人脸检测模型";
+Blockly.Msg.ai_face_point_detection_model = "初始化人脸5点关键点检测模型";
+Blockly.Msg.ai_face_Vitter_eigenvalue_model = "初始化人脸196维特征值模型";
+Blockly.Msg.ai_model_Calculation_of_196_eigenvalues = "计算运行人脸特征模型后的196维特征值";
+
+Blockly.Msg.ai_model_face_start_recognition = "加载人脸检测模型,"
+Blockly.Msg.ai_model_face_model_load_finish = "人脸检测模型加载完成";
+Blockly.Msg.ai_model_face_load_point_detection_model = "加载人脸5点关键点检测模型,";
+Blockly.Msg.ai_model_face_load_point_detection_model_1 = "获取人脸图像并将其存到";
+Blockly.Msg.ai_model_face_load_point_detection_model_2 = "设置人脸检测框为";
+Blockly.Msg.ai_model_face_gather = "采集新的人脸数据并保存人脸数据";
+Blockly.Msg.ai_model_face_gather_1 = "保存人脸数据并将数据保存在文件中,路径为:";
+Blockly.Msg.ai_model_face_data_load = "加载已保存的人脸数据";
+Blockly.Msg.ai_model_face_data_load_1 = "设置路径为 /sd/user 的加载人脸数据的文件名为";
+Blockly.Msg.ai_model_face_model_list = "人脸检测属性";
+Blockly.Msg.ai_model_face_gather_num_judge = "人脸采集完成";
+Blockly.Msg.ai_model_face_recognition = "采集或者加载完成人脸数据并进行人脸识别";
+Blockly.Msg.ai_model_face_recognition_get_result = "人脸识别获得任意结果";
+Blockly.Msg.ai_model_show_face = "处理图像并显示";
+Blockly.Msg.v831_face_recognition_load = "加载人脸识别模型,";
+Blockly.Msg.v831_face_recognition_load_title = "加载人脸模型,并设置要检测的图像源";
+Blockly.Msg.v831_setting_face_data_save = "设置要保存的人脸数据:";
+Blockly.Msg.face_recognition_map_face_canvas = "在画布上";
+Blockly.Msg.face_recognition_map_face_show = "显示第";
+Blockly.Msg.face_recognition_map_face_key_point = "人脸的关键点";
+Blockly.Msg.v831_setting_face_data_save_title = "设置要保存的人脸数据";
+Blockly.Msg.v831_setting_face_data_remove = "删除最后一次保存的人脸数据";
+Blockly.Msg.v831_setting_face_data_remove_title = "删除最后一次保存的人脸数据";
+Blockly.Msg.v831_face_recognition_result = "图像源识别结果:";
+Blockly.Msg.v831_face_recognition_result_title = "图像源识别结果";
+Blockly.Msg.v831_model_face_name = "人脸的名称";
+Blockly.Msg.v831_models_face_model_confidence = "置信度(人脸识别)";
+
+Blockly.Msg.ai_model_class_setup = "自定义物体识别";
+Blockly.Msg.ai_class_model = "初始化自定义物体特征提取模型";
+Blockly.Msg.ai_class_model_cluster = "初始化自定义物体聚类参数";
+Blockly.Msg.ai_model_class_start_load = "并对图像进行处理";
+Blockly.Msg.ai_model_class_gather = "开始采集物体";
+Blockly.Msg.ai_model_class_data_load = "加载物体数据";
+Blockly.Msg.ai_model_class_data_load_1 = "设置路径为 /sd/user 的加载物体数据的文件名为";
+Blockly.Msg.ai_model_class_gather_load_finish = "采集或者加载完成物体数据";
+Blockly.Msg.ai_model_class_cluster_train = "开始进行物体特征提取,然后加以聚类训练";
+Blockly.Msg.ai_model_class_cluster_train_1 = "设置路径为 /sd/user 的保存物体数据的文件名为";
+Blockly.Msg.ai_model_class_recognition = "开始进行物体识别";
+
+Blockly.Msg.ai_model_class = "自定义初始化物体识别模型";
+
+Blockly.Msg.ai_model_class_name = "设置模型识别物体的名称";
+Blockly.Msg.ai_model_getface = "识别到了人脸模型的对象";
+Blockly.Msg.ai_model_getclass = "识别到了物体模型的对象";
+Blockly.Msg.face_information = "人脸信息";
+Blockly.Msg.ai_models_object_model_x_center = "检测框中心点的X轴坐标";
+Blockly.Msg.ai_models_object_model_y_center = "检测框中心点的Y轴坐标";
+Blockly.Msg.ai_models_face_model_x_center = "检测框中心点的 X 轴坐标";
+Blockly.Msg.ai_models_face_model_y_center = "检测框中心点的 Y 轴坐标";
+Blockly.Msg.ai_models_customized_get_result_x_center = "检测框中心点的 X 轴坐标";
+Blockly.Msg.ai_models_customized_get_result_y_center = "检测框中心点的 Y 轴坐标";
+
+Blockly.Msg.ai_models_edge_detection_model = "边缘检测模型";
+Blockly.Msg.ai_models_load_edge_detection_model = "加载边缘检测模型";
+Blockly.Msg.ai_models_get_edge_detection_result = "获取边缘检测模型结果";
+
+Blockly.Msg.ai_model_self_learning_init = "初始化自学习分类模型";
+Blockly.Msg.ai_model_self_learning_load = "加载自学习分类模型";
+Blockly.Msg.ai_model_self_learning_recognize_load = "加载自学习分类识别模型";
+Blockly.Msg.ai_model_self_learning_add_class_category = "添加分类类别";
+Blockly.Msg.ai_model_self_learning_make_data_set = "制作模型训练的数据集";
+Blockly.Msg.ai_model_self_learning_picture = "进行图片自学习";
+Blockly.Msg.ai_model_self_learning_save_modal = "保存模型";
+Blockly.Msg.ai_model_self_learning_class_verification = "自学习分类模型验证";
+Blockly.Msg.ai_model_self_learning_result = '自学习结果';
+Blockly.Msg.ai_model_self_learning_result_name = "名称";
+
+/*
+     _    ___   ____            _                 
+    / \  |_ _| / ___| _   _ ___| |_ ___ _ __ ___  
+   / _ \  | |  \___ \| | | / __| __/ _ \ '_ ` _ \ 
+  / ___ \ | |   ___) | |_| \__ \ ||  __/ | | | | |
+ /_/   \_\___| |____/ \__, |___/\__\___|_| |_| |_|
+                      |___/                       
+*/
+
+
+Blockly.Msg.ai_system_restart = "重启系统";
+Blockly.Msg.ai_system_off = "关机";
+Blockly.Msg.ai_system_refresh = "刷新文件目录";
+Blockly.Msg.ai_system_enable_gc = "启动内存回收";
+Blockly.Msg.ai_system_run_python_code = "运行 Python 程序";
+Blockly.Msg.ai_system_run_python_code_file_path = "程序路径为:";
+
+
+
+/* 
+     _    ___  __        ___ _____ _ 
+    / \  |_ _| \ \      / (_)  ___(_)
+   / _ \  | |   \ \ /\ / /| | |_  | |
+  / ___ \ | |    \ V  V / | |  _| | |
+ /_/   \_\___|    \_/\_/  |_|_|   |_|
+                                     
+*/
+
+Blockly.Msg.ai_wifi_set_wifi = "设定 Wi-Fi 为";
+Blockly.Msg.ai_wifi_enabled = "启用状态";
+Blockly.Msg.ai_wifi_disabled = "禁用状态";
+Blockly.Msg.ai_wifi_start_wifi_scan = "开始扫描附近 Wi-Fi 热点";
+Blockly.Msg.ai_wifi_wifi_scan_result = "获取 Wi-Fi 扫描的结果为列表形式";
+Blockly.Msg.ai_wifi_connect_wifi = "连接至 Wi-Fi 网络";
+Blockly.Msg.ai_wifi_connect_wifi_ssid = "网络名称 (SSID):";
+Blockly.Msg.ai_wifi_connect_wifi_pass = "网络密码:";
+Blockly.Msg.ai_wifi_get_connection_status = "获取 Wi-Fi 连接的状态";
+Blockly.Msg.ai_wifi_get_wifi_info = "获取 Wi-Fi 连接的设备信息:";
+Blockly.Msg.ai_wifi_get_wifi_info_name = "热点名称";
+Blockly.Msg.ai_wifi_get_wifi_info_ip = "IP 地址";
+Blockly.Msg.ai_wifi_get_wifi_info_dns = "DNS 地址";
+Blockly.Msg.ai_wifi_get_wifi_info_mac = "MAC 地址";
+
+
+
+
+/*
+  _   _ _ _                             _        ____                            
+ | | | | | |_ _ __ __ _ ___  ___  _ __ (_) ___  / ___|  ___ _ __  ___  ___  _ __ 
+ | | | | | __| '__/ _` / __|/ _ \| '_ \| |/ __| \___ \ / _ \ '_ \/ __|/ _ \| '__|
+ | |_| | | |_| | | (_| \__ \ (_) | | | | | (__   ___) |  __/ | | \__ \ (_) | |   
+  \___/|_|\__|_|  \__,_|___/\___/|_| |_|_|\___| |____/ \___|_| |_|___/\___/|_|   
+                                                                                 
+*/
+
+
+Blockly.Msg.third_party_hcsr04_iot = "在 IoT 模块上";
+Blockly.Msg.third_party_hcsr04_ai = "在 A.I. 模块上 ";
+Blockly.Msg.third_party_hcsr04_setup_title = "初始化 HCSR-04 超声波传感器 ";
+Blockly.Msg.third_party_hcsr04_trig_pin = "设置 Trig 接口为 引脚 #";
+Blockly.Msg.third_party_hcsr04_echo_pin = ", 设置 Echo 接口为 引脚 #";
+Blockly.Msg.third_party_hcsr04_read_text = "读取来自超声波传感器";
+Blockly.Msg.third_party_hcsr04_read_text_after = "的距离检测数值 (单位: 厘米)";
+Blockly.Msg.Set_Auto_Wrap = "自动换行";
+
+
+/*
+  ____  _     _____ 
+ | __ )| |   | ____|
+ |  _ \| |   |  _|  
+ | |_) | |___| |___ 
+ |____/|_____|_____|
+
+*/
+
+Blockly.Msg.esp32_ble_setup_sender_msg = "BLE(低功耗蓝牙)";
+Blockly.Msg.esp32_ble_setup_sender = "发送端初始化";
+Blockly.Msg.esp32_ble_send_data_msg = "BLE 发送数据";
+Blockly.Msg.esp32_ble_setup_receiver_msg = "BLE(低功耗蓝牙)";
+Blockly.Msg.esp32_ble_setup_receiver = "接收端初始化";
+Blockly.Msg.esp32_ble_get_data_msg = "获取从BLE接收的数据";
+Blockly.Msg.esp32_ble_sender_connected_msg = "发送端已经被连接";
+Blockly.Msg.esp32_ble_receiver_connected_msg = "接收端已经被连接";
+Blockly.Msg.esp32_ble_set_uuid = "设置 UUID:";
+Blockly.Msg.esp32_ble_set_name = "设置设备名称:";
+Blockly.Msg.esp32_ble_set_name_limit = " (不得超过 8 个字符)";
+
+
+/* additional text */
+
+Blockly.Msg.text_additional_delimiter_string = "将字符串";
+Blockly.Msg.text_additional_delimiter_deli = "使用分隔符:";
+Blockly.Msg.text_additional_delimiter_end = "进行拆分并生成列表";
+
+
+/* mlx90614 */
+Blockly.Msg.MLX90614_READ_AMBIENT = "从 MLX90614 获取当前环境温度";
+Blockly.Msg.MLX90614_READ_OBJECT = "从 MLX90614 获取目标物体温度";
+Blockly.Msg.MLX90614_READ_SET_TEMP = "设置温度单位为:";
+Blockly.Msg.MLX90614_READ_SET_TEMP_C = "摄氏";
+Blockly.Msg.MLX90614_READ_SET_TEMP_F = "华氏";
+Blockly.Msg.MLX90614_SETUP_TEXT_1 = "非接触式测温传感器";
+Blockly.Msg.MLX90614_SETUP_TEXT_2 = "MLX90614 初始化设置";
+
+/* DHT11 or DHT22 */
+Blockly.Msg.DHT_SETUP_TEXT_1 = "温湿度传感器初始化设置";
+Blockly.Msg.DHT_SETUP_TEXT_2 = "传感器型号:";
+Blockly.Msg.DHT_SETUP_TEXT_3 = "初始化";
+Blockly.Msg.DHT_SETUP_TEXT_4 = "设置传感器数据接收引脚 #:";
+
+/* PM2.5 */
+Blockly.Msg.PM25_SETUP_TEXT = "PM2.5灰尘传感器初始化设置";
+
+/* robot dog */
+Blockly.Msg.robot_dog_movement = "语音操控机器狗";
+Blockly.Msg.robot_dog_movement_action = "设置动作指令";
+Blockly.Msg.robot_dog_phonetic_to_pinyin_get_result = "获取语音识别的结果";
+Blockly.Msg.robot_dog_movement_action_0 = "趴下";
+Blockly.Msg.robot_dog_movement_action_1 = "站起";
+Blockly.Msg.robot_dog_movement_action_2 = "匍匐前进";
+Blockly.Msg.robot_dog_movement_action_3 = "转圈";
+Blockly.Msg.robot_dog_movement_action_4 = "原地踏步";
+Blockly.Msg.robot_dog_movement_action_5 = "蹲起";
+Blockly.Msg.robot_dog_movement_action_6 = "转动Roll";
+Blockly.Msg.robot_dog_movement_action_7 = "转动Pitch";
+Blockly.Msg.robot_dog_movement_action_8 = "转动Yaw";
+Blockly.Msg.robot_dog_movement_action_9 = "三轴转动";
+Blockly.Msg.robot_dog_movement_action_10 = "撒尿";
+Blockly.Msg.robot_dog_movement_action_11 = "坐下";
+Blockly.Msg.robot_dog_movement_action_12 = "招手";
+Blockly.Msg.robot_dog_movement_action_13 = "伸懒腰";
+Blockly.Msg.robot_dog_movement_action_14 = "波浪";
+Blockly.Msg.robot_dog_movement_action_15 = "左右摇摆";
+Blockly.Msg.robot_dog_movement_action_16 = "求食";
+Blockly.Msg.robot_dog_movement_action_17 = "觅食";
+Blockly.Msg.robot_dog_movement_action_18 = "握手";
+Blockly.Msg.robot_dog_movement_action_19 = "恢复初始状态";
+Blockly.Msg.robot_dog_movement_action_20 = "前进";
+Blockly.Msg.robot_dog_movement_action_21 = "后退";
+Blockly.Msg.robot_dog_movement_action_22 = "向左运动";
+Blockly.Msg.robot_dog_movement_action_23 = "向右运动";
+Blockly.Msg.robot_dog_movement_action_24 = "开启自稳功能";
+Blockly.Msg.robot_dog_movement_action_25 = "关闭自稳功能";
+Blockly.Msg.robot_dog_movement_action_30 = "拜年";
+Blockly.Msg.robot_dog_setup = "机器狗初始化";
+Blockly.Msg.robot_dog_execution = "机器狗执行";
+Blockly.Msg.robot_dog_action = "指令";
+Blockly.Msg.robot_dog_servo_execution = "设置";
+Blockly.Msg.robot_dog_front_left_leg = "左前";
+Blockly.Msg.robot_dog_back_left_leg = "左后";
+Blockly.Msg.robot_dog_front_right_leg = "右前";
+Blockly.Msg.robot_dog_back_right_leg = "右后";
+Blockly.Msg.robot_dog_leg = "腿部";
+Blockly.Msg.robot_dog_up = "上 (-31˚~31˚)";
+Blockly.Msg.robot_dog_up_1 = "上";
+Blockly.Msg.robot_dog_middle = "中 (-66˚~93˚)";
+Blockly.Msg.robot_dog_middle_1 = "中";
+Blockly.Msg.robot_dog_down = "下 (-65˚~73˚)";
+Blockly.Msg.robot_dog_down_1 = "下";
+Blockly.Msg.robot_dog_servo_rotate = "关节舵机转动至";
+Blockly.Msg.robot_dog_ag = "度";
+Blockly.Msg.robot_dog_angle = "毫米";
+Blockly.Msg.robot_dog_angle_speed = "度/秒";
+Blockly.Msg.robot_dog_servo_set_speed = "设置";
+Blockly.Msg.robot_dog_servo_speed = "舵机速度";
+Blockly.Msg.robot_dog_movement_speed = "迈步频率";
+Blockly.Msg.robot_dog_servo_to = "为";
+Blockly.Msg.robot_dog_servo_speed_1 = "快";
+Blockly.Msg.robot_dog_servo_speed_2 = "正常";
+Blockly.Msg.robot_dog_servo_speed_3 = "慢";
+Blockly.Msg.robot_dog_servo_movement_location = "方向的位置为";
+Blockly.Msg.robot_dog_leg_f = "腿足尖";
+Blockly.Msg.robot_dog_controll_action_0 = "关闭";
+Blockly.Msg.robot_dog_controll_action_1 = "打开";
+Blockly.Msg.robot_dog_gyroscope = "陀螺仪";
+Blockly.Msg.robot_dog_open_performance_mode = "机器狗表演模式";
+Blockly.Msg.robot_dog_open_calibration_mode = "机器狗标定模式";
+Blockly.Msg.robot_dog_get_power = "获取机器狗当前的电量";
+Blockly.Msg.robot_dog_get_servo_angle = "关节舵机的角度";
+Blockly.Msg.robot_dog_servo_movement_distance = "设置机器狗执行";
+Blockly.Msg.robot_dog_movement_action_26 = "左移 (0mm~18mm)";
+Blockly.Msg.robot_dog_movement_action_27 = "右移 (-18mm~0mm)";
+Blockly.Msg.robot_dog_movement_action_28 = "前进 (0mm~25mm)";
+Blockly.Msg.robot_dog_movement_action_29 = "后退 (-25mm~0mm)";
+Blockly.Msg.robot_dog_servo_movement_distance_location = "方向平移运动步长为";
+Blockly.Msg.robot_dog_servo_movement_rotate = "设置机器狗执行";
+Blockly.Msg.robot_dog_servo_movement_rotate_location = "方向旋转运动转动速度为";
+Blockly.Msg.MOTION_ONDIRECTION_CLOCKWISE1 = "左转 (0˚/s~150˚/s)";
+Blockly.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE1 = "右转 (-150˚/s~0˚/s)";
+Blockly.Msg.robot_dog_servo_movement_standing_still = "设置机器狗以";
+Blockly.Msg.robot_dog_servo_movement_standing_still_1 = "(10mm~35mm)的抬腿高度以固定频率执行原地踏步";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_1 = "持续";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_2 = "秒";
+Blockly.Msg.robot_dog_servo_movement_distance_still = "设置机器狗";
+Blockly.Msg.robot_dog_servo_movement_distance_still_1 = "方向平移";
+Blockly.Msg.robot_dog_servo_movement_distance_still_2 = "(-128~127)厘米";
+Blockly.Msg.robot_dog_servo_movement_rotate_still = "设置机器狗绕";
+Blockly.Msg.robot_dog_servo_movement_rotate_still1 = "轴旋转";
+Blockly.Msg.robot_dog_servo_movement_rotate_still2 = "(-128~127)";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle = "设置机器狗以周期";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_1 = "秒(1.5s~8s)向";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_2 = "方向往复平移";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle = "秒(1.5s~8s) 绕";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_1 = "轴往复转动";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_stop = "停止机器狗周期性向";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_stop = "停止机器狗周期性绕";
+Blockly.Msg.robot_dog_get_rotate_angle = "轴的角度";
+Blockly.Msg.robot_dog_get_rotate_angle_1 = "获取陀螺仪";
+
+
+// UAV 
+Blockly.Msg.uav_initialization = "无人机初始化";
+Blockly.Msg.numbers_for = "编号为";
+Blockly.Msg.uav_uav = "无人机";
+Blockly.Msg.uav_height = "高度";
+Blockly.Msg.uav_lock = "锁定";
+Blockly.Msg.uav_unlock = "解锁";
+Blockly.Msg.uav_the_nose_direction = "机头方向";
+Blockly.Msg.uav_landing = "降落";
+Blockly.Msg.uav_brake = "刹车";
+Blockly.Msg.uav_hover = "悬停";
+Blockly.Msg.uav_scram = "急停";
+Blockly.Msg.uav_calibration = "校准";
+Blockly.Msg.Take_off_altitude = "无人机起飞高度";
+Blockly.Msg.uav_switch = "无人机切换";
+Blockly.Msg.uav_AI_switch = "无人机,AI切换到";
+Blockly.Msg.uav_fly_mode = "飞行模式";
+Blockly.Msg.uav_horizontal_velocity = "无人机,水平速度";
+Blockly.Msg.uav_speed_unit = "厘米/秒";
+Blockly.Msg.uav_vertical_speed = "无人机,垂直速度";
+Blockly.Msg.uav_go_to = "无人机,向";
+Blockly.Msg.uav_patrol_flight = "巡线飞行";
+Blockly.Msg.uav_fly = "飞";
+Blockly.Msg.uav_look_for_black_patches = "厘米,寻找黑色小块";
+Blockly.Msg.uav_look_for = "厘米,寻找";
+Blockly.Msg.uav_the_label = "号标签";
+Blockly.Msg.uav_look_for_color_piece = "厘米,寻找色块";
+Blockly.Msg.uav_direct = "无人机,直达";
+Blockly.Msg.uav_rotating = "无人机,旋转";
+Blockly.Msg.uav_circle = "圈";
+Blockly.Msg.uav_light_color = "的灯光颜色为(";
+Blockly.Msg.uav_off_led = "无人机关闭灯光";
+Blockly.Msg.uav_detection = "无人机检测";
+Blockly.Msg.uav_black_spots = "黑点";
+Blockly.Msg.uav_black_line = "黑线";
+Blockly.Msg.uav_black_line = "黑线";
+Blockly.Msg.uav_black_label = "标签";
+Blockly.Msg.uav_code = "二维码";
+Blockly.Msg.uav_bar_code = "条形码";
+Blockly.Msg.uav_electromagnet = "电磁铁";
+Blockly.Msg.uav_servo_ctrl = "无人机的舵机";
+Blockly.Msg.uav_role_ctrl = "无人机的命令";
+Blockly.Msg.uav_continuous = "连续";
+Blockly.Msg.uav_laser = "发射激光";
+Blockly.Msg.uav_face_recognition = "人脸识别";
+Blockly.Msg.uav_object_tracking = "物体追踪";
+Blockly.Msg.uav_obj_recognition = "物体识别";
+Blockly.Msg.uav_patrol_tracking = "巡线追踪";
+Blockly.Msg.uav_color_recognition = "颜色识别";
+Blockly.Msg.uav_label_recognition = "标签识别";
+Blockly.Msg.uav_object_classification = "物体分类";
+Blockly.Msg.uav_mode = "模式";
+Blockly.Msg.uav_learing_ID = "无人机,学习一次的ID";
+Blockly.Msg.uav_forget_data = "无人机忘记所有学习数据";
+Blockly.Msg.uav_setup_ID = "无人机设置ID";
+Blockly.Msg.uav_name_is = "的名字为";
+Blockly.Msg.uav_taking_pictures = "拍照";
+Blockly.Msg.uav_screenshots = "截屏";
+Blockly.Msg.uav_save_SD = "保存到SD卡";
+Blockly.Msg.optical_flow_localization = "光流定位";
+Blockly.Msg.label_position = "标签定位";
+Blockly.Msg.autonomous_patrol = "自主巡线";
+Blockly.Msg.normally_on = "常亮";
+Blockly.Msg.breathing_lamp = "呼吸灯";
+Blockly.Msg.colour_change = "七彩变换";
+
+Blockly.Msg.uav_detection_if = "无人机检测到";
+Blockly.Msg.uav_detection_color_block = "色块";
+Blockly.Msg.uav_detection_if_line = "边有线";
+Blockly.Msg.uav_get_distance_of_obstacles = "无人机";
+Blockly.Msg.uav_get_distance_of_obstacles_1 = "障碍物的距离";
+Blockly.Msg.uav_roll_angle = "横滚角";
+Blockly.Msg.uav_pitch_angle = "俯仰角";
+Blockly.Msg.uav_yaw_angle = "偏航角";
+Blockly.Msg.uav_abscissa = "横坐标";
+Blockly.Msg.uav_ordinate = "纵坐标";
+Blockly.Msg.uav_height = "高度";
+Blockly.Msg.uav_voltage = "电压";
+Blockly.Msg.uav_get_AI_value = "AI识别结果";
+Blockly.Msg.uav_get_electronic_balance_value = "电子秤读数";
+Blockly.Msg.uav_get_shooting_value = "射击";
+Blockly.Msg.uav_get_shooting_value_0 = "序号";
+Blockly.Msg.uav_get_shooting_value_1 = "成绩";
+Blockly.Msg.uav_get_msg_value = "消息";
+Blockly.Msg.uav_get_msg_value_0 = "内容";
+
+/* expand */
+Blockly.Msg.esp32_expand_io_from_digital_pin = "获取引脚 #";
+Blockly.Msg.esp32_expand_io_set_digital_pin = "设置引脚 #";
+Blockly.Msg.esp32_expand_io_set_analog_pin = "设置引脚 #";
+Blockly.Msg.esp32_expand_io_set_analog_pin_digital_set_as = "PWM 输出";
+Blockly.Msg.esp32_expand_io_set_analog_pin_digital_set_af = "(0-255)";
+
+
+/* KUJU */
+Blockly.Msg.KUJU_title = "连接KUJU";
+Blockly.Msg.KUJU_username = "账号";
+Blockly.Msg.KUJU_password = "密码";
+Blockly.Msg.KUJU_controll_title = "发送数据至KUJU";
+Blockly.Msg.KUJU_controll_content = "控制智能插座的";
+Blockly.Msg.KUJU_controll_action_0 = "关闭";
+Blockly.Msg.KUJU_controll_action_1 = "打开";
+Blockly.Msg.KUJU_get_temperature_humidity_data_title = "获取温度传感器的";
+Blockly.Msg.KUJU_get_motion_data_title = "获取移动感应器的";
+Blockly.Msg.basic_motion_data = "是否移动";
+Blockly.Msg.basic_illumination_intensity = "照明强度";
+Blockly.Msg.KUJU_get_sensor_data_title = "获取";
+Blockly.Msg.basic_water_sensor = "漏水传感器";
+Blockly.Msg.basic_door_sensor = "门磁";
+
+/* Wetech */
+Blockly.Msg.wifiServices_WeTech_title = "连接WeTech";
+Blockly.Msg.wifiServices_WeTech_username = "用户名";
+Blockly.Msg.wifiServices_WeTech_password = "密码";
+Blockly.Msg.WeTech_controll_title = "发送数据至WeTech";
+Blockly.Msg.WeTech_controll_content = "指令";
+Blockly.Msg.WeTech_controll_action_0 = "关闭";
+Blockly.Msg.WeTech_controll_action_1 = "打开";
+Blockly.Msg.WeTech_controll_action_2 = "停止";
+Blockly.Msg.wifiServices_WeTech_get_gateway_device_id_list_title = "获取特定网关id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY5 = "中名字为";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY4 = "的设备id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY6 = "控制的三路灯面制id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY7 = "网关id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY8 = "控制的二路灯面制id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY9 = "控制的Curtain Sensor (for projector Screen) id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY10 = "控制的冷气IR id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY11 = "控制的TV IR (for TV and Projector) id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY12 = "Mac地址";
+Blockly.Msg.WeTech_controll_air_content = "模式";
+Blockly.Msg.WeTech_controll_wind_speed_content = "风速";
+Blockly.Msg.WeTech_controll_temp_content = "温度(16℃-30℃)";
+Blockly.Msg.WeTech_controll_IR_content = "次序(0-255)";
+Blockly.Msg.WeTech_controll_power_meter = "获取数值";
+Blockly.Msg.WeTech_controll_power_meter_1 = "Power Meter的id";
+Blockly.Msg.Wetech_controll_pm25_sensor = "PM2.5检测器";
+Blockly.Msg.Wetech_controll_CO2_sensor = "CO2检测器";
+Blockly.Msg.Wetech_controll_Temperature_sensor = "温度检测器";
+Blockly.Msg.Wetech_controll_Humidity_sensor = "湿度检测器";
+Blockly.Msg.Wetech_controll_sensor_title = "的id";
+
+Blockly.Msg.WeTech_controll_mode_0 = "关闭";
+Blockly.Msg.WeTech_controll_mode_1 = "自动";
+Blockly.Msg.WeTech_controll_mode_2 = "制冷";
+Blockly.Msg.WeTech_controll_mode_3 = "制热";
+Blockly.Msg.WeTech_controll_mode_4 = "供暖";
+Blockly.Msg.WeTech_controll_mode_5 = "预冷";
+Blockly.Msg.WeTech_controll_mode_6 = "送风";
+Blockly.Msg.WeTech_controll_mode_7 = "除湿";
+Blockly.Msg.WeTech_controll_mode_8 = "睡眠";
+Blockly.Msg.WeTech_controll_mode_9 = "节能";
+Blockly.Msg.WeTech_controll_mode_10 = "低";
+Blockly.Msg.WeTech_controll_mode_11 = "中";
+Blockly.Msg.WeTech_controll_mode_12 = "高";
+Blockly.Msg.WeTech_controll_mode_13 = "自动";
+
+// tuya
+Blockly.Msg.iot_service_tuya_title = "连接涂鸦";
+Blockly.Msg.iot_service_tuya_access_id = "Access ID/Client ID";
+Blockly.Msg.iot_service_tuya_access_secret = "Access Secret/Client Secret";
+Blockly.Msg.iot_service_tuya_setToken_text = "当连接涂鸦获取到访问令牌的时候";
+Blockly.Msg.iot_service_tuya_getDeviceList_text = "获取设备列表";
+Blockly.Msg.iot_service_tuya_controll_light_belt_title = "控制智能灯带";
+Blockly.Msg.iot_service_tuya_controll_light_belt_device_id = "设备id";
+Blockly.Msg.iot_service_tuya_controll_light_belt_des = "状态为";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_0 = "关闭";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_1 = "打开";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_2 = "柔光模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_3 = "缤纷模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_4 = "炫彩模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_5 = "斑斓模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_6 = "晚安情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_7 = "阅读情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_8 = "聚会情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_9 = "休闲情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_title = "控制智能灯带";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_title1 = "颜色为";
+
+// turtle 
+Blockly.Msg.TURTLE_CREATE_NE_TURTLE="创建新的海龟";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_BY="让海龟往前走";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_BY="让海龟后退";
+Blockly.Msg.TURTLE_MAKE_TURN_LEFT_BY="让海龟向左转";
+Blockly.Msg.TURTLE_DEGREE="度";
+Blockly.Msg.TURTLE_MAKE_TURN_RIGHT_BY="让海龟向右转";
+Blockly.Msg.TURTLE_MAKE_TURRLE_COLOR="设置海龟画笔的颜色为";
+Blockly.Msg.TURTLE_MAKE_TURRLE_PEN="让海龟画笔";
+Blockly.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X="让海龟去地点 X:";
+Blockly.Msg.TURTLE_MAKE_TURTLE_SET_POSITION = "设置海龟画笔的位置为 X:";
+Blockly.Msg.TURTLE_MAKE_SET_HEADING = "让海龟旋转至";
+Blockly.Msg.TURTLE_RESET = "重置画笔位置";
+Blockly.Msg.TURTLE_CLEAR = "清除";
+Blockly.Msg.TURTLE_PEN_UP = "抬起";
+Blockly.Msg.TURTLE_PEN_DOWN = "落下";
+
+
+Blockly.Msg.SYSTEM = "重启系统";
+Blockly.Msg.SYSTEM_GC = "启动内存回收";
+Blockly.Msg.SYSTEM_CREATE = "创建文本文件 ";
+Blockly.Msg.SYSTEM_CREATE_FILE = "创建文件 ";
+Blockly.Msg.SYSTEM_CREATE_F = "文件名:";
+Blockly.Msg.SYSTEM_CREATE_F_1 = "文件路径为:";
+Blockly.Msg.SYSTEM_WRITE = "创建文本文件";
+Blockly.Msg.SYSTEM_OPEN_FILE = "打开文件";
+Blockly.Msg.SYSTEM_WRITE_FILE = "写入文件";
+Blockly.Msg.SYSTEM_CLOSE_FILE = "关闭文件";
+Blockly.Msg.SYSTEM_WRITE_F = "文件名:";
+Blockly.Msg.SYSTEM_WRITE_W = "写入内容:";
+Blockly.Msg.SYSTEM_WRITE_S = "分隔符为:";
+Blockly.Msg.SYSTEM_WRITE_S_N = "换行";
+Blockly.Msg.SYSTEM_WRITE_S_C = "逗号";
+Blockly.Msg.SYSTEM_WRITE_S_S = "空格";
+Blockly.Msg.SYSTEM_WRITE_S_SE = "分号";
+
+Blockly.Msg.SYSTEM_INPUT = "读取文本文件为列表";
+Blockly.Msg.SYSTEM_INPUT_FILE = "读取文件为列表";
+
+
+// v831
+// 在线文本转语音
+Blockly.Msg.Text_to_speech_initialization = "在线文本转语音初始化";
+Blockly.Msg.Content_of_text = "文本内容";
+Blockly.Msg.text_conversion_voice = "将文本内容转化为语音文件";
+Blockly.Msg.Voice_path = "音频文件保存路径";
+// 在线人脸识别
+Blockly.Msg.online_face_result = "在线人脸检测数量";
+Blockly.Msg.online_face_loading = "在线人脸检测模型加载";
+Blockly.Msg.online_face_init = "在线人脸检测初始化";
+Blockly.Msg.online_face_init_path = "检测图片路径";
+// 在线语音识别
+Blockly.Msg.online_voice_result = "在线语音识别结果";
+Blockly.Msg.online_voice_loading = "在线语音识别加载";
+Blockly.Msg.online_voice_init = "在线语音识别初始化";
+Blockly.Msg.online_voice_init_path = "识别语音路径";
+
+// 图像处理
+Blockly.Msg.read_img_path_to = "读取图片文件自";
+Blockly.Msg.take_the_picture = "将图片";
+
+// 机器翻译
+Blockly.Msg.machine_translation_result = "在线机器翻译结果";
+Blockly.Msg.machine_translation_load = "在线机器翻译加载";
+Blockly.Msg.machine_translation_init = "机器翻译初始化";
+Blockly.Msg.machine_translation_to = "翻译至";
+
+// 车牌识别
+Blockly.Msg.online_card_result = "在线车牌识别结果";
+Blockly.Msg.online_card_load = "在线车牌识别加载";
+Blockly.Msg.online_card_init = "在线车牌识别初始化";
+
+// 物体识别
+Blockly.Msg.online_object_init = "在线物体识别初始化";
+Blockly.Msg.online_object_load = "在线物体识别加载";
+Blockly.Msg.online_object_result = "在线物体识别结果";
+
+// 手写文字识别
+Blockly.Msg.handwritten_text_result = "在线手写文字识别结果";
+Blockly.Msg.handwritten_text_load = "在线手写文字识别加载";
+Blockly.Msg.handwritten_text_init = "手写文字识别初始化";
+Blockly.Msg.handwritten_text_language_init = "设置识别语种";
+
+// 手势识别
+Blockly.Msg.gesture_result = "手势识别结果";
+Blockly.Msg.gesture_load = "手势识别加载";
+Blockly.Msg.gesture_init = "手势识别初始化";
+// 情绪识别
+Blockly.Msg.emotion_result = "情绪识别结果";
+Blockly.Msg.emotion_load = "情绪识别加载";
+Blockly.Msg.emotion_init = "情绪识别初始化";
+Blockly.Msg.set_dictionary = "设定字典";
+Blockly.Msg.dictionary_contain = "字典包含(age、emotion、gender、expression)";
+Blockly.Msg.emotion_result_age = "年龄";
+Blockly.Msg.emotion_result_emotion = "情绪";
+Blockly.Msg.emotion_result_gender = "性别";
+Blockly.Msg.emotion_result_expression = "表情";
+// 公式识别
+Blockly.Msg.formula_result = "公式识别结果";
+Blockly.Msg.formula_load = "公式识别加载";
+Blockly.Msg.formula_init = "公式识别初始化";
+Blockly.Msg.system_voice = "设置系统音量"
+// 神经网络
+Blockly.Msg.numpy_mnist_get_result = "获取识别结果";
+Blockly.Msg.numpy_mnist_loading_model = "加载已保存的模型";
+Blockly.Msg.numpy_mnist_setting_training_argument = "设置训练参数";
+Blockly.Msg.numpy_mnist_input_trait_dimensionality = "输入特征的维度:";
+Blockly.Msg.numpy_mnist_setting_training_argument_number_node = "节点数:";
+Blockly.Msg.numpy_mnist_output_dimensionality = "输出维度:";
+Blockly.Msg.numpy_mnist_setting_training_argument_learning_rate = "学习率:";
+Blockly.Msg.numpy_mnist_setting_training_argument_frequency = "训练次数:";
+Blockly.Msg.numpy_mnist_is_training_start = "训练模块启动";
+Blockly.Msg.numpy_mnist_loading_train_and_test_set = "加载训练集和测试集";
+Blockly.Msg.numpy_mnist_train_set_url = "训练集路径:";
+Blockly.Msg.numpy_mnist_test_set_url = "测试集路径:";
+Blockly.Msg.numpy_mnist_model_init = "numpy + mnist 训练模型初始化";
+Blockly.Msg.numpy_mnist_clear = "清除numpy模块";
+
+
+export default Blockly.Msg

+ 10883 - 0
src/blockly/msg/zh-hant.js

@@ -0,0 +1,10883 @@
+
+'use strict';
+
+var Blockly = Blockly || { Msg: Object.create(null) };
+
+Blockly.Msg["ADD_COMMENT"] = "加入註解";
+Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容";
+Blockly.Msg["CHANGE_VALUE_TITLE"] = "修改值:";
+Blockly.Msg["CLEAN_UP"] = "清理區塊";
+Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "收合含有警告的區塊。";
+Blockly.Msg["COLLAPSE_ALL"] = "收合區塊";
+Blockly.Msg["COLLAPSE_BLOCK"] = "收合區塊";
+Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "顏色 1";
+Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "顏色 2";
+Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp";  // untranslated
+Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例";
+Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合";
+Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "用一個給定的比率(0.0-1.0)混合兩種顏色。";
+Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/顏色";
+Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "從調色板中選擇一種顏色。";
+Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com";  // untranslated
+Blockly.Msg["COLOUR_RANDOM_TITLE"] = "隨機顏色";
+Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "隨機選擇一種顏色。";
+Blockly.Msg["COLOUR_RGB_BLUE"] = "藍";
+Blockly.Msg["COLOUR_RGB_GREEN"] = "綠";
+Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html";  // untranslated
+Blockly.Msg["COLOUR_RGB_RED"] = "紅";
+Blockly.Msg["COLOUR_RGB_TITLE"] = "顏色";
+Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "中斷循環";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "繼續下一個循環";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "中斷當前的循環。";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳過這個循環的其餘步驟,並繼續下一次的循環。";
+Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:此區塊僅可用於循環內。";
+Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
+Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "為列表 %2 裡的每一項 %1";
+Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。";
+Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
+Blockly.Msg["CONTROLS_FOR_TITLE"] = "循環計數 %1 從 %2 到 %3 每次增加 %4";
+Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。";
+Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "添加條件到「如果」區塊。";
+Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "加入一個最終、所有條件都執行的部份到「如果」區塊中。";
+Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
+Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。";
+Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否則";
+Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否則,如果";
+Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "當值為 true 時,執行一些陳述式。";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "值為是(true)就執行第一塊陳述式,否則執行第二塊。";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一個值為 true,則執行第一塊陳述式。否則,當第二個值為 true 時,則執行第二塊陳述式。";
+Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一個值為 true,則執行第一塊陳述式。否則當第二個值為 true 時,則執行第二塊陳述式。如果前幾個敘述都不為 ture,則執行最後一塊陳述式。";
+Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For迴圈";
+Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "執行";
+Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重複%1次";
+Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "重複執行某些陳述式多次。";
+Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
+Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重複直到";
+Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "重複,當";
+Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "當值為 false 時,執行一些陳述式。";
+Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "當值為 true 時,執行一些陳述式。";
+Blockly.Msg["DELETE_ALL_BLOCKS"] = "刪除全部 %1 個區塊?";
+Blockly.Msg["DELETE_BLOCK"] = "刪除區塊";
+Blockly.Msg["DELETE_VARIABLE"] = "刪除變數「%1」";
+Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "刪除使用%1次的「%2」變數?";
+Blockly.Msg["DELETE_X_BLOCKS"] = "刪除%1個區塊";
+Blockly.Msg["DIALOG_CANCEL"] = "取消";
+Blockly.Msg["DIALOG_OK"] = "確定";
+Blockly.Msg["DISABLE_BLOCK"] = "停用區塊";
+Blockly.Msg["DUPLICATE_BLOCK"] = "重複";
+Blockly.Msg["DUPLICATE_COMMENT"] = "複製註解";
+Blockly.Msg["ENABLE_BLOCK"] = "啟用區塊";
+Blockly.Msg["EXPAND_ALL"] = "展開區塊";
+Blockly.Msg["EXPAND_BLOCK"] = "展開區塊";
+Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入";
+Blockly.Msg["HELP"] = "說明";
+Blockly.Msg["INLINE_INPUTS"] = "單行輸入";
+Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list";  // untranslated
+Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "建立空的清單";
+Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄";
+Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "清單";
+Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個清單區塊。";
+Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "使用這些值建立清單";
+Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "添加一個項目到清單裡。";
+Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一個具備任意數量項目的清單。";
+Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一筆";
+Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒數第 # 筆";
+Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#";
+Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得";
+Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得並移除";
+Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後一筆";
+Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "隨機";
+Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除";
+Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "";  // untranslated
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回清單中的第一個項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在清單中指定位置的項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回清單中的最後一個項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回清單中隨機一個項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除並返回清單中的第一個項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除並返回清單中的指定位置的項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除並返回清單中的最後一個項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除並返回清單中的隨機項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除清單中的第一個項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在清單中指定位置的項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除清單中的最後一個項目。";
+Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "移除清單中隨機一個項目。";
+Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到倒數 #";
+Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到 #";
+Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到 最後面";
+Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
+Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "從最前面取得子清單";
+Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "從倒數# 取得子清單";
+Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "從 #取得子清單";
+Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "";  // untranslated
+Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "複製清單中指定的部分。";
+Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 是最後一個項目。";
+Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 是第一個項目。";
+Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "從 最前面 索引項目";
+Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";  // untranslated
+Blockly.Msg["LISTS_INDEX_OF_LAST"] = "從 最後面 索引項目";
+Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。";
+Blockly.Msg["LISTS_INLIST"] = "自清單";
+Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
+Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 值為空";
+Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果該清單為空,則返回 true。";
+Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
+Blockly.Msg["LISTS_LENGTH_TITLE"] = "長度 %1";
+Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回清單的長度(項目數)。";
+Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+Blockly.Msg["LISTS_REPEAT_TITLE"] = "使用項目 %1 重複 %2 次建立清單";
+Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立一個清單,項目中包含指定重複次數的值。";
+Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";  // untranslated
+Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "反轉%1";
+Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "反轉清單的複製內容。";
+Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
+Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "為";
+Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "添加";
+Blockly.Msg["LISTS_SET_INDEX_SET"] = "設定";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "添加一個項目到清單中的第一個位置。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "添加一個項目到清單中的指定位置。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "添加一個項目到清單中的最後一個位置。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "添加一個項目到清單中的隨機位置。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "設定清單中的第一個項目。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "設定清單中指定位置的項目。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "設定清單中的最後一個項目。";
+Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "設定清單中隨機一個項目。";
+Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";  // untranslated
+Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序";
+Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序";
+Blockly.Msg["LISTS_SORT_TITLE"] = "排列 %1 %2 %3";
+Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序清單的複製內容。";
+Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "依字母排序,忽略大小寫";
+Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "依數字";
+Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "依字母";
+Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";  // untranslated
+Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "從文本製作清單";
+Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "從清單拆出文本";
+Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "串起清單項目成一個文本,並用分隔符號分開。";
+Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "將文本變成清單項目,按分隔符號拆分。";
+Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "用分隔符";
+Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假";
+Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
+Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。";
+Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真";
+Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果這兩個輸入的結果相等,返回 true。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一個輸入結果大於第二個,返回 true。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一個輸入結果大於或等於第二個,返回 true。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一個輸入結果比第二個小,返回 true。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一個輸入結果小於或等於第二個,返回 true。";
+Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果這兩個輸入的結果不相等,返回 true。";
+Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not";  // untranslated
+Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 不成立";
+Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。";
+Blockly.Msg["LOGIC_NULL"] = "空";
+Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type";  // untranslated
+Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。";
+Blockly.Msg["LOGIC_OPERATION_AND"] = "和";
+Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
+Blockly.Msg["LOGIC_OPERATION_OR"] = "或";
+Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果兩個輸入結果都為 true,則返回 true。";
+Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少一個輸入結果為 true,返回 true。";
+Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "測試";
+Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:";
+Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果為假";
+Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果為真";
+Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。";
+Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+";  // untranslated
+Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算術";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回兩個數字的總和。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "傳回兩數之商。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "傳回兩數之差。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回兩個數字的乘積。";
+Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回以第一個數值為底數,以第二個數值為冪的結果。";
+Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/Atan2";
+Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 的 Atan2";
+Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "回傳點(X,Y)從 -180 至 180 度的反正切值。";
+Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法";
+Blockly.Msg["MATH_CHANGE_TITLE"] = "修改 %1 自 %2";
+Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "將數字加到變數「%1」。";
+Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/數學常數";
+Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";
+Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)";  // untranslated
+Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "限制數字 %1 介於(低)%2 到(高)%3";
+Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "限制數字介於兩個指定的數字之間(包含)。";
+Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷";  // untranslated
+Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除";
+Blockly.Msg["MATH_IS_EVEN"] = "是偶數";
+Blockly.Msg["MATH_IS_NEGATIVE"] = "是負數";
+Blockly.Msg["MATH_IS_ODD"] = "是奇數";
+Blockly.Msg["MATH_IS_POSITIVE"] = "是正值";
+Blockly.Msg["MATH_IS_PRIME"] = "是質數";
+Blockly.Msg["MATH_IS_TOOLTIP"] = "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。";
+Blockly.Msg["MATH_IS_WHOLE"] = "是整數";
+Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg["MATH_MODULO_TITLE"] = "%1 除以 %2 的餘數";
+Blockly.Msg["MATH_MODULO_TOOLTIP"] = "返回兩個數字相除的餘數。";
+Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×";  // untranslated
+Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/數";
+Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "數字";
+Blockly.Msg["MATH_ONLIST_HELPURL"] = "";  // untranslated
+Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "清單的平均數";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "清單的最大數字";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "清單的中位數";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "清單的最小數字";
+Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "清單中的眾數";
+Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "清單中的隨機一項";
+Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "清單的標準差";
+Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "清單中數值的和";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回清單中數值的平均值(算術平均值)。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回清單中最大的數字。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回清單中數值的中位數。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回清單中最小的數字。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回一個清單中的最常見的項目列表。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "從清單中返回一個隨機的項目。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回清單中數字的標準差。";
+Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回清單中的所有數字的總和。";
+Blockly.Msg["MATH_POWER_SYMBOL"] = "^";  // untranslated
+Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "隨機取分數";
+Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "在 0.0(包含)和 1.0(不包含)之間隨機取一個分數。";
+Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "隨機取整數 %1 到 %2";
+Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "在指定二個數之間隨機取一個整數(包含)。";
+Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/數值簡化";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "無條件捨去";
+Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "無條件進位";
+Blockly.Msg["MATH_ROUND_TOOLTIP"] = "上捨入或下捨入數字";
+Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絕對值";
+Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "開根號";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回指定數字的絕對值。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回e的指定數字次冪。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回指定數字的自然對數。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回指定數字的對數。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回指定數字的相反數。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回10的指定數字次冪。";
+Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回指定數字的平方根。";
+Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-";  // untranslated
+Blockly.Msg["MATH_TRIG_ACOS"] = "反餘弦";
+Blockly.Msg["MATH_TRIG_ASIN"] = "反正弦";
+Blockly.Msg["MATH_TRIG_ATAN"] = "反正切";
+Blockly.Msg["MATH_TRIG_COS"] = "餘弦";
+Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函數";
+Blockly.Msg["MATH_TRIG_SIN"] = "正弦";
+Blockly.Msg["MATH_TRIG_TAN"] = "正切";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回指定數字的反餘弦值。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回指定角度的反正弦值(非弧度)。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回指定數字的反正切值。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的餘弦值(非弧度)。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg["NEW_COLOUR_VARIABLE"] = "建立顏色變數…";
+Blockly.Msg["NEW_NUMBER_VARIABLE"] = "建立數值變數……";
+Blockly.Msg["NEW_STRING_VARIABLE"] = "建立字串變數……";
+Blockly.Msg["NEW_VARIABLE"] = "建立變數…";
+Blockly.Msg["NEW_VARIABLE_TITLE"] = "新變數名稱:";
+Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新變數類型:";
+Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "";  // untranslated
+Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允許陳述式";
+Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "與:";
+Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
+Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "執行使用者定義的函式「%1」。";
+Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F";
+Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "執行使用者定義的函式「%1」,並使用它的回傳值。";
+Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "與:";
+Blockly.Msg["PROCEDURES_CREATE_DO"] = "建立「%1」";
+Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述此函式...";
+Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "";  // untranslated
+Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
+Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做些什麼";
+Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "到";
+Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "創建一個無回傳值的函式。";
+Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
+Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回";
+Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "創建一個有回傳值的的函式。";
+Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: 此函式中有重複的參數。";
+Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "反白顯示函式定義";
+Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "https://c2.com/cgi/wiki?GuardClause";  // untranslated
+Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值為 true,則返回第二個值。";
+Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:這個區塊只可以在定義函式時使用。";
+Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "輸入名稱:";
+Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加一個輸入區塊到函式。";
+Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "輸入";
+Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、刪除或重新排列此函式的輸入。";
+Blockly.Msg["REDO"] = "重做";
+Blockly.Msg["REMOVE_COMMENT"] = "移除註解";
+Blockly.Msg["RENAME_VARIABLE"] = "重新命名變數...";
+Blockly.Msg["RENAME_VARIABLE_TITLE"] = "將所有「%1」變數重新命名為:";
+Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg["TEXT_APPEND_TITLE"] = "至 %1 套用文字 %2";
+Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "添加一些文字到變數「%1」之後。";
+Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "轉成英文小寫";
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "轉成英文首字大寫";
+Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "轉成英文大寫";
+Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "使用不同的大小寫複製這段文字。";
+Blockly.Msg["TEXT_CHARAT_FIRST"] = "擷取首字元";
+Blockly.Msg["TEXT_CHARAT_FROM_END"] = "取得倒數第#字元";
+Blockly.Msg["TEXT_CHARAT_FROM_START"] = "取得 字元 #";
+Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
+Blockly.Msg["TEXT_CHARAT_LAST"] = "取得 最後一個字元";
+Blockly.Msg["TEXT_CHARAT_RANDOM"] = "取得 任意字元";
+Blockly.Msg["TEXT_CHARAT_TAIL"] = "";  // untranslated
+Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文字 %1 %2";
+Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位於指定位置的字元。";
+Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";  // untranslated
+Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "計算%1在%2裡出現的次數";
+Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "計算在一段文本中,某個部分文本重複出現了多少次。";
+Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "添加一個項目到字串中。";
+Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "加入";
+Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個文字區塊。";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到倒數第#字元";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到 字元 #";
+Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到尾字元";
+Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";  // untranslated
+Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "在字串";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "取得首字元";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "取得 倒數第 # 個字元";
+Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "取得 字元 #";
+Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "";  // untranslated
+Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回指定的部分文字。";
+Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
+Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "從 最前面 索引字串";
+Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "從 最後面 索引字串";
+Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文字 %1 %2 %3";
+Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。";
+Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
+Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 為空";
+Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果提供的字串為空,則返回 true。";
+Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
+Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "字串組合";
+Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通過連接任意數量的項目來建立一串文字。";
+Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1的長度";
+Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回這串文字的字元數(包含空格)。";
+Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
+Blockly.Msg["TEXT_PRINT_TITLE"] = "輸出 %1";
+Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "輸出指定的文字、 數字或其他值。";
+Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
+Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "要求用戶輸入數字";
+Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "要求用戶輸入文字";
+Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "要求輸入數字,並顯示提示訊息";
+Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "要求輸入文字,並顯示提示訊息";
+Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";  // untranslated
+Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "在%3以%2取代%1";
+Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "取代在內容裡的全部某些文字。";
+Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";  // untranslated
+Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "反轉%1";
+Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "反轉排序在文字裡的字元。";
+Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字串";
+Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一粒字元、一個字詞或一行字";
+Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
+Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除兩側空格";
+Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除左側空格";
+Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除右側空格";
+Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "複製這段文字,同時刪除兩端多餘的空格。";
+Blockly.Msg["TODAY"] = "今天";
+Blockly.Msg["UNDO"] = "還原";
+Blockly.Msg["UNNAMED_KEY"] = "未命名";
+Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目";
+Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "建立「賦值 %1」";
+Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
+Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此變數的值。";
+Blockly.Msg["VARIABLES_SET"] = "賦值 %1 成 %2";
+Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "建立「取得 %1」";
+Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
+Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "設定此變數,好和輸入結果相等。";
+Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "已存在變數「%1」。";
+Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "已存在名為「%1」,且用於其它類型「%2」的變數。";
+Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作區";
+Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "來說些事情...";
+Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
+Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
+Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
+Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
+Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
+Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
+Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
+Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
+Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
+Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
+Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
+
+Blockly.Msg["MATH_HUE"] = "230";
+Blockly.Msg["LOOPS_HUE"] = "120";
+Blockly.Msg["LISTS_HUE"] = "260";
+Blockly.Msg["LOGIC_HUE"] = "210";
+Blockly.Msg["VARIABLES_HUE"] = "330";
+Blockly.Msg["TEXTS_HUE"] = "160";
+Blockly.Msg["PROCEDURES_HUE"] = "290";
+Blockly.Msg["COLOUR_HUE"] = "20";
+Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
+
+Blockly.Msg.TEXT_IS_NUMBER_HELPURL = '';
+Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP = '判斷文本%1,並返回True或False';
+Blockly.Msg.TEXT_IS_NUMBER_MESSAGE0 = '%1 %2';
+
+Blockly.Msg.TEXT_IS_DIGIT = '是數字';
+Blockly.Msg.TEXT_IS_ALPHA = '是字母';
+Blockly.Msg.TEXT_IS_ALNUM = '是數字和字母的組合';
+
+Blockly.Msg.TEXT_LIST_START = "初始化陣列 [";
+Blockly.Msg.TEXT_LIST_END = "]";
+Blockly.Msg.TEXT_TUPLE_START = "初始化元組 (";
+Blockly.Msg.TEXT_TUPLE_END = ")";
+Blockly.Msg.TEXT_DICT_START = "初始化字典 {";
+Blockly.Msg.TEXT_DICT_END = "}";
+Blockly.Msg.TEXT_SET_START = "初始化集合 {";
+Blockly.Msg.TEXT_SET_END = "}";
+Blockly.Msg.TEXT_SET_HELPURL = "https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";
+Blockly.Msg.ADD_COMMENT = "添加註釋";
+Blockly.Msg.CHANGE_VALUE_TITLE = "更改值:";
+Blockly.Msg.CLEAN_UP = "整理塊";
+Blockly.Msg.COLLAPSE_ALL = "折疊塊";
+Blockly.Msg.COLLAPSE_BLOCK = "折疊塊";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "顏色1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "顏色2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";  // untranslated
+Blockly.Msg.COLOUR_BLEND_RATIO = "比例";
+Blockly.Msg.COLOUR_BLEND_TITLE = "混合";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "用一個給定的比率(0.0-1.0)混合兩種顏色。";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://zh.wikipedia.org/wiki/顏色";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "從調色板中選擇壹種顏色。";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";  // untranslated
+Blockly.Msg.COLOUR_RANDOM_TITLE = "隨機顏色";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "隨機選擇壹種顏色。";
+Blockly.Msg.COLOUR_RGB_BLUE = "藍色";
+Blockly.Msg.COLOUR_RGB_GREEN = "綠色";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";  // untranslated
+Blockly.Msg.COLOUR_RGB_RED = "紅色";
+Blockly.Msg.COLOUR_RGB_TITLE = "顏色";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "透過指定紅色、綠色和藍色的量創建壹種顏色。所有的值必須介於0和100之間。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";  // untranslated
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "中斷循環";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "繼續下一次循環";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "中斷包含它的循環。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "跳過這個循環的剩余部分,並繼續下一次疊代。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "警告:此塊僅可用於在一個循環內。";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";  // untranslated
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "在陣列 %2 中以 %1 遍歷每個項目";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "遍歷每個陣列中的項目,將變量“%1”設定到該項中,然後執行某些語句。";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";  // untranslated
+Blockly.Msg.CONTROLS_FOR_TITLE = "使用 %1 從範圍 %2 到 %3 每隔 %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "從起始數到結尾數中取出變量“%1”的值,按指定的時間間隔,執行指定的塊。";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "在if語句塊中增加一個條件。";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "添加一個最終的,包括所有情況的節到if塊中。";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";  // untranslated
+Blockly.Msg.TRY_EXCEPT_HELPURL = "https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "增加、刪除或重新排列各節來重新配置“if”塊。";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "否則";
+
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "否則如果";
+
+Blockly.Msg.TRY_EXCEPT_FINALLY = "最後";
+Blockly.Msg.TRY_EXCEPT_FINALLY_TOOLTIP = "";
+Blockly.Msg.TRY_EXCEPT_EXCEPT = "除了";
+Blockly.Msg.TRY_EXCEPT_EXCEPT_TOOLTIP = "";
+Blockly.Msg.TRY_EXCEPT_TRY = "嘗試";
+Blockly.Msg.TRY_EXCEPT_TRY_TOOLTIP = "";
+
+Blockly.Msg.CONTROLS_IF_MSG_IF = "如果";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "如果值為真,執行壹些語句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "如果值為真,則執行首個塊語句。否則,則執行第二塊語句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "如果首個值為真,則執行首個塊的語句。否則,如果第二個值為真,則執行第二塊的語句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "如果首個值為真,則執行首個塊對語句。否則,如果第二個值為真,則執行語句的第二塊。如果沒有值為真,則執行最後壹塊的語句。";
+Blockly.Msg.CONTROLS_REPEAT_FOREVER = "一直重複";
+Blockly.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP = "壹直執行壹些語句。";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://zh.wikipedia.org/wiki/For循環";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "執行";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "重複 %1 次";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "多次執行壹些語句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";  // untranslated
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "重複直到";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "重複當";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "只要值為假,執行壹些語句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "只要值為真,執行壹些語句。";
+Blockly.Msg.DELETE_ALL_BLOCKS = "刪除所有%1塊嗎?";
+Blockly.Msg.DELETE_BLOCK = "刪除塊";
+Blockly.Msg.DELETE_VARIABLE = "刪除“%1”變量";
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "刪除“%2”變量的%1種用途麼?";
+Blockly.Msg.DELETE_X_BLOCKS = "刪除塊";//"刪除 %1 塊";
+Blockly.Msg.DISABLE_BLOCK = "禁用塊";
+Blockly.Msg.DUPLICATE_BLOCK = "復制";
+Blockly.Msg.ENABLE_BLOCK = "啟用塊";
+Blockly.Msg.EXPAND_ALL = "展開塊";
+Blockly.Msg.EXPAND_BLOCK = "展開塊";
+Blockly.Msg.EXTERNAL_INPUTS = "多欄輸入";
+Blockly.Msg.HELP = "幫助";
+Blockly.Msg.INLINE_INPUTS = "單欄輸入";
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "創建空陣列";
+Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE = "創建空元組";
+Blockly.Msg.DICT_CREATE_EMPTY_TITLE = "創建空字典";
+Blockly.Msg.SET_CREATE_EMPTY_TITLE = "創建空集合";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "返回一個陣列,長度為 0,不包含任何數據記錄";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "陣列";
+Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD = "元組";
+Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD = "字典";
+Blockly.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD = "集合";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "增加、刪除或重新排列各部分以此重新配置這個陣列塊。";
+Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP = "增加、刪除或重新排列各部分以此重新配置這個元組塊。";
+Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP = "增加、刪除或重新排列各部分以此重新配置這個字典塊。";
+Blockly.Msg.SET_CREATE_WITH_CONTAINER_TOOLTIP = "增加、刪除或重新排列各部分以此重新配置這個集合塊。";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+/* Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "建立陣列 使用"; */
+Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "初始化陣列";
+Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH = "初始化元組";
+Blockly.Msg.DICT_CREATE_WITH_INPUT_WITH = "初始化字典";
+Blockly.Msg.SET_CREATE_WITH_INPUT_WITH = "初始化集合";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "將一個項添加到陣列中。";
+Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP = "將一個項添加到元組中。";
+Blockly.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP = "將一個項添加到字典中。";
+Blockly.Msg.SET_CREATE_WITH_ITEM_TOOLTIP = "將一個項添加到集合中。";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "建立一個具有任意數量項目的陣列。";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "首個";
+// Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒數第#";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒數第";
+// Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "第";
+Blockly.Msg.LISTS_GET_INDEX_GET = "獲得";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "取出並移除";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "最後";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "隨機";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "移除";
+
+Blockly.Msg.LISTS_POP_HELPURL = "";
+Blockly.Msg.LISTS_POP_TOOLTIP = "";
+Blockly.Msg.LISTS_POP_MESSAGE0 = "在陣列 %1 中移除 %2 項";
+
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "返回陣列中的首個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "返回在陣列中的指定位置的項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "返回陣列中的最後壹項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "隨機返回陣列中的一個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "移除並返回陣列中的首個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "移除並返回陣列中的指定位置的項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "移除並返回陣列中的最後一個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "移除並返回陣列中的一個隨機項目中。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "移除陣列中的首個項";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "移除在陣列中的指定位置的項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "移除陣列中的最後壹項";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "刪除陣列中的一個隨機的項。";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "到倒數第#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "到#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "到最後";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";  // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "從頭獲得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "從倒數#取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "從#取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "復制陣列中指定的部分。";
+Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1是最後壹項。";
+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1是首個項目。";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "找出首個項出現";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";  // untranslated
+Blockly.Msg.LISTS_INDEX_OF_LAST = "找出最後一個項出現";
+/* Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在陣列中的首個/最後一個匹配項的索引值。如果找不到項目則返回%1。"; */
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在陣列中的首個/最後一個匹配項的索引值。如果找不到項目則返回0";
+Blockly.Msg.LISTS_INLIST = "在陣列中";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";  // untranslated
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "如果改陣列為空,則返回真。";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";  // untranslated
+Blockly.Msg.LISTS_LENGTH_TITLE = "%1的長度";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "返回陣列的長度。";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";  // untranslated
+/* Blockly.Msg.LISTS_REPEAT_TITLE = "建立陣列使用項 %1 重複 %2 次"; */
+Blockly.Msg.LISTS_REPEAT_TITLE = "建立陣列 項 %1 重複 %2 次";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "建立包含指定重複次數的值的陣列。";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";  // untranslated
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "為";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "插入在";
+Blockly.Msg.LISTS_SET_INDEX_SET = "設置";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "在陣列的起始處添加該項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "插入在陣列中指定位置的項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "將該項追加到陣列的末尾。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "在陣列中隨機插入項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "設置陣列中的首個項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "設置在陣列中指定位置的項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "設置陣列中的最後壹項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "設置陣列中一個隨機的項目。";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "升序";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "降序";
+Blockly.Msg.LISTS_SORT_TITLE = "排序%1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "排序一個陣列的拷貝。";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "按字母排序,忽略大小寫";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "按數字排序";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "按字母排序";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "從文本制作陣列";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "從陣列組合文本";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "加入文本陣列至一個文本,由分隔符分隔。";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "拆分文本到文本陣列,按每個分隔符拆分。";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "用分隔符";
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "假";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";  // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "返回真或假。";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "真";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "如果兩個輸入結果相等,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "如果首個輸入結果比第二個大,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "如果首個輸入結果大於或等於第二個輸入結果,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "如果首個輸入結果比第二個小,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "如果首個輸入結果小於或等於第二個輸入結果,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "如果兩個輸入結果不相等,則返回真。";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "非%1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "如果輸入結果為假,則返回真;如果輸入結果為真,則返回假。";
+Blockly.Msg.LOGIC_NULL = "空";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";  // untranslated
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "返回空值。";
+Blockly.Msg.LOGIC_OPERATION_AND = "和";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";  // untranslated
+Blockly.Msg.LOGIC_OPERATION_OR = "或";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "如果兩個輸入結果都為真,則返回真。";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "如果至少有一個輸入結果為真,則返回真。";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "測試";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://zh.wikipedia.org/wiki/條件運算符";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "如果為假";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "如果為真";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "檢查“test”中的條件。如果條件為真,則返回“if true”的值,否則,則返回“if false”的值。";
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+";  // untranslated
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://zh.wikipedia.org/wiki/算術";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "返回兩個數字的和。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "返回兩個數字的商。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "返回兩個數字的區別。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "返回兩個數字的乘積。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "返回首個數的第二個數次方。";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://zh.wikipedia.org/wiki/%E5%8A%A0%E6%B3%95";
+Blockly.Msg.MATH_CHANGE_TITLE = "將變量 %1 的值增加 %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "將一個數添加到變量“%1”。";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://zh.wikipedia.org/wiki/數學常數";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "返回一個常見常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(無窮大)。";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";  // untranslated
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "限制數字 %1 介於 (低) %2 到 (高) %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "限制數字介於兩個指定的數字之間";
+Blockly.Msg.MATH_CONVERT_HELPURL = "";
+Blockly.Msg.MATH_CONVERT_MESSAGE0 = "%1 %2";
+Blockly.Msg.MATH_CONVERT_TOOLTIP = "強制轉換數據類型";
+Blockly.Msg.MATH_DIVISION_CONSULT_HELPURL = "";
+Blockly.Msg.MATH_DIVISION_CONSULT_TITLE = "%1 ÷ %2 商的整數部分";
+Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP = "返回兩數商的整數部分";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷";  // untranslated
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "可被整除";
+Blockly.Msg.MATH_IS_EVEN = "是偶數";
+Blockly.Msg.MATH_IS_NEGATIVE = "為負";
+Blockly.Msg.MATH_IS_ODD = "是奇數";
+Blockly.Msg.MATH_IS_POSITIVE = "為正";
+Blockly.Msg.MATH_IS_PRIME = "是質數";
+Blockly.Msg.MATH_IS_TOOLTIP = "如果數字是偶數、奇數、非負整數、正數、負數或如果它可被某數字整除,則返回真或假。";
+Blockly.Msg.MATH_IS_WHOLE = "為整數";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg.MATH_MODULO_TITLE = "%1 ÷ %2 的餘數";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "返回這兩個數字相除後的餘數。";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";  // untranslated
+Blockly.Msg.MATH_NUMBER_BITS_OPS_HELPURL = "";
+Blockly.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0 = "%1 %2 %3";
+Blockly.Msg.MATH_NUMBER_BITS_OPS_TOOLTIP = "對數字進行位運算";
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://zh.wikipedia.org/wiki/數";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "一個數字。";
+Blockly.Msg.MATH_ONLIST_HELPURL = "";  // untranslated
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "陣列中的平均數";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "陣列中的最大值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "陣列中位數";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "陣列中的最小值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "陣列模式";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "陣列的隨機項";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "陣列中的標準差";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "陣列中的數的總和";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "返回陣列中的數值的平均值。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "返回陣列中最大數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "返回陣列中的中位數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "返回陣列中最小數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "返回陣列中的最常見的項的陣列。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "從陣列中返回一個隨機的元素。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "返回陣列的標準偏差。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "返回陣列中的所有數字的和。";
+Blockly.Msg.MATH_POWER_SYMBOL = "**";  // untranslated
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "隨機小數";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "返回介於(包含)0.0到1.0之間的隨機數。";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "從 %1 到 %2 之間的隨機整數";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "返回兩個指定的範圍(含)之間的隨機整數。";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://zh.wikipedia.org/wiki/數值修約";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "四舍五入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "向下舍入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "向上舍入";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "數字向上或向下舍入。";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "絕對";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "平方根";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "返回一個數的絕對值。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "返回數的e次方。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "返回一個數的自然對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "返回數字的對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "返回數的邏輯非。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "返回數的10次方。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "返回數的平方根。";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";  // untranslated
+Blockly.Msg.MATH_TRIG_ACOS = "acos";  // untranslated
+Blockly.Msg.MATH_TRIG_ASIN = "asin";  // untranslated
+Blockly.Msg.MATH_TRIG_ATAN = "atan";  // untranslated
+Blockly.Msg.MATH_TRIG_COS = "cos";  // untranslated
+Blockly.Msg.MATH_TRIG_HELPURL = "https://zh.wikipedia.org/wiki/三角函數";
+Blockly.Msg.MATH_TRIG_SIN = "sin";  // untranslated
+Blockly.Msg.MATH_TRIG_TAN = "tan";  // untranslated
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "返回一個數的反余弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "返回一個數的反正弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "返回指定角度的反正切值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "返回指定角度的余弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg.NEW_VARIABLE = "創建變量...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "新變量的名稱:";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "";
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "允許宣告";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "參數:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "運行用戶定義的函數“%1”。";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "運行用戶定義的函數“%1”,並使用它的輸出值。";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "與:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "創建“%1”";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "";//"描述該功能...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "my_func";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "定義函數";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "創建一個不帶輸出值的函數。";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "返回";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "創建一個有輸出值的函數。";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "警告: 此函數具有重複參數。";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "突出顯示函數定義";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "如果值為真,則返回第二個值。";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "警告: 僅在定義函數內可使用此塊。";
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "輸入名稱:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "添加函數輸入。";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "輸入";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "添加、刪除或重新排此函數的輸入。";
+Blockly.Msg.REDO = "重做";
+Blockly.Msg.REMOVE_COMMENT = "刪除註釋";
+Blockly.Msg.RENAME_VARIABLE = "重命名變量...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "將所有“%1”變量重命名為:";
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "追加文本";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+/* Blockly.Msg.TEXT_APPEND_TO = "在"; */
+Blockly.Msg.TEXT_APPEND_TO = "";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "將壹些文本追加到變量“%1”。";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";  // untranslated
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "轉為小寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "轉為首字母大寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "轉為大寫";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "使用不同的大小寫復制這段文字。";
+Blockly.Msg.TEXT_CHARAT_FIRST = "獲得首個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "獲得倒數第#個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "獲得字元#";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";  // untranslated
+/* Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "於文本中"; */
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "從文本";
+Blockly.Msg.TEXT_CHARAT_LAST = "獲得最後一個字元";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "獲取隨機的字母";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "返回位於指定位置的字母。";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "將一個項添加到文本中。";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "加入";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "添加、移除或重新排列各節來重新配置這個文本塊。";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "到倒數第#個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "到字元#";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "到最後一個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";  // untranslated
+/* Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "自文本"; */
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "從文本";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "取得段落字串自首個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "取得段落字串自倒數第#個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "取得段落字串自#";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "返回指定的部分文本。";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";  // untranslated
+/* Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "自文本"; */
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "在文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "中查找 最先 出現";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "中查找 最後 出現";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "的位置";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "返回在第二個字串中的首個/最後一個匹配項的索引值。如果未找到則返回%1。";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";  // untranslated
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "如果提供的文本為空,則返回真。";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";  // untranslated
+/* Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "建立字串 使用"; */
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "轉為文本";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "透過串起任意數量的項以建立壹段文字。";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";  // untranslated
+Blockly.Msg.TEXT_LENGTH_TITLE = "%1的長度";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "返回提供文本的字母數(包括空格)。";
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";  // untranslated
+Blockly.Msg.TEXT_PRINT_TITLE = "打印%1";
+Blockly.Msg.CocoRobo_INPUT_MESSAGE0 ='輸入%1';
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "打印指定的文字、數字或其他值。";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";  // untranslated
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "提示用戶輸入數字。";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "提示用戶輸入壹些文本。";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "輸入數字並顯示提示消息";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "輸入數字並顯示提示消息";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://zh.wikipedia.org/wiki/字串";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "一個字母、單詞或壹欄文本。";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";  // untranslated
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "消除兩側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "消除左側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "消除右側空格";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "復制這段文字的同時刪除兩端多余的空格。";
+Blockly.Msg.TODAY = "今天";
+Blockly.Msg.UNDO = "撤銷";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "item";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "創建“設定%1”";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";  // untranslated
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "返回此變量的值。";
+Blockly.Msg.VARIABLES_SET = "將變量 %1 設定為 %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "創建“獲得%1”";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";  // untranslated
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "設置此變量,以使它和輸入值相等。";
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "已存在名為“%1”的變量。";
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+
+Blockly.Msg.TRY_EXCEPT_TRY = '嘗試';
+
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.DICT_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.SET_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+/**
+*原生end
+*/
+
+Blockly.Msg.CocoRobo_OPEN = '開啟';
+Blockly.Msg.CocoRobo_CLOSE = '關閉';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT = '左移';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT = '右移';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP = '上移';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN = '下移';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE = '灰度';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW = '彩虹';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE = '數字反轉';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT = '黑白翻轉';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR = '線性極';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR = '對數極';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE = '灰度';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR = '彩色';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_START = '開始抓取圖像';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP = '停止抓取圖像';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H = '水平鏡像';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V = '垂直翻轉';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST = '對比度';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS = '亮度';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION = '飽和度';
+
+Blockly.Msg.CocoRobo_AI2_FACE_YOLO = '人臉檢測';
+Blockly.Msg.CocoRobo_AI2_CLASS_20_YOLO = '20類識別';
+
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE = '矩形';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_CROSS = '十字';
+
+
+/*文本- 開始 */
+Blockly.Msg.TEXT_APPEND_TEXT_HELPURL = '';
+Blockly.Msg.TEXT_APPEND_TEXT_TOOLTIP = '在指定文本後追加文本,並返回結果';
+Blockly.Msg.TEXT_APPEND_TEXT_MESSAGE0 = '%1 追加文本 %2';
+
+
+
+/*文本 - 結束 */
+
+
+Blockly.Msg.CHINA_CITY_MESSAGE0 = '%1 %2';
+Blockly.Msg.CHINA_CITY_TOWN_MESSAGE0 = '%1 %2 %3 返回 %4';
+Blockly.Msg.CHINA_CITY_CNNAME = '中文簡稱';
+Blockly.Msg.CHINA_CITY_PINYIN = '拼音';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_1 = '簡體中文';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_2 = '正體中文';
+
+Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_HELPURL = '';
+Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_MESSAGE0 = '[心知天氣] %1 信息 %2 地理位置 %3 API私鑰 %4 %5 語言 %6 %7 溫度單位 %8';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_1 = '天氣實況';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_2 = '3天天氣預報';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_3 = '6項生活指數';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_1 = '攝氏度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_2 = '華氏度';
+
+Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_HELPURL = '';
+Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_MESSAGE0 = '設定 %1 為 %2';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_TOOLTIP = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_MESSAGE0 = '%1 [心知天氣] 通用字段 %2';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_TOOLTIP = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_MESSAGE0 = '%1 [心知天氣] 天氣實況 %2';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_TOOLTIP = '風向角度,範圍0~360\n風速,單位km/h(當unit=c時)、mph(當unit=f時)';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_MESSAGE0 = '%1 [心知天氣] 3天天氣預報 %2 的 %3';
+
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_TOOLTIP = '';
+Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_MESSAGE0 = '%1 [心知天氣] 6項生活指數 %2';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_city_name = '城市名稱';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_city_id = '城市ID';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_country = '國家代碼';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_path = '行政歸屬';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_timezone = '時區';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_timezone_offset = 'UTC偏移量';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_last_update_date = '數據更新日期';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_last_update = '數據更新時間';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_object = '原始字典對象';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text = '天氣現象';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code = '天氣現象代碼';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_temperature = '溫度';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_today = '今天';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_tomorrow = '明天';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_the_day_after_tomorrow = '後天';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_date = '日期';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text_day = '白天天氣現象';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code_day = '白天天氣現象代碼';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text_night = '晚間天氣現象';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code_night = '晚間天氣現象代碼';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_high = '當天最高溫度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_low = '當天最低溫度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction = '風向';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction_degree = '風向角度';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_speed = '風速';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_scale = '風力等級';
+
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_car_washing = '洗車指數';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_dressing = '穿衣指數';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_flu = '感冒指數';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_sport = '運動指數';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_travel = '旅遊指數';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_uv = '紫外線指數';
+
+/*
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_CODE = '天氣現象代碼';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEMP_C = '氣溫(攝氏度)';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEMP_F = '氣溫(華氏度)';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEXT_ZHS = '天氣現象文字';
+Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_TEXT_ZHT = '天氣現象文字';*/
+
+/*教科板 - 擴展 - Bluebit - 開始 */
+Blockly.Msg.CocoRobo_RED = '紅';
+Blockly.Msg.CocoRobo_GREEN = '綠';
+Blockly.Msg.CocoRobo_BLUE = '藍';
+
+Blockly.Msg.CocoRobo_BLUEBIT_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_MESSAGE0 ='I2C超聲波';
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_MESSAGE0 ='%1 被觸發 腳位%2';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_MESSAGE0 ='%1 模擬值 腳位%2';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_MESSAGE0 ='設置LED燈 輸出%1 腳位%2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_MESSAGE0 ='循跡感應器 檢測為黑 腳位%1';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_MESSAGE0 ='打開 %1 腳位 %2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_HELPURL ='http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_MESSAGE0 ='關閉 %1 腳位 %2';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_MESSAGE0 = '打開錄放器 %1 %2 REC %3  PLAY %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_MESSAGE0 = '關閉錄放器 %1  REC %2  PLAY %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY = '播放';
+Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_REC = '錄音';
+
+Blockly.Msg.CocoRobo_BLUEBIT_IR_RECEIVE = '紅外探測';
+Blockly.Msg.CocoRobo_BLUEBIT_SOUND  = '麥克風';
+Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER  = '循跡';
+Blockly.Msg.CocoRobo_BLUEBIT_VIBRATION  = '震動';
+Blockly.Msg.CocoRobo_BLUEBIT_RFID  = '射頻卡';
+Blockly.Msg.CocoRobo_BLUEBIT_FINGERPRINT_SCANNER  = '指紋';
+Blockly.Msg.CocoRobo_BLUEBIT_PIR  = '人體感應';
+Blockly.Msg.CocoRobo_BLUEBIT_MAGNETIC  = '門磁開關';
+Blockly.Msg.CocoRobo_BLUEBIT_BUTTON = '按鍵';
+
+Blockly.Msg.CocoRobo_BLUEBIT_FAN  = '風扇';
+Blockly.Msg.CocoRobo_BLUEBIT_LASER  = '激光';
+
+Blockly.Msg.CocoRobo_BLUEBIT_NTC_TEMP  = '熱敏電阻';
+Blockly.Msg.CocoRobo_BLUEBIT_WATER  = '水位';
+Blockly.Msg.CocoRobo_BLUEBIT_SOIL_MOISTURE  = '土壤濕度';
+Blockly.Msg.CocoRobo_BLUEBIT_ROTATE_DIMMER  = '旋鈕電位器';
+Blockly.Msg.CocoRobo_BLUEBIT_LINEAR_SLIDING_POTENTIOMETER  = '直滑電位器';
+Blockly.Msg.CocoRobo_BLUEBIT_ANALOG_LIGHT  = '模擬光線';
+Blockly.Msg.CocoRobo_BLUEBIT_LM35_TEMP  = 'LM35溫度';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE  = '正轉';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE  = '反轉';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_HELPURL  = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_TOOLTIP = '速度:-100~100 映射至 -1023~1023';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_MESSAGE0  ='打開直流馬達 %1 速度 %2 引腳AIN1 %3 引腳AIN2 %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_HELPURL  = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_TOOLTIP  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_MESSAGE0  = '停止直流馬達 %1 引腳AIN1 %2 引腳AIN2 %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_HELPURL  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_TOOLTIP  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_MESSAGE0 = '擴展板 打開風扇 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_HELPURL  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_TOOLTIP  = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_MESSAGE0  = '擴展板 關閉風扇 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_HELPURL = 'http://wiki.CocoRobo_BLUEBIT.hk/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE';
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_MESSAGE0 = '四向按鍵模組 腳位 %1 按鍵 %2 被按下';
+Blockly.Msg.BLUE = 'A';
+Blockly.Msg.GREEN = 'B';
+Blockly.Msg.RED = 'C';
+Blockly.Msg.YELLOW = 'D';
+
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_MESSAGE0 = '搖桿 引腳A0 %1 引腳A1 %2   %3 軸的值';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_TOOLTIP = '速度:0~100';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_MESSAGE0 = '擴展板 打開直流馬達 %1 %2 速度 %3';
+
+Blockly.Msg.CocoRobo_BLUEBIT_BLUEBIT_MOTOR_OFF_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_TOOLTIP = '速度:0~100';
+Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_MESSAGE0 = '擴展板 關閉直流馬達';
+
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_TOOLTIP = '速度:-1023~1023';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_MESSAGE0 = '編碼馬達 模式 %1 撥碼 %2 M1速度 %3 M2速度 %4';
+
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_TOOLTIP = '停止編碼馬達轉動';
+Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_MESSAGE0 = '停止編碼馬達轉動 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_MESSAGE0 = 'I2C %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_TEMPERATURE = '溫度';
+Blockly.Msg.CocoRobo_BLUEBIT_HUMIDITY = '濕度';
+
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_MESSAGE0 = '初始化MIDI TX引腳 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_MESSAGE0 = '設MIDI音量 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_TOOLTIP = '音量 0~127';
+
+Blockly.Msg.MIDI_PIANO = "平臺鋼琴"; //ACOUSTIC GRAND PIANO
+Blockly.Msg.MIDI_BRIGHTACOUSTICPIANO = "亮音鋼琴";
+Blockly.Msg.MIDI_ELECTRICGRANDPIANO = "電鋼琴";
+Blockly.Msg.MIDI_HARPSICHORD = "大鍵琴";
+Blockly.Msg.MIDI_CELESTA = "鋼片琴";
+Blockly.Msg.MIDI_GLOCKENSPIEL = "鍾琴";
+Blockly.Msg.MIDI_MUSICALBOX = "音樂盒";
+Blockly.Msg.MIDI_MARIMBA = "馬林巴琴";
+Blockly.Msg.MIDI_XYLOPHONE = "木琴";
+Blockly.Msg.MIDI_TUBULARBELL = "管鐘";
+Blockly.Msg.MIDI_DULCIMER = "洋琴";
+Blockly.Msg.MIDI_VIBRAPHONE = "顫音琴"; //VIBRAPHONE
+Blockly.Msg.MIDI_ORGAN = "音栓風琴"; //DRAWBAR ORGAN
+Blockly.Msg.MIDI_ACOUSTIC_GUITAR = "木吉他"; //ACOUSTIC GUITAR
+Blockly.Msg.MIDI_ELECTRIC_GUITAR = "電吉他"; //ELECTRIC GUITAR
+Blockly.Msg.MIDI_ACOUSTIC_BASS = "民謠貝斯";  //ACOUSTIC BASS
+Blockly.Msg.MIDI_STRING_ENSEMBLE = "弦樂合奏";  //STRING ENSEMBLE
+Blockly.Msg.MIDI_VIOLIN = "小提琴";  //VIOLIN
+Blockly.Msg.MIDI_TRUMPET = "小號";  //TRUMPET
+Blockly.Msg.MIDI_SAX = "薩克斯";  //SAX
+Blockly.Msg.MIDI_STEEL_DRUMS = "鋼鼓";  //STEEL DRUMS
+Blockly.Msg.MIDI_LEAD = "合成音主旋律";  //LEAD
+Blockly.Msg.MIDI_PAD = "合成音襯底";  //PAD
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_MESSAGE0 = '設MIDI樂器 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_MESSAGE0 = 'MIDI %1 音調 %2';
+Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_MESSAGE0 = '設點陣亮度等級 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_TOOLTIP = '亮度等級 0~15';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_MESSAGE0 = '點陣 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_MESSAGE0 = '設置點陣  %1 %2 %3 %4 %5 %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 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_MESSAGE0 = '點陣設置生效';
+Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_MESSAGE0 = '設MP3音量 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_TOOLTIP = '音量:0~30';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_MESSAGE0 = '初始化MP3 TX引腳 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_TOOLTIP = '教科板的 tx 引腳連接音樂模組的 RXI 腳位';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_MESSAGE0 = 'MP3 音量 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_TOOLTIP = '';
+Blockly.Msg.CocoRobo_PLUS_1 = '加1';
+Blockly.Msg.CocoRobo_MINUS_1 = '減1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_MESSAGE0 = 'MP3 播放第 %1 首歌';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_MESSAGE0 = 'MP3 播放 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_MESSAGE0 =  'Mp3 單曲循環 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_MESSAGE0 =  '設擴展端口 IO %2 為 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_TOOLTIP = 'IO: 0~7';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_MESSAGE0 =  '擴展端口值 IO %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_MESSAGE0 =  '設擴展端口 IO %2 為 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_OBJECT_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_OBJECT_MESSAGE0 = 'LCD1602 初始化';
+Blockly.Msg.CocoRobo_LCD_OBJECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_PRINT_MESSAGE0 = 'LCD1602 顯示 %1';
+Blockly.Msg.CocoRobo_LCD_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_HOME_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_HOME_MESSAGE0 = 'LCD1602 光標 回到原點';
+Blockly.Msg.CocoRobo_LCD_HOME_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_CURSOR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_CURSOR_MESSAGE0 = 'LCD1602 光標 %1';
+Blockly.Msg.CocoRobo_LCD_CURSOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0 = 'LCD1602 起始點 欄 %2 列 %1';
+Blockly.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP = '欄列從0開始計數';
+
+Blockly.Msg.CocoRobo_LCD_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_CLEAR_MESSAGE0 = 'LCD1602 清屏';
+Blockly.Msg.CocoRobo_LCD_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_CURSOR_BLINK = '閃爍';
+Blockly.Msg.CocoRobo_LCD_CURSOR_NO_BLINK = '不閃爍';
+
+Blockly.Msg.CocoRobo_RIGHT_TO_LEFT = '從右向左';
+Blockly.Msg.CocoRobo_LEFT_TO_RIGHT = '從左向右';
+
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0 = 'LCD1602 文字方向 %1';
+Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_LCD_MOVE_HELPURL = '';
+Blockly.Msg.CocoRobo_LCD_MOVE_MESSAGE0 = 'LCD1602 向 %1 滾動壹格';
+Blockly.Msg.CocoRobo_LCD_MOVE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IR_TRANS_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_TRANS_MESSAGE0 = '紅外發送 單字節字串 %1 tx 腳位 %2';
+Blockly.Msg.CocoRobo_IR_TRANS_TOOLTIP = 
+`
+單字節字串:
+'A', 'b', '1'等
+`
+
+Blockly.Msg.OUTPUT_PIN_HELPURL = '';
+Blockly.Msg.OUTPUT_PIN_MESSAGE0 = '%1';
+Blockly.Msg.OUTPUT_PIN_TOOLTIP = "";
+
+Blockly.Msg.INPUT_PIN_HELPURL = '';
+Blockly.Msg.INPUT_PIN_MESSAGE0 = '%1';
+Blockly.Msg.INPUT_PIN_TOOLTIP = "";
+
+Blockly.Msg.READ_ANALOG_PIN_HELPURL = ''
+Blockly.Msg.READ_ANALOG_PIN_MESSAGE0 = '%1'
+Blockly.Msg.READ_ANALOG_PIN_TOOLTIP = ""
+
+Blockly.Msg.SET_DIGITAL_HELPURL = ''
+Blockly.Msg.SET_DIGITAL_MESSAGE0 = '%1'
+Blockly.Msg.SET_DIGITAL_TOOLTIP = ""
+
+Blockly.Msg.SET_ANALOG_HELPURL = ''
+Blockly.Msg.SET_ANALOG_MESSAGE0 = '%1'
+Blockly.Msg.SET_ANALOG_TOOLTIP = ""
+
+Blockly.Msg.ALL_PIN_HELPURL = ''
+Blockly.Msg.ALL_PIN_MESSAGE0 = '%1'
+Blockly.Msg.ALL_PIN_TOOLTIP = ""
+
+Blockly.Msg.PWM_PIN_HELPURL = ''
+Blockly.Msg.PWM_PIN_MESSAGE0 = '%1'
+Blockly.Msg.PWM_PIN_TOOLTIP = ""
+
+Blockly.Msg.DH11_HUM_TEM_PIN_HELPURL = ''
+Blockly.Msg.DH11_HUM_TEM_PIN_MESSAGE0 = '%1'
+Blockly.Msg.DH11_HUM_TEM_PIN_TOOLTIP = ""
+
+Blockly.Msg.UART_TX_PIN_HELPURL = ''
+Blockly.Msg.UART_TX_PIN_MESSAGE0 = '%1'
+Blockly.Msg.UART_TX_PIN_TOOLTIP = ""
+
+Blockly.Msg.UART_RX_PIN_HELPURL = ''
+Blockly.Msg.UART_RX_PIN_MESSAGE0 = '%1'
+Blockly.Msg.UART_RX_PIN_TOOLTIP = ""
+
+Blockly.Msg.I2C_PIN_HELPURL = ''
+Blockly.Msg.I2C_PIN_MESSAGE0 = '%1'
+Blockly.Msg.I2C_PIN_TOOLTIP = ""
+
+
+
+
+
+
+Blockly.Msg.MQTT_COMMON_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_COMMON_SETUP_MESSAGE0 = 'MQTT %1 client_id %2 server %3 port %4 user %5 password %6 keepalive %7';
+Blockly.Msg.MQTT_COMMON_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_TENCENT_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_TENCENT_SETUP_MESSAGE0 = 'MQTT 騰訊物聯網 %1 服務器 %2 Port %3 AppId %4 Device %5 -- 傳出參數 -- %6 ReportTopic %7 ControlTopic %8';
+Blockly.Msg.MQTT_TENCENT_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_TENCENT_SETUPS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient'
+Blockly.Msg.MQTT_TENCENT_SETUPS_MESSAGE0 = 'MQTT 騰訊物聯網 %1 服務器 %2 Port %3 AppId %4 Device %5 -- 傳出參數 -- %6 ReportTopic %7 ControlTopic %8';
+Blockly.Msg.MQTT_TENCENT_SETUPS_TOOLTIP = "";
+
+Blockly.Msg.MQTT_SETUP_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_SETUP_MESSAGE0 = 'MQTT-Easy IoT %1 服務器 %2  Client ID %5 Iot_id %3 Iot_pwd %4';
+Blockly.Msg.MQTT_SETUP_TOOLTIP = "";
+
+Blockly.Msg.MQTT_CONNECT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_CONNECT_MESSAGE0 = '連接 MQTT';
+Blockly.Msg.MQTT_CONNECT_TOOLTIP = "";
+
+Blockly.Msg.MQTT_PUBLISH_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_PUBLISH_MESSAGE0 = '發佈 %1 至 主題 %2';
+Blockly.Msg.MQTT_PUBLISH_TOOLTIP = "";
+
+Blockly.Msg.MQTT_REC_FROM_TOPIC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_REC_FROM_TOPIC_MESSAGE0 = '當從主題 %1 接收到 %2 時';
+Blockly.Msg.MQTT_REC_FROM_TOPIC_TOOLTIP = "";
+
+Blockly.Msg.MQTT_RECEIVE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_RECEIVE_MESSAGE0 = '當從主題 %1 接收到 %2 時';
+Blockly.Msg.MQTT_RECEIVE_TOOLTIP = "參數\"主題\"只接受變量";
+
+Blockly.Msg.MQTT_WAIT_MSG_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_WAIT_MSG_MESSAGE0 = '等待主題消息 以 %1 模式';
+Blockly.Msg.MQTT_WAIT_MSG_TOOLTIP = "建議放在'壹直重複'中運行";
+
+Blockly.Msg.MQTT_DISCONNECT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/advance/iot/mqtt.html#id2'
+Blockly.Msg.MQTT_DISCONNECT_MESSAGE0 = 'MQTT 斷開連接';
+Blockly.Msg.MQTT_DISCONNECT_TOOLTIP = "";
+
+Blockly.Msg.MQTT_LAST_WILL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/umqtt.simple.html?highlight=mqtt#MQTTClient.set_last_will'
+Blockly.Msg.MQTT_LAST_WILL_MESSAGE0 = '設置 MQTT 主題 %2 離綫消息 %1';
+Blockly.Msg.MQTT_LAST_WILL_TOOLTIP = "設置 MQTT last will 消息。應該在 connect() 之前調用。";
+
+Blockly.Msg.CocoRobo_IR_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_RECV_MESSAGE0 = '紅外接收 整型  rx 腳位 %1';
+Blockly.Msg.CocoRobo_IR_RECV_TOOLTIP = '首次接收總爲空';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_MESSAGE0 = 'bluebit LCD 顯示 %1 x %2 y %3';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_MESSAGE0 = 'bluebit LCD 初始化 tx %1 rx %2';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_MESSAGE0 = 'bluebit LCD 清空';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_MESSAGE0 = 'bluebit LCD 顯示圖像 x %1 y %2 寬 %3 高 %4 16進制圖像數據 %5';
+Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_TOOLTIP = '';
+
+
+/*教科板 - 擴展 - Bluebit - 結束 */
+
+/*掌控實驗箱*/
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0 ='氣象 %1';
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP = '氣壓單位Pa, 溫度單位攝氏度, 環境濕度單位%';
+
+Blockly.Msg.CocoRobobox_sound_MESSAGE0 ='聲音值';
+Blockly.Msg.CocoRobobox_sound_TOOLTIP = '採樣數據,為0~4095。';
+Blockly.Msg.CocoRobobox_sound_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo.html';
+
+Blockly.Msg.CocoRoboBOX_SLIDER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_SLIDER_MESSAGE0 = '滑桿';
+Blockly.Msg.CocoRoboBOX_SLIDER_TOOLTIP = '返回滑桿電阻採樣值。範圍0~4095。';
+
+Blockly.Msg.CocoRoboBOX_5BUTTON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_5BUTTON_MESSAGE0 = '五向按鍵%1';
+Blockly.Msg.CocoRoboBOX_5BUTTON_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_MOTOR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo-box';
+Blockly.Msg.CocoRoboBOX_MOTOR_MESSAGE0 = '馬達 速度%1';
+Blockly.Msg.CocoRoboBOX_MOTOR_TOOLTIP = '馬達速度,範圍±100。正值表示正轉,負值則反。';
+
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key';
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_MESSAGE0 = '超聲波';
+Blockly.Msg.CocoRoboBOX_ULTRASONIC_TOOLTIP = '超聲波測距,獲取超聲波感應器測距值,組織cm。範圍3~340CM';
+
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRoboBox/lib/CocoRobo_box.html#CocoRobo_box.get_key';
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_MESSAGE0 = '人體紅外';
+Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_TOOLTIP = '返回人體紅外觸發值。當為1時,表示已觸發;當為0時,表示未觸發。';
+
+Blockly.Msg.CocoRoboBOX_RGB_pixel_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_MESSAGE0 = '設定第 %1列 %2欄  R%3 G%4 B%5';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_TOOLTIP = '設定第多少列,欄的RGB顏色';
+
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_HELPURL = ''; 
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_MESSAGE0 = '返回 第%1列 %2欄 RGB顏色';
+Blockly.Msg.CocoRoboBOX_RGB_get_pixel_TOOLTIP = '返回第多少列,欄位置的RGB顏色';
+
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_MESSAGE0 = '滾動顯示文本%1  速度%2';
+Blockly.Msg.CocoRoboBOX_RGB_ImageText_TOOLTIP = '滾動顯示文字,亮度為0不亮,9最亮';
+
+Blockly.Msg.CocoRoboBOX_RGB_Image_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_Image_MESSAGE0 = '顯示影像%1';
+Blockly.Msg.CocoRoboBOX_RGB_Image_TOOLTIP = '顯示影像';
+
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_MESSAGE0 = '創建影像 %1 首個欄%2第二欄%3第三欄%4第四欄%5第五欄%6';
+Blockly.Msg.CocoRoboBOX_RGB_SetImage_TOOLTIP = '創建新影像,每欄每位數代表第幾比特燈,默認紅色;亮度為0不亮,9最亮。';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_MESSAGE0 = '顯示影像/文本 %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_TOOLTIP = '顯示影像或文字消息。';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_MESSAGE0 = '顯示影像 %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_TOOLTIP = '顯示影像。';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_MESSAGE0 = '複製影像 %1';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_TOOLTIP = '複製影像。';
+Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_MESSAGE0 = '切剪影像%1  列%2  欄%3 寬%4 高%5';
+Blockly.Msg.CocoRoboBOX_RGB_ImageCot_TOOLTIP = '切剪影像';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_MESSAGE0 = '內寘影像 %1';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_TOOLTIP = '選擇一個內寘的影像。';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_MESSAGE0 = '平移影像 %1 %2 %3 位';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_TOOLTIP = '向特定方向移動影像,並返回移動後的結果。';
+Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_HELPURL = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_clear_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_clear_MESSAGE0 = '關閉所有 RGB 燈';
+Blockly.Msg.CocoRoboBOX_RGB_clear_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_HELPURL = '';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_MESSAGE0 = '返回第 %1列 %2欄 顏色';
+Blockly.Msg.CocoRoboBOX_RGB_pixel_return_TOOLTIP = '返回第多少列,欄的RGB顏色';
+
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_MESSAGE0 = '%1軸加速度';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_TOOLTIP = '單位g,範圍-2~+2g。';
+
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_MESSAGE0 = '%1軸角速度';
+Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_TOOLTIP = '範圍±500°/秒';
+
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_MESSAGE0 = '%1歐拉角';
+Blockly.Msg.CocoRoboBOX_EULER_ANGLE_TOOLTIP = '返回當前歐拉角(Pitch,Roll,Yaw),單位角度';
+
+Blockly.Msg.CocoRoboBOX_QUATERNION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo.html';
+Blockly.Msg.CocoRoboBOX_QUATERNION_MESSAGE0 = '%1四元數';
+Blockly.Msg.CocoRoboBOX_QUATERNION_TOOLTIP = '返回當前四元數(w,x,y,z)';
+
+Blockly.Msg.LIST_FIRST_INDEX_HELPURL = '';
+Blockly.Msg.LIST_FIRST_INDEX_MESSAGE0 = '項 %1 在陣列 %2 %3 出現的位置';
+Blockly.Msg.LIST_FIRST_INDEX_TOOLTIP = '返回指定字串在陣列中%3出現的位置';
+
+
+/*AI類*/
+Blockly.Msg.CocoRobo_AI_LCD_INIT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.init';
+Blockly.Msg.CocoRobo_AI_LCD_INIT_MESSAGE0 = '螢幕 初始化 ';
+Blockly.Msg.CocoRobo_AI_LCD_INIT_TOOLTIP = '初始化 螢幕顯示';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%8D%95%E7%9B%AE%E6%91%84%E5%83%8F%E5%A4%B4%E9%87%8D%E7%BD%AE%E5%87%BD%E6%95%B0';
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_MESSAGE0 = '攝像頭 初始化';
+Blockly.Msg.CocoRobo_AI_SENSOR_RESET_TOOLTIP = '初始化單目攝像頭';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_MESSAGE0 = '攝像頭%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_TOOLTIP = '獲取影像';
+
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/lcd.html#%E4%BE%8B%E7%A8%8B-1%EF%BC%9A-%E6%98%BE%E7%A4%BA%E8%8B%B1%E6%96%87';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MESSAGE0 = '顯示文字 x %1 y %2 內容 %3';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_TOOLTIP = '僅支持字母和數字';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%B7%B3%E5%B8%A7';
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_MESSAGE0 = '攝像頭 跳過幀數%1 毫秒%2內的影像';
+Blockly.Msg.CocoRobo_AI_SENSOR_SKIP_TOOLTIP = '攝像頭跳過指定幀數或者跳過指定時間內的影像';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E5%88%86%E8%BE%A8%E7%8E%87%E5%AE%BD%E5%BA%A6';
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_MESSAGE0 = '測 攝像頭 獲取%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_TOOLTIP = '(AI)攝像頭返回參數(寬高,圖像幀的格式,圖像幀的大小)';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%AF%94%E5%BA%A6';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_MESSAGE0 = '攝像頭 設置%1 爲%2';
+Blockly.Msg.CocoRobo_AI_SENSOR_SETS_TOOLTIP = '設置攝像頭對比度,亮度,飽和度範圍爲[-2,+2]';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_MESSAGE0 = '攝像頭 自動增益%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_TOOLTIP = '1開啟攝像頭自動增益0關閉攝像頭自動增益';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%A2%9E%E7%9B%8A';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_MESSAGE0 = '攝像頭 白平衡%1';
+Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_TOOLTIP = '設定攝像自動白平衡模式,默認打開。True為打開,False為關閉自動白平衡。若您想追跡顏色,則需關閉白平衡。';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%AE%BE%E7%BD%AE%E6%B0%B4%E5%B9%B3%E9%95%9C%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_MESSAGE0 = '攝像頭 %1 %2';
+Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_TOOLTIP = '1表示開啟水準鏡像 0表示關閉水準鏡像';
+
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_MESSAGE0 = '螢幕 顯示生效';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_TOOLTIP = '可以在液晶屏上顯示';
+
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_MESSAGE0 = '圖像 顯示生效 x%1 y%2 寬%3 高%4';
+Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_TOOLTIP = '可以在液晶屏上顯示壹張圖片';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_HELPURL = 'https://maixpy.sipeed.com/zh/libs/machine_vision/sensor.html#%E8%8E%B7%E5%8F%96%E5%9B%BE%E5%83%8F';
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_MESSAGE0 = '攝像頭 獲取影像';
+Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_TOOLTIP = '控制攝像頭捕捉影像';
+
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_HELPURL = 'https://maixpy.sipeed.com/zh/libs/Maix/kpu.html#%E8%BF%90%E8%A1%8Cyolo2%E7%BD%91%E7%BB%9C';
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_MESSAGE0 = '人臉檢測';
+Blockly.Msg.CocoRobo_AI_IMAGE_FACEDETECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_MESSAGE0 = '矩形%1 x%3 y%4 寬%5 高%6 顏色爲 R%7 G%8 B%9  加粗%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_TOOLTIP = '在影像上繪製矩形';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_MESSAGE0 = '線條  x1%1 y1%2 到x2%3 y2%4 顏色爲R%5 G%6 B%7 加粗%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_TOOLTIP = '在影像上繪製線條';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_MESSAGE0 = '螢幕 顯示清空';
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_TOOLTIP = '將液晶屏清空為黑色或者指定的顏色';
+Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_MESSAGE0 = 'LCD 返回 x%1 y%2 顏色';
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_TOOLTIP = '返回某個座標點的顏色';
+Blockly.Msg.CocoRobo_AI_LCD_return_colour_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_MESSAGE0 = '圓形%1 x%2 y%3 半徑%4 顏色爲 R%5 G%6 B%7 加粗%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_TOOLTIP = '在影像上繪製圓形';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_MESSAGE0 = '顯示文字 x %1 y %2 內容 %3 顏色爲R%4 G%5 B%6 字號%7';
+Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_TOOLTIP = '僅支持字母和數字';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_MESSAGE0 = '十字線  x%1 y%2 顏色爲R%3 G%4 B%5 尺寸%6 加粗%7';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_TOOLTIP = '在影像上繪製十字線';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_MESSAGE0 = '箭頭  x1%1 y1%2 到x2%3 y2%4 顏色爲R%5 G%6 B%7  加粗%8';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_TOOLTIP = '在影像上繪製一個箭頭';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.draw_rectangle';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL = '.https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.display';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0 = '顯示影像 路徑%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP = '顯示影像';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.invert';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_MESSAGE0 = '圖像轉換為%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_TOOLTIP = '黑白翻轉是將二進位影像0(黑色)變為1(白色),1(白色)變為0(黑色),非常快速地翻轉二進位影像中的所有點數值。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.linpolar';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_MESSAGE0 = '影像 從笛卡爾座標到%1 座標重新投影 反向%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.dilate';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_MESSAGE0 = '影像 膨脹 級別%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_TOOLTIP = '膨脹就是對影像高亮部分進行“領域擴張”,效果圖擁有比原圖更大的高亮區域。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.midpoint';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_MESSAGE0 = '影像 中點濾波 級別%1 濾波%2';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_TOOLTIP = '控制影像混合的最小/最大程度。0只適用於最小濾波,1僅用於最大濾波。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.modehttps://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mode';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_MESSAGE0 = '影像 眾數濾波 級別%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_TOOLTIP = '在影像上運行眾數濾波,用相鄰點數的模式替換每個點數。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.mean';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_MESSAGE0 = '影像 模糊濾波 級別%1';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_TOOLTIP = '使用盒式濾波器的標準平均值模糊濾波。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.cartoon';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_MESSAGE0 = '影像 卡通化 級別%1 起始點數差異%2 相鄰點數差異%3';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_TOOLTIP = '使圖像卡通化';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.rotation_corr';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_MESSAGE0 = '影像 3D旋轉 上下旋轉%1 左右旋轉%2 度數%3 左右移動%4 上下移動%5 縮放%6';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_TOOLTIP = '透過執行幀緩衝區的3D旋轉來糾正影像中的透視問題。';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.copy';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_MESSAGE0 = '將影像的副本保存到SD卡 圖像名%1 影像顯示區域  x%2 y%3 寬%4 高%5';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_TOOLTIP = '將影像的副本保存到SD卡';
+
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.save';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0 = '創建一個影像對象的副本  複製影像區域  x%1 y%2 寬%3 高%4';
+Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP = '創建一個影像對象的副本';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0 = '手寫數字識別';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP = '手寫數字識別';
+
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html?highlight=get_pixel#CocoRobo_classroom_kit.image.set_pixel';
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_MESSAGE0 = '螢幕 x%1 y%2  顯示顏色 R%3 G%4 B%5';
+Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_TOOLTIP = '螢幕顯示顏色';
+
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.lcd.clear';
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_MESSAGE0 = '螢幕 初始化 顯示顏色 R%1 G%2 B%3';
+Blockly.Msg.CocoRobo_AI_LCD_COLOUR_TOOLTIP = '螢幕顯示顏色';
+
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.camera.set_pixformat';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_MESSAGE0 = '攝像頭 初始化 點數模式 %1';
+Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_TOOLTIP = '用於設定攝像頭點數模式,有黑白和rgb彩色';
+
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL = '';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0 = '追跡色塊 顯示%1';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP = '';
+
+//人臉檢測
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_MESSAGE0 = '選擇訓練模型 人臉';
+Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_TOOLTIP = '可以識別並且追蹤人臉,顯示人臉大小等';
+
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_MESSAGE0 = '調用攝像頭進行 人臉檢測';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_TOOLTIP = '調用攝像頭進行 人臉檢測';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_MESSAGE0 = '獲取識別後人臉的 所有參數';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_TOOLTIP = '獲取識別後人臉的 所有參數';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_MESSAGE0 = '獲取識別後人臉的 x座標';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_TOOLTIP = '獲取識別後人臉的 x座標';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_MESSAGE0 = '獲取識別後人臉的 y座標';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_TOOLTIP = '獲取識別後人臉的 y座標';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_MESSAGE0 = '獲取識別後人臉的 寬度';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_TOOLTIP = '獲取識別後人臉的 寬度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_MESSAGE0 = '獲取識別後人臉的 高度';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_TOOLTIP = '獲取識別後人臉的 高度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_MESSAGE0 = '獲取識別後人臉的 置信度';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_TOOLTIP = '獲取識別後人臉的 置信度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_MESSAGE0 = '獲取識別後人臉的 數量';
+Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_TOOLTIP = '獲取識別後人臉的 數量';
+
+//20分類
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_MESSAGE0 = '選擇訓練模型 20類';
+Blockly.Msg.CocoRobo_AI2_20class_TRACKING_TOOLTIP = '可以識別20個類型,分別是0-19爲飛機,自行車,鳥,船,瓶子,公交車,汽車,貓,椅子,奶牛,餐桌,狗,屋子,摩托車,人,盆栽,羊,沙發,火車,電視';
+
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_MESSAGE0 = '調用攝像頭進行 20類識別';
+Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_TOOLTIP = '調用攝像頭進行 20類識別';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_MESSAGE0 = '獲取識別後20類的 所有參數';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_TOOLTIP = '獲取識別後20類的 所有參數';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_MESSAGE0 = '獲取識別後20類的 x座標';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_TOOLTIP = '獲取識別後20類的 x座標';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_MESSAGE0 = '獲取識別後20類的 y座標';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_TOOLTIP = '獲取識別後20類的 y座標';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_MESSAGE0 = '獲取識別後20類的 寬度';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_TOOLTIP = '獲取識別後20類的 寬度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_MESSAGE0 = '獲取識別後20類的 高度';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_TOOLTIP = '獲取識別後20類的 高度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_MESSAGE0 = '獲取識別後20類的 置信度';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_TOOLTIP = '獲取識別後20類的 置信度';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_MESSAGE0 = '獲取識別後20類的 數量';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_TOOLTIP = '獲取識別後20類的 數量';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_MESSAGE0 = '獲取識別後20類的 類型';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_TOOLTIP = '可以識別20個類型,分別是0-19爲飛機,自行車,鳥,船,瓶子,公交車,汽車,貓,椅子,奶牛,餐桌,狗,屋子,摩托車,人,盆栽,羊,沙發,火車,電視';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_MESSAGE0 = '獲取識別後20類的 類型數量';
+Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_TOOLTIP = '獲取識別後20類的 類型數量';
+
+
+
+//手寫數字
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0 = '選擇訓練模型 手寫數字';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP = '選擇訓練模型 手寫數字';
+
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.model.select_model';
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_MESSAGE0 = '調用攝像頭進行 手寫數字識別';
+Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_TOOLTIP = '調用攝像頭進行 手寫數字識別';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_MESSAGE0 = '獲取識別後手寫數字的 所有參數';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_TOOLTIP = '獲取識別後手寫數字的 所有參數';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_MESSAGE0 = '獲取識別後手寫數字的 數字';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_TOOLTIP = '獲取識別後手寫數字的 數字';
+
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#id2';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_MESSAGE0 = '獲取識別後手寫數字的 置信度';
+Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_TOOLTIP = '獲取識別後手寫數字的 置信度';
+
+
+//追蹤色塊
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#CocoRobo_classroom_kit.image.find_blobs';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_MESSAGE0 = '追蹤色塊 LAB顏色%1 邊界框小於%2 畫素小於%3 過濾';
+Blockly.Msg.CocoRobo_AI_TRACE_COLOR_TOOLTIP = '追蹤色塊';
+
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL = '';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0 = '追蹤色塊 顯示%1';
+Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_MESSAGE0 = '獲取識別後色塊的 所有參數';
+Blockly.Msg.CocoRobo_AI_BLOB_ALL_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_X_MESSAGE0 = '獲取識別後色塊的 x座標';
+Blockly.Msg.CocoRobo_AI_BLOB_X_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_Y_MESSAGE0 = '獲取識別後色塊的 y座標';
+Blockly.Msg.CocoRobo_AI_BLOB_Y_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_W_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_W_MESSAGE0 = '獲取識別後色塊的 寬度';
+Blockly.Msg.CocoRobo_AI_BLOB_W_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_H_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_H_MESSAGE0 = '獲取識別後色塊的 高度';
+Blockly.Msg.CocoRobo_AI_BLOB_H_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_MESSAGE0 = '獲取識別後色塊的 數量';
+Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_MESSAGE0 = '獲取識別後色塊的 中心x座標';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_MESSAGE0 = '獲取識別後色塊的 中心y座標';
+Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_HELPURL = 'https://CocoRobo.readthedocs.io/zh/doc_CocoRobobox/CocoRobo_classroom_kit/lib/CocoRobo_classroom_kit.html#blob';
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_MESSAGE0 = '獲取識別後色塊的 矩形';
+Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_TOOLTIP = '返回blob 類 -- 色塊對象';
+
+//Pythons 訓練身高體重比例
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_MESSAGE0 = '初始化 訓練 %1';
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DRILL_WEIGHT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_MESSAGE0 = '實例化 線性迴歸直線';
+Blockly.Msg.CocoRobo_DRILL_LINEAR_REGRESSION_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_TITLE_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_TITLE_MESSAGE0 = '標題%1 字號%2';
+Blockly.Msg.CocoRobo_DRILL_TITLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_LABEL_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LABEL_MESSAGE0 = '標籤%1 標題%2 字號%3';
+Blockly.Msg.CocoRobo_DRILL_LABEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_MESSAGE0 = '真實數據 符號標記%1 顏色爲 r%2 g%3 b%4 標題%5';
+Blockly.Msg.CocoRobo_DRILL_DRILL_REALITY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_MESSAGE0 = '預測線性迴歸直線 符號標記%1 顏色爲 r%2 g%3 b%4 標題%5';
+Blockly.Msg.CocoRobo_DRILL_PREDICTED_REALITY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_LEGEND_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_LEGEND_MESSAGE0 = '展示圖例';
+Blockly.Msg.CocoRobo_DRILL_LEGEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_SHOW_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_SHOW_MESSAGE0 = '顯示圖片';
+Blockly.Msg.CocoRobo_DRILL_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_HELPURL = '';
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_MESSAGE0 = '返回對應鍵值%1';
+Blockly.Msg.CocoRobo_DRILL_DRILL_PRINT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_full_line = '實線';
+Blockly.Msg.CocoRobo_DRILL_DRILL_dash_line = '破折線';
+Blockly.Msg.CocoRobo_DRILL_DRILL_chain_line = '點劃線';
+Blockly.Msg.CocoRobo_DRILL_DRILL_imaginary_line = '虛線';
+
+Blockly.Msg.CocoRobo_DRILL_DRILL_dot = '點';
+Blockly.Msg.CocoRobo_DRILL_DRILL_pixel = '畫素';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_rim = '實心圈';
+Blockly.Msg.CocoRobo_DRILL_DRILL_down_triangle = '下三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_up_triangle = '上三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_right_triangle = '右三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_left_triangle = '左三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_down_flower_triangle = '下花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_up_flower_triangle = '上花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_right_flower_triangle = '右花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_left_flower_triangle = '左花三角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_square = '實心方形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_solid_pentagon = '實心五角';
+Blockly.Msg.CocoRobo_DRILL_DRILL_star = '星形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_vertical_hexagon = '豎六邊形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_across_hexagon = '橫六邊形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_cross = '十字';
+Blockly.Msg.CocoRobo_DRILL_DRILL_X = 'X';
+Blockly.Msg.CocoRobo_DRILL_DRILL_rhombus = '菱形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_thin_rhombus = '瘦菱形';
+Blockly.Msg.CocoRobo_DRILL_DRILL_vertical_line = '垂直線';
+
+
+//pythons 鳶尾花
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_MESSAGE0 = '初始化  鳶尾花數據集';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_INITIALIZE_TOOLTIP = '採用Python的Sklearn機器學習庫中自帶的數據集——鳶尾花數據集。簡單分析數據集之間特徵的關係圖,根據花瓣長度,花瓣寬度,花萼長度,花萼寬度四個特徵進行繪圖虹膜植物數據集可以從龍骨數據集數據集網站獲取,也可以直接從Sklearn。數據集機器學習包得到。數據集共包含4個特徵變量,1個類別變量,共150個有樣本。類別變量分別對應鳶尾花的三個亞屬,分別是山鳶尾(Iris-setosa),變色鳶尾(Iris-versicolor)和維吉尼亞鳶尾(Iris-virginica)分別用(0,1,2)來做映射';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_MESSAGE0 = '鳶尾花 主成分分析';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_MESSAGE0 = '鳶尾花 因子分析 3D';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_MESSAGE0 = '鳶尾花 因子分析';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_FA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_MESSAGE0 = '預測圖示 鳶尾花類型%1 呈現內容 x%3 y%4 呈現種類%2 顏色爲 r%5 g%6 b%7 標題%8 向上合併%9';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_PCA_DISPLAY_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_MESSAGE0 = '預測圖示 呈現內容 x%1 y%2 呈現種類%3 顏色爲 r%4 g%5 b%6 標題%7';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_MESSAGE0 = '3D 預測圖示 呈現內容  x朝向%1 y朝向%2 z朝向%3 顏色爲 r%4 g%5 b%6 標題%7';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_DATA3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_MESSAGE0 = '標題%1 字號%2';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_MESSAGE0 = '標籤%1 標題%2 字號%3';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_MESSAGE0 = '3D 標題%1 字號%2';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_TITLE3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_MESSAGE0 = '3D 標籤%1 標題%2 字號%3';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LABEL3D_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_MESSAGE0 = '展示圖例';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LEGEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_MESSAGE0 = '顯示圖片';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_SHOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_HELPURL = '';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_MESSAGE0 = '花萼和花瓣的x, y座標';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_LOAD_IRIS_TOOLTIP = '共150條記錄,分別代表50條山鳶尾(Iris-setosa),變色鳶尾(Iris-versicolor),維吉尼亞鳶尾(Iris-virginica)';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_setosa = '山鳶尾';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_versicolor = '變色鳶尾';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_Iris_virginica = '維吉尼亞鳶尾';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_scatter_diagram = '散點圖';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_kde_diagram = 'kde圖';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_box_diagram = '箱圖';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_merge = '合並';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_not_merge = '不合並';
+
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_length = '花萼長度';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_calyx_width = '花萼寬度';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_length = '花瓣長度';
+Blockly.Msg.CocoRoboS_FLOWER_DE_LUCE_petal_width = '花瓣寬度';
+
+//Pythons 數字識別
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_MESSAGE0 ='將圖片轉換爲28²二值圖%1  待處理的圖片存儲路徑%2 處理後的圖片存儲路徑%3 格式%4';
+Blockly.Msg.CocoRoboS_CONVERT_PICTURE_TOOLTIP = '教科板透過串口把WIF傳給語音助手';
+
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_MESSAGE0 ='查找解析 手寫數字數 據存儲路徑%1';
+Blockly.Msg.CocoRoboS_NUMBER_REPERTOIRE_TOOLTIP = '使用手寫數字字元庫';
+
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_HELPURL = '';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_MESSAGE0 ='手寫數字圖像 存儲路徑%1';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_PATH_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_HELPURL = '';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_MESSAGE0 ='顯示手寫數字圖像';
+Blockly.Msg.CocoRoboS_SHOW_NUMBER_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_MESSAGE0 ='識別手寫數字圖像 存儲路徑%1';
+Blockly.Msg.CocoRoboS_NUMBER_RECOGNITION_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_MESSAGE0 ='創建變量%1 初始化 神經網絡張量 變量名%2';
+Blockly.Msg.CocoRoboS_NUMBER_PLACEHOLDER_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_MESSAGE0 = '創建變量%1 將輸入照片變量%2 轉換爲 神經網絡輸出張量%3';
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DRILL_RESHAPE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_MESSAGE0 = '創建變量%1 共享變量%2 初始化模式%3';
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV_WEIGHT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_MESSAGE0 = '產生截斷正態分佈隨機數 輸出張量%1 標準差%2';
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_INITIALIZER_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_MESSAGE0 = '創建常量 數值%1 輸出張量%2';
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONSTANT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_MESSAGE0 = '神經網絡輸出張量%1 共享變量%2 長度%3 填充%4';
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV2D_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_MESSAGE0 = '張量%1';
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV_BIASES_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_MESSAGE0 = '卷積二維層 變量%1 %2';
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CONV_CONV2D_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_RELU_MESSAGE0 = '創建變量%1 Relu正向激勵函數 卷積二維層%2';
+Blockly.Msg.CocoRobo_NUMBER_RELU_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_RELU_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_MESSAGE0 = '池化二維層 變量%1 卷積層%2 池化窗口%3 長度%4 填充%5';
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_MAX_POOL_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_MESSAGE0 = '兩個參數的對應元素各自相乘 x%1 y%2';
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_MATMUL_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_ADD_MESSAGE0 = '全連接層 變量%1 兩個參數的元素相加 x%2 y%3';
+Blockly.Msg.CocoRobo_NUMBER_ADD_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_ADD_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_MESSAGE0 = '創建變量%1 預測模型準確度 變量名%2';
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SOFTMAX_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_MESSAGE0 = '創建變量%1 損失函數%2';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_MEAN_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_LOG_MESSAGE0 = '自然對數 %1';
+Blockly.Msg.CocoRobo_NUMBER_LOG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_LOG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_MESSAGE0 = '壓縮求和%1 維度%2';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_TOOLTIP = '因爲日誌函數是單調遞增的,所以logP (Y | X)也會達到最大值,因此在前面加上負號之後,最大化P (Y | X)就等價於最小化了。';
+Blockly.Msg.CocoRobo_NUMBER_REDUCE_SUM_HELPURL = 'https://www.cnblogs.com/guoyaohua/p/9217206.html';
+
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_MESSAGE0 = '優化學習速率 %1';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_MESSAGE0 = '創建變量%1 優化張量%2';
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_MINIMIZE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_INIT_MESSAGE0 = '初始化模型 完成';
+Blockly.Msg.CocoRobo_NUMBER_INIT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_INIT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_MESSAGE0 = '選擇 手寫數字集%1 數量%2';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_TRAIN_TEST_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_MESSAGE0 = '啓動數據流圖會話進行計算 會話%1 圖片%2 標籤%3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_MESSAGE0 = '啓動數據流圖會話進行計算 會話%1 圖片%2 標籤%3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN2_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_MESSAGE0 = '預測模型%1 擬合度%2 會話%3';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_SESSION_RUN3_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_MESSAGE0 = '兩個張量的每壹維是否相等 x%1 y%2';
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_EQUAL_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_MESSAGE0 = '張量%1 按%2比較返回最大值的索引';
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_ARGMAX_HELPURL = '';
+
+Blockly.Msg.CocoRobo_NUMBER_CAST_MESSAGE0 = '轉爲浮點型 %1';
+Blockly.Msg.CocoRobo_NUMBER_CAST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NUMBER_CAST_HELPURL = '';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_MESSAGE0 ='手寫數字識別模型 變量名%1 存儲路徑%2';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_SAVE_TOOLTIP = 'MNIST手寫數字識別模型保存路徑';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_HELPURL = '';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_MESSAGE0 ='加載模型%1 存儲路徑%2';
+Blockly.Msg.CocoRoboS_NUMBER_SAVER_RESTORE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_NUMBER_SAME ='包含邊界';
+Blockly.Msg.CocoRoboS_NUMBER_VALID = '不包含邊界';
+
+Blockly.Msg.CocoRoboS_NUMBER_train ='訓練';
+Blockly.Msg.CocoRoboS_NUMBER_test = '測試';
+
+Blockly.Msg.CocoRoboS_NUMBER_row ='欄';
+Blockly.Msg.CocoRoboS_NUMBER_rank = '列';
+
+
+
+
+
+//Pythons 人臉檢測
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_MESSAGE0 = '調用攝像頭 %1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_TOOLTIP = '調用筆記本內置攝像頭,所以參數爲0,如果有其他的攝像頭可以調整參數爲1,2';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_MESSAGE0 = '關閉攝像頭';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_CAMERA_OFF_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_MESSAGE0 = '刪除所有窗口';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_WINDOWS_DELETE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_MESSAGE0 ='加載模型 存儲路徑%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_IMPORT_MODEL_SITE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_MESSAGE0 ='從攝像頭讀取圖片';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_READ_IMAGES_TOOLTIP = 'ret如果有讀取圖片就真的,否則假;第二個參數是框架,是當前截取壹幀的圖片。';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_MESSAGE0 ='轉爲灰度圖片';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_GRAY_IMAGES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_MESSAGE0 = '檢測人臉 每次圖像尺寸減小比例%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DETECTION_FACES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_MESSAGE0 ='人臉區域顯示矩形框 顏色爲 紅%1 綠%2 藍%3';
+Blockly.Msg.CocoRoboS_FACE_DISPLAY_RECOGNITION_ORTHOGON_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_MESSAGE0 ='保存圖像 位置%1 ID%2 編號%3';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PSTORAGE_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_MESSAGE0 ='窗口中顯示圖像 文件名%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_PRESERVE_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_MESSAGE0 ='透過esc鍵 退出';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_ESC_TOOLTIP = '在窗口置頂時使用纔有效果';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_MESSAGE0 = '獲得人臉在圖像中的座標值 人臉%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITIONR_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_MESSAGE0 = '是否讀取圖片';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_FACES_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_MESSAGE0 = '是否打開攝像頭';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_JUDGE_CAMERA_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_MESSAGE0 ='獲取照片及id 照片存儲路徑%1';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_ACQUIRE_ID_PICTURE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_MESSAGE0 ='初始化訓練模型';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_INITIALIZE_TRANI_MODEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_MESSAGE0 ='開始訓練模型';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_START_DRILL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_MESSAGE0 ='%1訓練模型 存儲路徑%2';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_STORAGE_DRILL_MODEL_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_MESSAGE0 ='人臉模型訓練 數目';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_DRILL_NUMBERS_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_MESSAGE0 = '窗口顯示 識別的名字%1 設置字體爲%2 顏色爲 紅%3 綠%4 藍%5';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FONT_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_MESSAGE0 = '窗口顯示 識別的置信度%1 設置字體爲%2 顏色爲 紅%3 綠%4 藍%5';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_PERCENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_HELPURL = '';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_MESSAGE0 = '預測人臉 名字%1 置信度%2';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_FACE_INITIALIZE_TOOLTIP = '';
+
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Write= '寫入';
+Blockly.Msg.CocoRoboS_FACE_RECOGNITION_FORECAST_Read= '讀取';
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Blockly.Msg.FIRST = '首次';
+Blockly.Msg.LAST = '最後一次';
+
+Blockly.Msg.CocoRobo_USOCKET_BLOCK = '阻塞';
+Blockly.Msg.CocoRobo_USOCKET_UNBLOCK = '非阻塞';
+
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket';
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_MESSAGE0 = '設定socket  %1 地址 %2 類型 %3';
+Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_TOOLTIP = '設定給定通訊端選項的值。所需的符號常數在通訊端模組中定義(SO_ *等)。該值可以是整數或表示緩衝區的類位元組對象。';
+
+Blockly.Msg.CocoRobo_USOCKET_READLINE_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.accept';
+Blockly.Msg.CocoRobo_USOCKET_READLINE_MESSAGE0 =  'socket %1 接收壹欄數據,遇分欄符號結束並返回接收數據的對象';
+Blockly.Msg.CocoRobo_USOCKET_READLINE_TOOLTIP = '接收壹欄數據,遇分欄符號結束,並返回接收數據的對象';
+
+Blockly.Msg.CocoRobo_USOCKET_READ_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.read';
+Blockly.Msg.CocoRobo_USOCKET_READ_MESSAGE0 = '從socket %1 讀取 %2 字節並返回字節對象';
+Blockly.Msg.CocoRobo_USOCKET_READ_TOOLTIP = '若未給定讀取數量 ,則按照類似 socket.readall() 的模式運行';
+
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.setblocking';
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_MESSAGE0 = '設socket %1 為 %2 模式';
+Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.settimeout';
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_MESSAGE0 = 'socket %1 設超時時間 %2 秒';
+Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_RECV_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recv';
+Blockly.Msg.CocoRobo_USOCKET_RECV_MESSAGE0 = 'socket %1 接收並返回接收到的數據對象 最大數據量為 %2';
+Blockly.Msg.CocoRobo_USOCKET_RECV_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.recvfrom';
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_MESSAGE0 = 'socket %1 接收並返回接收到的數據元組 最大數據量為 %2';
+Blockly.Msg.CocoRobo_USOCKET_RECVFROM_TOOLTIP = '元組格式 (bytes, address)';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_MESSAGE0 = 'socket %1 連續發送%2 並返回發送的位元組數';
+Blockly.Msg.CocoRobo_USOCKET_SENDALL_TOOLTIP = '將所有數據發送到通訊端。通訊端必須連接到遠程通訊端。與send()此不同,此方法將嘗試透過連續發送數據塊來發送所有數據。';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDS_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SENDS_MESSAGE0 = 'socket %1 發送 %2 並返回發送的字節數';
+Blockly.Msg.CocoRobo_USOCKET_SENDS_TOOLTIP = '將數據發送到通訊端。通訊端必須連接到遠程通訊端。返回發送的位元組數,可能小於數據長度(“short write”)。';
+
+Blockly.Msg.CocoRobo_USOCKET_SEND_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.send';
+Blockly.Msg.CocoRobo_USOCKET_SEND_MESSAGE0 = 'socket %1 發送 %2 並返回發送的字節數';
+Blockly.Msg.CocoRobo_USOCKET_SEND_TOOLTIP = 'Send data to the socket. The socket must be connected to a remote socket. Returns number of bytes sent, which may be smaller than the length of data (“short write”).';
+
+Blockly.Msg.CocoRobo_TEXT_ESC_HELPURL = '';
+Blockly.Msg.CocoRobo_TEXT_ESC_MESSAGE0 = '文本轉義字元 %1 ';
+Blockly.Msg.CocoRobo_TEXT_ESC_TOOLTIP = '文本轉義字元';
+
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.sendto';
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_MESSAGE0 = 'socket %1 發送 %2 到地址 %3';
+Blockly.Msg.CocoRobo_USOCKET_SENDTO_TOOLTIP = 'Send data to the socket. The socket should not be connected to a remote socket, since the destination socket is specified by address.';
+
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.connect';
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_MESSAGE0 = 'socket %1 連接 host %2 端口 %3';
+Blockly.Msg.CocoRobo_USOCKET_CONNECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.getaddrinfo';
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_MESSAGE0 = '解析 host %1 端口 %2 並返回 ip';
+Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_TOOLTIP = '需聯網';
+
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.accept';
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_MESSAGE0 =  'socket %1 接受連接請求並返回socket元組';
+Blockly.Msg.CocoRobo_USOCKET_ACCEPT_TOOLTIP = '接收連接請求。socket需要指定地址並監聽連接。返回值是 (conn, address)。\nconn:新的socket對象,可以用來收發消息\naddress:連接到服務器的客戶端地址';
+
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.listen';
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_MESSAGE0 = '監聽socket %1 backlog個數 %2';
+Blockly.Msg.CocoRobo_USOCKET_LISTEN_TOOLTIP = 'backlog :接受套接字的最大個數,至少爲0,如果沒有指定,則默認一個合理值。';
+
+Blockly.Msg.CocoRobo_USOCKET_BIND_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.bind';
+Blockly.Msg.CocoRobo_USOCKET_BIND_MESSAGE0 =  'socket %1 綁定地址 %2 端口 %3';
+Blockly.Msg.CocoRobo_USOCKET_BIND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket.close';
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_MESSAGE0 = 'socket %1 關閉';
+Blockly.Msg.CocoRobo_USOCKET_CLOSE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_USOCKET_INIT_HELPURL = 'http://docs.micropython.org/en/latest/library/usocket.html#usocket.socket';
+Blockly.Msg.CocoRobo_USOCKET_INIT_MESSAGE0 = '創建 socket %1 地址 %2 類型 %3';
+Blockly.Msg.CocoRobo_USOCKET_INIT_TOOLTIP = 'AF_INET:=2 — TCP/IP – IPv4\nAF_INET6 :=10 — TCP/IP – IPv6\nSOCK_STREAM:=1 — TCP流\nSOCK_DGRAM:=2 — UDP數據報\nSOCK_RAW :=3 — 原始套接字\nSO_REUSEADDR : =4 — socket可重用\n';
+
+
+Blockly.Msg.CocoRobo_GET_POST_HELPURL = '';
+Blockly.Msg.CocoRobo_GET_POST_MESSAGE0 = '%1 請求網址 %2 提交字段 %3';
+//Blockly.Msg.CocoRobo_GET_POST_TOOLTIP =  '*data*(可選)在請求正文中發送的字典或元組陣列[(鍵,值)](將是表單編碼的),字節或類文件對象。\n*json*(可選)在請求正文中發送的json數據。\n*headers*(可選)要與請求壹同發送的HTTP標頭字典。';
+Blockly.Msg.CocoRobo_GET_POST_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_HELPURL = '';
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_TOOLTIP = '';
+Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_MESSAGE0 = '%1 請求網址 %2 提交字段 %3';
+
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_MESSAGE0 = 'Post 提交文件 %1 請求網址 %2 文件路徑 %3 Mime類型 %4 附加字段 %5';
+
+Blockly.Msg.CocoRobo_RESPONSE_HELPURL = '';
+Blockly.Msg.CocoRobo_RESPONSE_MESSAGE0 = '響應內容 格式 %1';
+Blockly.Msg.CocoRobo_RESPONSE_TOOLTIP = '';
+
+Blockly.Msg.STRING = '字串';
+Blockly.Msg._BYTE = '二進制';
+Blockly.Msg.TEXT = '文本';
+
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_HELPURL = '';
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_MESSAGE0 = '響應屬性 %1';
+Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/board/hardware.html#CocoRobopindesc';
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP = '右鍵幫助,查看引腳宣告';
+Blockly.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0 = '設置引腳 %1 為 %2 模式 %3 並設置值為 %4';
+
+Blockly.Msg.CocoRobo_SET_PIN_IN = '輸入';
+Blockly.Msg.CocoRobo_SET_PIN_PUSH_PULL_OUT = '推挽輸出';
+Blockly.Msg.CocoRobo_SET_PIN_LEAKY_OUT = '開漏輸出';
+
+Blockly.Msg.CocoRobo_SET_PIN_NO_PULL = '無上下拉';
+Blockly.Msg.CocoRobo_SET_PIN_DOWN_PULL = '下拉';
+Blockly.Msg.CocoRobo_SET_PIN_UP_PULL = '上拉';
+
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL = '';
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0 = '綫程鎖對象 %1 請求鎖';
+Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_START_NEW_THREAD_HELPURL = '';
+Blockly.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0 = '子綫程 %1';
+Blockly.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP = '';
+
+
+Blockly.Msg.CocoRobo_UART_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_INIT_MESSAGE0 = '串口 %4 初始化 波特率 %1 tx %2 rx %3';
+Blockly.Msg.CocoRobo_UART_INIT_TOOLTIP = '教科板支持3組串口。0用於REPL,剩下1,2兩組串口可用。所有引腳皆可作爲串口的輸入RX,除 P2、P3 、P4 、P10 只能作爲輸出,其餘所有的引腳理論上都可作爲輸出 TX。';
+
+Blockly.Msg.CocoRobo_UART_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_DEINIT_MESSAGE0 = '關閉串口 %1';
+Blockly.Msg.CocoRobo_UART_DEINIT_TOOLTIP = '關閉 UART 總線';
+
+Blockly.Msg.CocoRobo_UART_WRITE_STR_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0 = '串口 %1 寫入文本 %2 %3';
+Blockly.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP = '將文本寫入總線。\n返回值:寫入或 None 超時的字節數。';
+
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_MESSAGE0 = '串口 %1 發送16進制字串 %2 %3';
+Blockly.Msg.CocoRobo_UART_WRITE_HEX_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_UART_HAS_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_HAS_DATA_MESSAGE0 = '串口 %1 有可讀數據';
+Blockly.Msg.CocoRobo_UART_HAS_DATA_TOOLTIP = '返回一個整數,計算可以無阻塞地讀取的字元數。\n如果沒有可用字元,它將返回0,如果有字元,則返回正數。\n即使有多個可讀的字元,該方法也可以返回1。';
+
+Blockly.Msg.CocoRobo_UART_READLINE_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READLINE_MESSAGE0 = '串口 %1 讀取壹欄數據';
+Blockly.Msg.CocoRobo_UART_READLINE_TOOLTIP = '讀壹欄,以換欄符結尾。\n返回值:讀取欄或 None 超時。';
+
+Blockly.Msg.CocoRobo_UART_READ_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READ_MESSAGE0 = '串口 %1 讀取數據';
+Blockly.Msg.CocoRobo_UART_READ_TOOLTIP = '讀取盡可能多的串口數據\n返回值:包含讀入字節的字節陣列。若讀取超時則返回 None。';
+
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_MESSAGE0 = '串口 %1 讀取數據 長度 %2';
+Blockly.Msg.CocoRobo_UART_READ_LENGTH_TOOLTIP = '讀取指定長度字節數據\n返回值:包含讀入字節的字節陣列。若讀取超時則返回 None。';
+
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0 = '串口 %1 寫入單字節 %2';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP = '參數為 0~255 的整數\n將字節寫入總線。\n返回值:寫入或 None 超時的字節數。';
+
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0 = '串口 %1 寫入字節陣列 %2';
+Blockly.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP = '將字節陣列寫入總線。\n返回值:寫入或 None 超時的字節數。';
+
+// 格式化字串 % 方式
+Blockly.Msg.TEXT_FORMAT_MESSAGE0 ='格式化字串 %1 % %2';
+Blockly.Msg.TEXT_FORMAT_TOOLTIP = '使用"%"的方式格式化字元串,並返回結果';
+Blockly.Msg.TEXT_FORMAT_HELPURL = '';
+
+// 格式化字串 format 方式
+Blockly.Msg.TEXT_FORMAT2_MESSAGE0 ='格式化字串 %1 format %2';
+Blockly.Msg.TEXT_FORMAT2_TOOLTIP = '使用"format"的方式格式化字元串,並返回結果';
+Blockly.Msg.TEXT_FORMAT2_HELPURL = '';
+
+Blockly.Msg.CocoRobo_BAUDRATE_HELPURL = '';
+Blockly.Msg.CocoRobo_BAUDRATE_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_BAUDRATE_TOOLTIP = '';
+
+
+Blockly.Msg.CocoRobo_HIGH_LOW_HELPURL = '';
+Blockly.Msg.CocoRobo_HIGH_LOW_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_HIGH_LOW_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL = '';
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0 = '10進制整數 %1 轉化為 %2 字串';
+Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP = '將10進制整數轉化爲%2字元串,並返回結果';
+
+Blockly.Msg.CocoRobo_BIN = '二進制';
+Blockly.Msg.CocoRobo_OCT = '八進制';
+Blockly.Msg.CocoRobo_HEX = '十六進制';
+
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL = '';
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0 = '%1 字串 %2 轉 10進制整數';
+Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP = '將%2字元串轉化爲10進制整數,並返回結果';
+
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL = '';
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0 = '10進制整數 %2 轉 %1 字節';
+Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP = '將10進制整數轉爲%1字節,並返回結果';
+
+Blockly.Msg.CocoRobo_INT_TO_CHR_HELPURL = '';
+Blockly.Msg.CocoRobo_INT_TO_CHR_MESSAGE0 = '整型 %1 轉  ASCII 單字元';
+Blockly.Msg.CocoRobo_INT_TO_CHR_TOOLTIP = 'ASCII:基於拉丁字母的壹套電腦編碼系統,主要用於顯示現代英語和其他西歐語言';
+
+Blockly.Msg.CocoRobo_CHR_TO_INT_HELPURL = '';
+Blockly.Msg.CocoRobo_CHR_TO_INT_MESSAGE0 = 'ASCII 單字元 %1 轉 整型';
+Blockly.Msg.CocoRobo_CHR_TO_INT_TOOLTIP = 'ASCII:基於拉丁字母的壹套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。';
+
+Blockly.Msg.CocoRobo_STR_TO_HEX_HELPURL = '';
+Blockly.Msg.CocoRobo_STR_TO_HEX_MESSAGE0 = '字串 %1 轉 十六進制 字節';
+Blockly.Msg.CocoRobo_STR_TO_HEX_TOOLTIP = '返回結果中用空格分隔兩個十六進制數';
+
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL = '';
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0 = '十六進制字串 %1 轉 二進制 字節';
+Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP = '十六進制字元串轉二進制字節,並返回結果';
+
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_HELPURL = '';
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0 = '%1 以 base64 格式編碼 返回字節對象';
+Blockly.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0 = '解碼 base64 數據 %1 返回字節對象';
+Blockly.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_UJSON_DUMPS_HELPURL = '';
+Blockly.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0 = '%1 轉 json 字串';
+Blockly.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP = 'JSON 格式的 key 必須是字串 ,value 可以是合法的 JSON 數據類型(字串, 數字, 對象, 陣列, 布爾值或 none)';
+
+Blockly.Msg.CocoRobo_UJSON_LOADS_HELPURL = '';
+Blockly.Msg.CocoRobo_UJSON_LOADS_MESSAGE0 = '解析 json 字串 %1 返回對象';
+Blockly.Msg.CocoRobo_UJSON_LOADS_TOOLTIP = 'JSON 格式的 key 必須是字串 ,value 可以是合法的 JSON 數據類型(字串, 數字, 對象, 陣列, 布爾值或 none)';
+
+Blockly.Msg.CocoRobo_code_annotation_HELPURL = '';
+Blockly.Msg.CocoRobo_code_annotation_MESSAGE0 = '註釋 # %1';
+Blockly.Msg.CocoRobo_code_annotation_TOOLTIP = '生成代碼註釋';
+
+/* 教科板_物聯網 */
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0 = '自定義終端部件 Terminal 虛擬管腳 V %1';
+Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_MESSAGE0 = '同步虛擬管腳狀態 V %1';
+Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_MESSAGE0 = '當 Blynk 斷開連接時';
+Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_MESSAGE0 = '當 Blynk 連接時';
+Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_MESSAGE0 = '運行 Blynk 定時器進程';
+Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_TOOLTIP = '建議放在 \'一直重複\' 中循環執行';
+
+Blockly.Msg.CocoRobo_BLYNK_RUN_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_RUN_MESSAGE0 = '運行 Blynk 進程';
+Blockly.Msg.CocoRobo_BLYNK_RUN_TOOLTIP = '建議放在 \'一直重複\' 中循環執行';
+
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_MESSAGE0 = 'Blynk APP 顯示通知 %1';
+Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLYNKTIMER_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNKTIMER_MESSAGE0 = 'Blynk 定時器 %1 %2 周期 %3 秒';
+Blockly.Msg.CocoRobo_BLYNKTIMER_TOOLTIP = '註意:\n定時器序號為自動獲取,自上而下,從0開始且連續,不可"定時器0,定時器2",此處暴露參數為方便查看!\n參數:\nno_timers_err=False - 如果所有定時器都停止,禁用異常觸發';
+
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_MESSAGE0 = '可用的 Blynk 定時器';
+Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_MESSAGE0 = '停止 Blynk 定時器 %1';
+Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_TOOLTIP = 
+    '註意:\n定時器序號為自動獲取,自上而下,從0開始且連續,不可"定時器0,定時器2",此處暴露參數為方便查看!\n參數:\nno_timers_err=False - 如果所有定時器都停止,禁用異常觸發';
+
+Blockly.Msg.CocoRobo_UART_INPUT_HELPURL = '';
+Blockly.Msg.CocoRobo_UART_INPUT_MESSAGE0 = '從串口獲取文本 提示語句 %1';
+Blockly.Msg.CocoRobo_UART_INPUT_TOOLTIP = ''
+
+Blockly.Msg.INT_TO_CHR_HELPURL = ''
+Blockly.Msg.INT_TO_CHR_MESSAGE0 = '整數 %1 轉 ASCII 單字元';
+Blockly.Msg.INT_TO_CHR_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_MESSAGE0 = '給虛擬管腳添加   屬性 %1 值 %2';
+Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_TOOLTIP = "放於 read 或 write 事件中,虛擬管腳由事件決定,與該管腳綁定的組件會擁有添加的屬性";
+
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_MESSAGE0 = '向預設郵箱發郵件 %1 主題 %2 正文 %3';
+Blockly.Msg.CocoRobo_BLYNK_EMAIL_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0 = '發送數據 %1 到 Blynk APP 的 虛擬管腳 V %2';
+Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP = '虛擬管腳:V0 ~ V255';
+
+Blockly.Msg.CocoRobo_BLYNK_SETUP_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_SETUP_MESSAGE0 = 'Blynk 設置 %1 服務器 %2 端口 %3 授權碼 %4';
+Blockly.Msg.CocoRobo_BLYNK_SETUP_TOOLTIP = '服務器可填 blynk-cloud.com 或者 blynk.cocorobo.hk\n默認端口為 8080\n註意:手機APP訪問端口為 9443';
+
+
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_HELPURL = '';
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_MESSAGE0 = '當 從 Blynk APP 收到 虛擬管腳 V %1 的值 %2 時';
+Blockly.Msg.CocoRobo_BLYNK_APP_DATA_TOOLTIP = '虛擬管腳:V0 ~ V255';
+
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_MESSAGE0 = 'OneNET 斷開連接';
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_DISCONNECT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_RECV_MESSAGE0 = '當 從 OneNET 收到消息 %1 時';
+Blockly.Msg.CocoRobo_ONENET_RECV_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_MESSAGE0 = '當 從 OneNET 收到特定消息 %1 時';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_MSG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_MESSAGE0 = '向 OneNET 發送數據流 名稱 %1 值 %2';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_MESSAGE0 = '向 OneNET 發送數據流 %1';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_DICT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_MESSAGE0 = '向 小程序 發送數據流 名稱 %1 值 %2';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_HELPURL = '';
+
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0 = '%1 hcsr04 超聲波距離 測量單位 %2';
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0 = '%1 hcsr04 超聲波(mm)';
+Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_HCSR04_OBJ_HELPURL = 'https://CocoRobo-lib.readthedocs.io/zh/master/hcsr04/index.html#hcsr04'
+Blockly.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0 = 'hcsr04 超聲波初始化  名稱 %1  trigger %2 echo %3';
+Blockly.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_PM2_5_MIC_HELPURL = ''
+Blockly.Msg.CocoRobo_PM2_5_MIC_MESSAGE0 = 'rx引腳%1 PM值濃度%2';
+Blockly.Msg.CocoRobo_PM2_5_MIC_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_HELPURL = ''
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0 = 'rx引腳%1 0.1昇空氣中直徑在%2 顆颗物個數';
+Blockly.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_MESSAGE0 = '紅外接收 %1 回調地址 %2 回調命令 %3';
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_REMOTE_RECV_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_MESSAGE0 = '紅外發送 %1 地址 %2 命令 %3';
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_HELPURL = '';
+Blockly.Msg.CocoRobo_IR_REMOTE_SEND_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ONENET_ACCEPT_MESSAGE = '收到消息';
+Blockly.Msg.CocoRobo_ONENET = 'OneNET 設置';
+Blockly.Msg.CocoRobo_ONENET_WECHAT_APP = '小程序 設置';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS = '可選教科板';
+Blockly.Msg.CocoRobo_ONENET_TITLE = 'OneNET';
+Blockly.Msg.CocoRobo_SERVER = '服務器';
+Blockly.Msg.CocoRobo_DEVICE_ID = '設備ID';
+Blockly.Msg.CocoRobo_PRODUCT_ID = '產品ID';
+Blockly.Msg.CocoRobo_API_KEY = '產品APIKey';
+Blockly.Msg.CocoRobo_ONENET_CALLBACK = '回調函數';
+Blockly.Msg.CocoRobo_TOPIC = '主題';
+Blockly.Msg.CocoRobo_ONENET_CALLBACK_TITLE = "OneNET回調函數";
+
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_MESSAGE0 = '小程序  選擇教科板應用 %1';
+Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_TOOLTIP = '';
+
+// text轉字節
+Blockly.Msg.TEXT_TO_BYTE_MESSAGE0 ='轉字節 %1';
+Blockly.Msg.TEXT_TO_BYTE_TOOLTIP = '支持數據類型:string';
+Blockly.Msg.TEXT_TO_BYTE_HELPURL = '';
+// 非文本轉字節
+Blockly.Msg.OTHER_TO_BYTE_MESSAGE0 ='非文本轉字節 %1';
+Blockly.Msg.OTHER_TO_BYTE_TOOLTIP = '';
+Blockly.Msg.OTHER_TO_BYTE_HELPURL = '';
+
+
+Blockly.Msg.CocoRobo_BYTES_DECODE_HELPURL = '';
+Blockly.Msg.CocoRobo_BYTES_DECODE_MESSAGE0 = '字節 %1 轉 字串';
+Blockly.Msg.CocoRobo_BYTES_DECODE_TOOLTIP = "返回指定字節轉字串的結果";
+
+
+Blockly.Msg.CocoRobo_ONENET_TOOLTIP = '創建OneNET連接';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_MESSAGE0 ='物聯網 確保連接到 Wi-Fi 名稱 %1 密碼 %2';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_TOOLTIP = '';
+Blockly.Msg.CocoRobo_ONENET_INIT_WIFI_HELPURL = '';
+
+
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_HELPURL = '';
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_MESSAGE0 = '儅從小程序收到消息 %1 和 %2 時';
+Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_TOOLTIP = '';
+
+/* 教科板_物聯網 */
+
+
+/* 教科板start */
+Blockly.Msg.CocoRobo_MAC_ADDRESS_HELPURL = '';
+Blockly.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0 = 'MAC 地址';
+Blockly.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_RADIO_REC_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_REC_MESSAGE0 = '無綫廣播  接收消息';
+Blockly.Msg.CocoRobo_RADIO_REC_TOOLTIP = "所接收為字節型";
+
+Blockly.Msg.CocoRobo_RADIO_SEND_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_SEND_MESSAGE0 = '無綫廣播  發送 %1';
+Blockly.Msg.CocoRobo_RADIO_SEND_TOOLTIP = "頻道: 1~13";
+
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_MESSAGE0 = '設無綫廣播  頻道為 %1';
+Blockly.Msg.CocoRobo_RADIO_CHANNEL_TOOLTIP = "頻道: 1~13";
+
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_HELPURL = '';
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_MESSAGE0 = '%1 無綫廣播';
+Blockly.Msg.CocoRobo_RADIO_ON_OFF_TOOLTIP = "頻道: 1~13";
+
+Blockly.Msg.CocoRobo_RADIO_RECV_MESSAGE0 = '當 收到無線廣播消息 %1 時';
+Blockly.Msg.CocoRobo_RADIO_RECV_TOOLTIP = "頻道: 1~13";
+Blockly.Msg.CocoRobo_RADIO_RECV_HELPURL = '';
+
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_MESSAGE0 = '當 收到特定無線廣播消息 %1 時';
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_TOOLTIP = "頻道: 1~13";
+Blockly.Msg.CocoRobo_RADIO_RECV_MSG_HELPURL = '';
+
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_MESSAGE0 = '設音頻音量 %1';
+Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_1 = '普通';
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_2 = '反轉';
+Blockly.Msg.CocoRobo_DISPCHAR_MODE_3 = '透明';
+
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_MESSAGE0 = 'TTS 語音播放 %1';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_TOOLTIP = "需要在 訊飛開放平臺 www.xfyun.cn 上開通“在線語音合成”服務";
+
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/extboard/tutorials/tutorials_parrot.html#id3';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_MESSAGE0 = 'TTS 語音配置 APPID %1 APIKey %2';
+Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_TOOLTIP = "輸入在 訊飛開放平臺 www.xfyun.cn 獲取的 APPID 與 APIKey\n註意:要設置IP白名單";
+
+Blockly.Msg.CocoRobo_AUDIO_PLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_PLAY_MESSAGE0 = '音頻 播放  %1';
+Blockly.Msg.CocoRobo_AUDIO_PLAY_TOOLTIP = "需要有源音箱\nP8 左聲道\nP9 右聲道\nGND 接地\n播放參數: \n網絡 MP3 的 url 或已上載至教科板的 MP3, 如'music_1.mp3' ";
+
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_MESSAGE0 = '音頻 釋放緩存';
+Blockly.Msg.CocoRobo_AUDIO_DEINIT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AUDIO_CMD_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_CMD_MESSAGE0 = '音頻  %1';
+Blockly.Msg.CocoRobo_AUDIO_CMD_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_AUDIO_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_AUDIO_INIT_MESSAGE0 = '音頻 初始化';
+Blockly.Msg.CocoRobo_AUDIO_INIT_TOOLTIP = '為音頻解碼開闢緩存';
+
+Blockly.Msg.CocoRobo_RECORD_INIT_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_INIT_MESSAGE0 = '測試 -- 錄音 初始化';
+Blockly.Msg.CocoRobo_RECORD_INIT_TOOLTIP = '錄音初始化。\n此功能測試中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_RECORD_DEINIT_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_DEINIT_MESSAGE0 = '測試 -- 錄音 釋放資源';
+Blockly.Msg.CocoRobo_RECORD_DEINIT_TOOLTIP = '錄音結束後釋放資源。\n此功能測試中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_RECORD_WAV_HELPURL = '';
+Blockly.Msg.CocoRobo_RECORD_WAV_MESSAGE0 = '測試 -- 錄制音頻 存儲路徑 %1 時長 %2 秒';
+Blockly.Msg.CocoRobo_RECORD_WAV_TOOLTIP = '錄制音頻,並以 WAV 格式存儲。\n此功能測試中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_ASR_HELPURL = '';
+Blockly.Msg.CocoRobo_ASR_MESSAGE0 = '測試 -- 識別語音,並返回結果';
+Blockly.Msg.CocoRobo_ASR_TOOLTIP = '語音指令需要在2秒內完成。\n此功能測試中,需要教科板v1.1以上硬件版本。';
+
+Blockly.Msg.CocoRobo_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_button_A = 'P5(按鍵A)';
+Blockly.Msg.CocoRobo_button_B = 'P11(按鍵B)';
+Blockly.Msg.CocoRobo_PIN7_RGB = 'P7(板載RGB)';
+
+Blockly.Msg.CocoRobo_PWM_PIN_P7 = 'P7 (教科板)';
+Blockly.Msg.CocoRobo_PWM_PIN_P9 = 'P9 (掌控實驗箱)';
+
+Blockly.Msg.CocoRobo_tem = '溫度';
+Blockly.Msg.CocoRobo_hum = '濕度';
+Blockly.Msg.CocoRobo_pre = '氣壓';
+Blockly.Msg.CocoRobo_left_right = '左右';
+Blockly.Msg.CocoRobo_LEFT = '左';
+Blockly.Msg.CocoRobo_RIGHT = '右';
+Blockly.Msg.CocoRobo_front_back = '前後';
+Blockly.Msg.CocoRobo_vertical = '垂直';
+Blockly.Msg.CocoRobo_horizontal = '水平';
+Blockly.Msg.CocoRobo_run_in_back = '後臺運行';
+Blockly.Msg.CocoRobo_run_in_front = '前臺運行';
+Blockly.Msg.CocoRobo_draw = '繪制';
+Blockly.Msg.CocoRobo_clear  = '清除';
+Blockly.Msg.CocoRobo_s = '秒';
+Blockly.Msg.CocoRobo_ms = '毫秒';
+Blockly.Msg.CocoRobo_us = '微秒';
+Blockly.Msg.CocoRobo_year = '年';
+Blockly.Msg.CocoRobo_month = '月';
+Blockly.Msg.CocoRobo_date = '日';
+Blockly.Msg.CocoRobo_hour = '時';
+Blockly.Msg.CocoRobo_minute = '分';
+Blockly.Msg.CocoRobo_week = '星期數';
+Blockly.Msg.CocoRobo_days = '天數';
+
+Blockly.Msg.CocoRobo_ORDER = '第';
+Blockly.Msg.CocoRobo_REVERSE_ORDER  = '倒數第';
+
+Blockly.Msg.MATH_RANDOM_RANDRANGE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP = '返回指定遞增基數集合中的一個隨機數,基數缺省值為1';
+Blockly.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0 = '隨機數 從遞增區間 [%1 ,%2) 遞增長度%3';
+
+Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL = '';
+Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP = '返回指定值保留小數點的結果';
+Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0 = '%1 保留 %2 位小數';
+
+Blockly.Msg.CocoRobo_MIN = '最小值';
+Blockly.Msg.CocoRobo_MAX = '最大值';
+Blockly.Msg.CocoRobo_LENTH = '長度';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP = '返回元組的%2';
+Blockly.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0 = '元組 %1 %2';
+
+Blockly.Msg.TUPLE_ITEM_EXIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_ITEM_EXIST_TOOLTIP= '判斷是否包含指定值,並返回True或False';
+Blockly.Msg.TUPLE_ITEM_EXIST_MESSAGE0= '元組%1 包含%2';
+
+Blockly.Msg.LIST_ITEM_EXIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LIST_ITEM_EXIST_TOOLTIP= '陣列包含特定的字串';
+Blockly.Msg.LIST_ITEM_EXIST_MESSAGE0= '陣列%1 包含%2';
+
+Blockly.Msg.PARTS_OF_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_TUPLE_TOOLTIP = '正序計數從0開始,倒序計數從1開始';
+Blockly.Msg.PARTS_OF_TUPLE_MESSAGE0 = '返回元組%1 取第%2 項到尾項';
+
+Blockly.Msg.PARTS_OF_TUPLE2_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_TUPLE2_TOOLTIP = '遞增順序取項\n舉例:\n 倒數第5到倒數第2;\n 第0到第5';
+Blockly.Msg.PARTS_OF_TUPLE2_MESSAGE0 = '返回元組%1 取%2 %3 項到 %4 %5 項';
+
+Blockly.Msg.PARTS_OF_LIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.PARTS_OF_LIST_TOOLTIP = '遞增順序取項\n舉例:\n 倒數第5到倒數第2;\n 第0到第5';
+Blockly.Msg.PARTS_OF_LIST_MESSAGE0 = '返回陣列%1 取%2 %3 項到 %4 %5 項';
+
+Blockly.Msg.LIST_TO_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LIST_TO_TUPLE_TOOLTIP = '陣列轉元組';
+Blockly.Msg.LIST_TO_TUPLE_MESSAGE0 = '陣列%1 轉元組';
+
+
+Blockly.Msg.tuple_create_with_MESSAGE0 = '定義元組 %1 = %2 ';
+Blockly.Msg.tuple_create_with_TOOLTIP = '只包含一個元素時,需要在元素後面添加逗號';
+Blockly.Msg.tuple_create_with_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.tuple_order_item_MESSAGE0 = '元組%1 %2 %3 項';
+Blockly.Msg.tuple_order_item_TOOLTIP = '正序計數從0開始,倒序計數從1開始';
+Blockly.Msg.tuple_order_item_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.LIST_ORDER_ITEM_MESSAGE0 = '陣列%1 %2 %3 項';
+Blockly.Msg.LIST_ORDER_ITEM_TOOLTIP = '正序計數從0開始,倒序計數從1開始';
+Blockly.Msg.LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.SET_LIST_ORDER_ITEM_MESSAGE0 = '設陣列%1 %2 %3 項為%4';
+Blockly.Msg.SET_LIST_ORDER_ITEM_TOOLTIP = '正序計數從0開始,倒序計數從1開始';
+Blockly.Msg.SET_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0 = '插入陣列%1 %2 %3 項為%4';
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP = '正序計數從0開始,倒序計數從1開始';
+Blockly.Msg.INSERT_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_MESSAGE0 = '設元組%1 %2 %3 項為%4';
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_TOOLTIP = '正序計數從0開始,倒序計數從1開始';
+Blockly.Msg.SET_TUPLE_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+
+Blockly.Msg.DICT_CREATE_WITH_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_CREATE_WITH_TOOLTIP = '定義一個字典';
+Blockly.Msg.DICT_CREATE_WITH_MESSAGE0 = '定義字典 %1 = %2';
+
+Blockly.Msg.SET_CREATE_WITH_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_CREATE_WITH_TOOLTIP = '定義集合';
+Blockly.Msg.SET_CREATE_WITH_MESSAGE0 = '定義集合 %1 = %2';
+
+Blockly.Msg.SET_UPDATE_WITH_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_UPDATE_WITH_TOOLTIP = '添加參數可為字串、陣列、元組、集合、字典(只添加key),已有元素則不進行操作';
+Blockly.Msg.SET_UPDATE_WITH_MESSAGE0 = '集合 %1 添加 %2';
+
+Blockly.Msg.INTERSECTION_OF_SETS_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP = '返回兩集合的%1';
+Blockly.Msg.INTERSECTION_OF_SETS_MESSAGE0 = '取 %1 集合 %2 集合 %3';
+Blockly.Msg.CocoRobo_INTERSECTION = '交集';
+Blockly.Msg.CocoRobo_UNION = '並集';
+Blockly.Msg.CocoRobo_DIFFERENCE = '差集';
+Blockly.Msg.SETS_UPDATE_WAYS_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP = '集合更新爲與指定集合的%3';
+Blockly.Msg.SETS_UPDATE_WAYS_MESSAGE0 = '集合 %1 更新為 與集合 %2 的 %3';
+Blockly.Msg.SUBSET_SUPERSET_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SUBSET_SUPERSET_TOOLTIP = '集合爲集合的%3';
+Blockly.Msg.SUBSET_SUPERSET_MESSAGE0 = '集合 %1 為集合 %2 的 %3';
+Blockly.Msg.CocoRobo_SUBSET = '子集';
+Blockly.Msg.CocoRobo_SUPERSET = '超集';
+
+Blockly.Msg.LEN_OF_SETS_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.LEN_OF_SETS_TOOLTIP = '返回指定集合的長度';
+Blockly.Msg.LEN_OF_SETS_MESSAGE0 = '集合 %1 長度';
+
+Blockly.Msg.GET_SETS_POP_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.GET_SETS_POP_TOOLTIP = '返回移除隨機項後的集合';
+Blockly.Msg.GET_SETS_POP_MESSAGE0 = '返回隨機項並移除之  從集合 %1';
+
+Blockly.Msg.CREATE_EMPTY_SET_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CREATE_EMPTY_SET_TOOLTIP = '';
+Blockly.Msg.CREATE_EMPTY_SET_MESSAGE0 = '創建空集合 %1';
+
+Blockly.Msg.BIT_INVERSION_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.BIT_INVERSION_TOOLTIP = '對數據的每個二進制位取反';
+Blockly.Msg.BIT_INVERSION_MESSAGE0 = '二進制取反 %1';
+
+
+Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP = '正序計數從0開始,倒序計數從1開始';
+
+Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_TOOLTIP = '項可為字串、已賦值變量、元組';
+
+Blockly.Msg.DICT_CREATE_WITH_ITEMS_INSERT_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_CREATE_WITH_ITEMS_INSERT_TOOLTIP = '初始化字典';
+
+
+Blockly.Msg.DICT_KEY_VALUE_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_VALUE_TOOLTIP = '返回字典指定鍵的值';
+Blockly.Msg.DICT_KEY_VALUE_MESSAGE0 = '字典%1 鍵%2 的值';
+
+Blockly.Msg.ADD_DICT_KEY_VALUE_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.ADD_DICT_KEY_VALUE_TOOLTIP = '已有該鍵則更新該鍵';
+Blockly.Msg.ADD_DICT_KEY_VALUE_MESSAGE0 = '字典%1 添加鍵%2 值%3';
+
+Blockly.Msg.DICT_LENGTH_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_LENGTH_TOOLTIP= '返回字典的長度';
+Blockly.Msg.DICT_LENGTH_MESSAGE0= '字典%1 長度';
+
+Blockly.Msg.DICT_KEY_EXIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_EXIST_TOOLTIP= '判斷字典中是否包含指定鍵,並返回True或False';
+Blockly.Msg.DICT_KEY_EXIST_MESSAGE0= '字典%1 包含鍵%2';
+
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_HELPURL= 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP= '返回字典%2的陣列';
+Blockly.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0= '字典%1 %2的陣列';
+Blockly.Msg.DICT_KEYS= '鍵';
+Blockly.Msg.DICT_VALUES= '值';
+
+
+Blockly.Msg.CocoRobo_lists_append_MESSAGE0 = '陣列%1 末尾添加項%2';
+Blockly.Msg.CocoRobo_lists_append_TOOLTIP = '陣列末尾添加項';
+Blockly.Msg.CocoRobo_lists_append_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_lists_extend_MESSAGE0 = '陣列%1 追加陣列%2';
+Blockly.Msg.CocoRobo_lists_extend_TOOLTIP = '在陣列中追加陣列';
+Blockly.Msg.CocoRobo_lists_extend_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+// Blockly.Msg.CocoRobo_lists_remove_MESSAGE0 = '陣列%1 移除第%2 項';
+// Blockly.Msg.CocoRobo_lists_remove_TOOLTIP = '從第0項開始';
+// Blockly.Msg.CocoRobo_lists_remove_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+Blockly.Msg.CocoRobo_lists_clear_MESSAGE0 = '陣列%1 清空';
+Blockly.Msg.CocoRobo_lists_clear_TOOLTIP = '清空陣列';
+Blockly.Msg.CocoRobo_lists_clear_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+
+
+Blockly.Msg.CocoRobo_Timer_value_MESSAGE0 ='定時器 %1 的計數值';
+Blockly.Msg.CocoRobo_Timer_value_TOOLTIP = '獲取並返回計時器當前計數值';
+
+Blockly.Msg.CocoRobo_Timer_deinit_MESSAGE0 ='清除 定時器/事件 %1';
+Blockly.Msg.CocoRobo_Timer_deinit_TOOLTIP = '取消定時器的初始化。停止計時器,並禁用計時器外圍設備';
+
+Blockly.Msg.CocoRobo_Interrupt_AB_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buttons.html#id3';
+Blockly.Msg.CocoRobo_Interrupt_AB_TOOLTIP = '';
+Blockly.Msg.CocoRobo_Interrupt_AB_MESSAGE0 = '當按鍵 %1 被 %2 時';
+
+Blockly.Msg.CocoRobo_Interrupt_pin_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/io/digital_io.html#id3';
+Blockly.Msg.CocoRobo_Interrupt_pin_TOOLTIP = '上升沿觸發:由低電平到高電平;下降沿觸發:由高電平到低電平';
+Blockly.Msg.CocoRobo_Interrupt_pin_MESSAGE0 = '當引腳 %1 電位 %2 時';
+Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_FALLING = '↘ 從高到低';
+Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_RISING = '↗ 從低到高';
+
+Blockly.Msg.CocoRobo_IRQ_FALLING = '按下';
+Blockly.Msg.CocoRobo_IRQ_RISING = '松開';
+Blockly.Msg.CocoRobo_PERIODIC = '重複執行';
+Blockly.Msg.CocoRobo_ONE_SHOT = '延時執行';
+
+Blockly.Msg.CocoRobo_IS_SHAKED_MESSAGE0 = '教科板 %1';
+Blockly.Msg.CocoRobo_IS_SHAKED_HELPURL = '';
+Blockly.Msg.CocoRobo_IS_SHAKED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IS_SHAKED = '被搖晃';
+Blockly.Msg.CocoRobo_IS_THROWN = '被拋起';
+
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_MESSAGE0 = '當教科板 %1 時';
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_HELPURL = '';
+Blockly.Msg.CocoRobo_SHAKE_DETECTOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_IS_TILTED_MESSAGE0 = '教科板 %1';
+Blockly.Msg.CocoRobo_IS_TILTED_HELPURL = '';
+Blockly.Msg.CocoRobo_IS_TILTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TILT_DETECTOR_MESSAGE0 = '當教科板 %1 時';
+Blockly.Msg.CocoRobo_TILT_DETECTOR_HELPURL = '';
+Blockly.Msg.CocoRobo_TILT_DETECTOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DIRECTION_FORWARD = '向前傾斜';
+Blockly.Msg.CocoRobo_DIRECTION_BACK = '向後傾斜';
+Blockly.Msg.CocoRobo_DIRECTION_RIGHT = '向右傾斜';
+Blockly.Msg.CocoRobo_DIRECTION_LEFT = '向左傾斜';
+Blockly.Msg.CocoRobo_DIRECTION_NONE = '平放';
+
+Blockly.Msg.CocoRobo_TOUCH_EVENT_MESSAGE0 = '當觸摸鍵 %1 被 %2 時';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_HELPURL = '';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_TOUCH_EVENT_PRESSED = '觸摸';
+Blockly.Msg.CocoRobo_TOUCH_EVENT_UNPRESSED = '釋放';
+
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_MESSAGE0 = '事件 %1 : 當 %2 時';
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_HELPURL = '';
+Blockly.Msg.CocoRobo_CUSTOM_EVENT_TOOLTIP = '自定義事件與定時器共用 1/2/4/7/8/9/10,不可同時占用一個端口。\n最大同時創建4個事件/定時器,如果存在沖突,請嘗試換一個編號。';
+
+Blockly.Msg.CocoRobo_music_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_music_range_pitch_TOOLTIP = '時長為單個頻率的時長';
+Blockly.Msg.CocoRobo_music_range_pitch_MESSAGE0 = '播放音調 從%1 到%2 長度%3 時長%4 毫秒  腳位 %5';
+
+Blockly.Msg.CocoRobo_neopixel_init_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_neopixel_init_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_init_MESSAGE0 = '燈帶初始化 名稱%1 腳位%2 數量%3';
+
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_TOOLTIP = '';
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_MESSAGE0 = '彩虹燈效 燈帶%1 數量 %2 亮度 %3 偏移 %4';
+
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/micropython/neopixel.html#NeoPixel.brightness';
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_TOOLTIP = '亮度調節, 範圍 0 ~ 100';
+Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_MESSAGE0 = '燈帶 %1 設置亮度為 %2';
+
+Blockly.Msg.CocoRobo_neopixel_single_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_single_MESSAGE0 = '燈帶%1 %2號 紅%3 綠%4 藍%5';
+
+Blockly.Msg.CocoRobo_neopixel_single_gui_MESSAGE0 ='燈帶 %1 %2號 顏色為 %3';
+Blockly.Msg.CocoRobo_neopixel_single_gui_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_neopixel_show_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_show_MESSAGE0 = '燈帶%1 設置生效';
+
+Blockly.Msg.CocoRobo_neopixel_off_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_off_MESSAGE0 = '燈帶%1 關閉';
+
+Blockly.Msg.CocoRobo_neopixel_all_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_all_MESSAGE0 = '燈帶%1 全亮 紅%2 綠%3 藍%4';
+
+Blockly.Msg.CocoRobo_neopixel_all_gui_TOOLTIP = '';
+Blockly.Msg.CocoRobo_neopixel_all_gui_MESSAGE0 = '燈帶%1 全亮 顏色%2';
+
+Blockly.Msg.CocoRobo_image_to_lcd_MESSAGE0 ='打開圖片 %1 寬 %2 高 %3';
+Blockly.Msg.CocoRobo_image_to_lcd_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_time_localtime_MESSAGE0 ='本地時間 %1';
+Blockly.Msg.CocoRobo_time_localtime_TOOLTIP = '星期數:返回0~6,周壹為0,周日為6\n天數:獲取當前日期是壹年中的第幾天\n建議先連接wifi並獲取網絡時間';
+
+Blockly.Msg.CocoRobo_WiFi_config_MESSAGE0 ='Wi-Fi 配置信息 %1';
+Blockly.Msg.CocoRobo_WiFi_config_TOOLTIP = 'netmask-子網掩碼;gateway-網關';
+
+Blockly.Msg.CocoRobo_time_ticks_HELPURL ='https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
+Blockly.Msg.CocoRobo_time_ticks_MESSAGE0 ='運行時間 %1';
+Blockly.Msg.CocoRobo_time_ticks_TOOLTIP = '';
+
+// Blockly.Msg.CocoRobo_Timer_MESSAGE0 ='定時器 %1 周期 %2 毫秒 模式 %3 回調函數 %4';
+Blockly.Msg.CocoRobo_Timer_MESSAGE0 ='設置定時器 %1 %2 周期 %3 毫秒';
+Blockly.Msg.CocoRobo_Timer_TOOLTIP = '創建定時器n,n=1-14。\n最大同時創建4個定時器,如果存在沖突,請嘗試換一個編號。\n3用於內部程序,\n5/6用於伺服系統和ADC,\n11用於搖晃檢測,\n12用於觸摸鍵檢測,\n13用於Radio和DHT11/DHT22定時取值(共用),\n14用於OneNET和傾斜檢測(共用),\n其余端口與自定義事件共用。';
+// Blockly.Msg.CocoRobo_Timer_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/advance/timer.html?highlight=%E5%AE%9A%E6%97%B6%E5%99%A8#id1';
+Blockly.Msg.CocoRobo_Timer_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/blocks/index.html';
+
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0 ='BME280 %1';
+Blockly.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP = '氣壓單位Pa, 溫度單位攝氏度, 環境濕度單位%';
+
+Blockly.Msg.CocoRobo_sway_xyz_MESSAGE0 ='%1 搖晃教科板';
+Blockly.Msg.CocoRobo_sway_xyz_TOOLTIP = "教科板正面朝上,觸摸鍵 'python' 靠近使用者,開始左右或前後搖晃教科板";
+
+Blockly.Msg.CocoRobo_init_bluetooth_MESSAGE0 ='初始化 藍牙名稱%1';
+Blockly.Msg.CocoRobo_init_bluetooth_TOOLTIP = '初始化 藍牙名稱';
+
+Blockly.Msg.CocoRobo_OnOff_bluetooth_MESSAGE0 ='藍牙設備%1廣播';
+Blockly.Msg.CocoRobo_OnOff_bluetooth_TOOLTIP = '藍牙設備 開啟或關閉廣播';
+
+Blockly.Msg.CocoRobo_HID_consumer_bluetooth_MESSAGE0 ='消費類設備%1 狀態%2';
+Blockly.Msg.CocoRobo_HID_consumer_bluetooth_TOOLTIP = '類比HID消費類設備的控制器,如藍牙遙控器';
+
+Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_MESSAGE0 ='鍵盤  釋放按鍵';
+Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_TOOLTIP = 'HID鍵盤設備';
+
+Blockly.Msg.CocoRobo_HID_mouse_bluetooth_MESSAGE0 ='鼠標%1';
+Blockly.Msg.CocoRobo_HID_mouse_bluetooth_TOOLTIP = '鼠標設備';
+
+Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_MESSAGE0 ='鼠標  釋放按鍵';
+Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_TOOLTIP = '鼠標設備';
+
+Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_MESSAGE0 ='鍵盤 按鍵%1';
+Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_TOOLTIP = '鍵盤設備';
+
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0 ='HID設備按鍵 %1 組合按鍵%2';
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP = '如果想使用多個按鍵組合指令,可以用“|”或運算';
+
+Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_MESSAGE0 = '滑鼠 指標移動 x%2 y%1';
+Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_TOOLTIP = '鼠標坐標x,y軸的相對位移,範圍-1023 ~ 1023';
+
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0 ='設備 按鍵 %1 組合按鍵%2';
+Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP = '鍵盤設備';
+
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_MESSAGE0 = '鍵盤 組合設備%1';
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_TOOLTIP = '如果想使用多個按鍵組合指令,可以用“|”或運算';
+Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_HELPURL = '';
+
+Blockly.Msg.CocoRobo_init_wifi_MESSAGE0 ='連接 Wi-Fi 名稱 %1 密碼 %2';
+Blockly.Msg.CocoRobo_init_wifi_TOOLTIP = '讓教科板接入Wi-Fi環境';
+
+Blockly.Msg.CocoRobo_dis_WiFi_MESSAGE0 ='斷開 Wi-Fi 連接';
+Blockly.Msg.CocoRobo_dis_WiFi_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/tutorials/basics/network/network_basics.html#ap';
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_TOOLTIP = '密碼可以為空,或者8位以上的字母或數字。\nAP模式僅用於教科板之間的相互通信,不可以作為熱點,令其它設備上網。';
+Blockly.Msg.CocoRobo_ENABLE_APWIFI_MESSAGE0 = '開啟 AP模式 名稱 %1 密碼 %2 信道 %3';
+
+Blockly.Msg.CocoRobo_disable_APWiFi_MESSAGE0 = '關閉 AP模式';
+Blockly.Msg.CocoRobo_disable_APWiFi_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ntptime_settime_MESSAGE0 = '同步網絡時間';
+Blockly.Msg.CocoRobo_ntptime_settime_TOOLTIP = 'NTP時間同步是壹種時間同步網絡技術';
+
+Blockly.Msg.CocoRobo_ntptime_timezone_E1 = "東1區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E2 = "東2區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E3 = "東3區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E4 = "東4區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E5 = "東5區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E6 = "東6區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E7 = "東7區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E8 = "東8區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E9 = "東9區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E10 = "東10區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E11 = "東11區";
+Blockly.Msg.CocoRobo_ntptime_timezone_E12 = "東12區";
+Blockly.Msg.CocoRobo_ntptime_timezone_0 = "中時區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W1 = "西1區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W2 = "西2區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W3 = "西3區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W4 = "西4區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W5 = "西5區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W6 = "西6區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W7 = "西7區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W8 = "西8區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W9 = "西9區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W10 = "西10區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W11 = "西11區";
+Blockly.Msg.CocoRobo_ntptime_timezone_W12 = "西12區";
+
+Blockly.Msg.FILE_TO_LIST_HELPURL = '';
+Blockly.Msg.FILE_TO_LIST_TOOLTIP = '讀出指定路徑的文本文件內容(僅限utf-8格式),並轉為陣列形式,以分隔符分隔。';
+Blockly.Msg.FILE_TO_LIST_MESSAGE0 = '讀取文本文件 %1 為陣列 ,以 %2 分隔';
+
+Blockly.Msg.FILE_TO_BIN_HELPURL = '';
+Blockly.Msg.FILE_TO_BIN_TOOLTIP = '以二進制格式讀出指定路徑的文件內容。';
+Blockly.Msg.FILE_TO_BIN_MESSAGE0 = '讀取文件 %1 的二進制內容';
+
+Blockly.Msg.CocoRobo_INIT_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_FILE_TOOLTIP = '初始化一個文本文件,如果文件不存在則創建文件,如果文件存在則清空內容。';
+Blockly.Msg.CocoRobo_INIT_FILE_MESSAGE0 = '初始化文本文件 %1';
+
+Blockly.Msg.CocoRobo_WRITE_FILE_HELPURL = '';
+Blockly.Msg.CocoRobo_WRITE_FILE_TOOLTIP = '向指定路徑的文本文件寫入內容,如果文件不存在則創建文件。';
+Blockly.Msg.CocoRobo_WRITE_FILE_MESSAGE0 = '向文本文件 %1 寫入內容 %2 ,以 %3 分隔';
+
+Blockly.Msg.CocoRobo_SDCARD_INIT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard';
+Blockly.Msg.CocoRobo_SDCARD_INIT_TOOLTIP = 'sck: P13\nmosi: P15\nmiso: P14\nsdcard: P16\n須確保 SPI 總線的引腳與 micro SD 卡物理連接正確,並預先使用 FAT 或 FAT32 文件系統格式化 micro SD 卡。';
+Blockly.Msg.CocoRobo_SDCARD_INIT_MESSAGE0 = '初始化 SD 卡';
+
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/sdcard.html#sdcard.SDCard';
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_TOOLTIP = '掛載 SDCard 到指定路徑。';
+Blockly.Msg.CocoRobo_SDCARD_MOUNT_MESSAGE0 = '掛載 SD 卡到路徑 %1';
+
+Blockly.Msg.CocoRobo_ENTER = '回車';
+Blockly.Msg.CocoRobo_COMMA = '逗號';
+Blockly.Msg.CocoRobo_SEMICOLON = '分號';
+Blockly.Msg.CocoRobo_SPACE = '空格';
+
+Blockly.Msg.CocoRobo_wifi_clock_MESSAGE0 = 'Wi-Fi 模擬時鐘 x %1 y %2 半徑 %3';
+Blockly.Msg.CocoRobo_wifi_clock_TOOLTIP = '需連接 Wi-Fi 使用';
+
+Blockly.Msg.CocoRobo_def_clock_MESSAGE0 = '初始化時鐘%1 x %2 y %3 半徑 %4';
+Blockly.Msg.CocoRobo_def_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_settime_clock_MESSAGE0 = '時鐘%1 讀取時間';
+Blockly.Msg.CocoRobo_settime_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_draw_clear_clock_MESSAGE0 = '%1 時鐘 %2';
+Blockly.Msg.CocoRobo_draw_clear_clock_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_tinywebio_start_MESSAGE0 = '啟動 TinyWebIO 服務 %1';
+Blockly.Msg.CocoRobo_tinywebio_start_TOOLTIP = '啟動該服務需連接Wi-Fi,TinyWebIO服務為App Inventor應用提供遠程控制接口的教科板工具包';
+
+Blockly.Msg.CocoRobo_tinywebio_client_setup_HELPURL = '';
+Blockly.Msg.CocoRobo_tinywebio_client_setup_TOOLTIP = '向服務器發布的數據項(逗號分隔)\nbuttona/b 按鍵狀態\ntouchpadp/y/t/h/o/n 觸摸按鍵值\nlight 光線值\nsound 聲音值\naccelerometer 三軸加速度值\nid 教科板標識\ntime 時間戳\npind<n> 數字IO引腳\npina<n> 模擬IO引腳\n----------\n從服務器讀取的數據項(逗號分隔)\nrgb0/1/2 RGB燈珠\noled OLCD顯示屏\nmusic 音樂\nservo<n> 伺服馬達\npind<n> 數字IO引腳\npina<n> 模擬IO引腳';
+Blockly.Msg.CocoRobo_tinywebio_client_setup_MESSAGE0 = '設置 TinyWebIO 客戶端參數 %1 TinyWebDB服務器地址 %2 向服務器發布的數據項 %3 從服務器讀取的數據項 %4 存取服務器的時間間隔(ms) %5';
+
+Blockly.Msg.CocoRobo_tinywebio_client_action_HELPURL = '';
+Blockly.Msg.CocoRobo_tinywebio_client_action_TOOLTIP = '';
+Blockly.Msg.CocoRobo_tinywebio_client_action_MESSAGE0 = '%1 TinyWebIO 客戶端';
+
+Blockly.Msg.CocoRobo_tinywebio_client_action_start = '啟動';
+Blockly.Msg.CocoRobo_tinywebio_client_action_stop = '停止';
+
+Blockly.Msg.CocoRobo_CUSTOM_CODE_HELPURL = '';
+Blockly.Msg.CocoRobo_CUSTOM_CODE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_CUSTOM_CODE_MESSAGE0 = '%1 自定義代碼 %2 %3';
+
+Blockly.Msg.CocoRobo_CUSTOM_TYPE_IMPORT = '置頂';
+Blockly.Msg.CocoRobo_CUSTOM_TYPE_NORMAL = '普通';
+
+Blockly.Msg.CocoRobo_servo_angle0_MESSAGE0 ='設置伺服馬達 %1 角度為 %2';
+Blockly.Msg.CocoRobo_servo_angle_MESSAGE0 ='設置伺服馬達 %1 角度為 %2 脈寬從 %3 到 %4 最大角度 %5';
+Blockly.Msg.CocoRobo_servo_angle_TOOLTIP = '電源線Vcc(紅色)連接擴展板電源口V,地線GND(棕色)連接擴展板地線口G,控制信號線(橙色)連接所選的擴展板引腳';
+
+Blockly.Msg.CocoRobo_dh11_hum_tem_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT';
+Blockly.Msg.CocoRobo_dh11_hum_tem_MESSAGE0 ='DHT11 %1 %2';
+Blockly.Msg.CocoRobo_dh11_hum_tem_TOOLTIP = 'DHT11上的 + 連接擴展板的電源口 V ,- 連接擴展板的地線口 G ,out 連接擴展板的引腳 0(即選引腳)';
+
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_MESSAGE0 ='DHT22 %1 %2';
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DH22_HUM_TEM_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/classic/dht11.html?highlight=DHT';
+
+Blockly.Msg.CocoRobo_music_note_MESSAGE0 ='音符 %1 %2 :  %3';
+Blockly.Msg.CocoRobo_music_note_TOOLTIP = '音符,如C4:4';
+
+// Blockly.Msg.CocoRobo_return_list_MESSAGE0 ='陣列 %1 = [ %2 ]';
+Blockly.Msg.CocoRobo_return_list_MESSAGE0 ='定義陣列 %1 = %2';
+Blockly.Msg.CocoRobo_return_list_TOOLTIP = '定義一個陣列';
+
+Blockly.Msg.CocoRobo_display_Show_MESSAGE0 ='LCD 顯示生效';
+Blockly.Msg.CocoRobo_display_Show_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_DispChar_MESSAGE0 ='顯示文本 x %1 y %2 內容 %3 模式 %4';
+Blockly.Msg.CocoRobo_display_DispChar_TOOLTIP = 'OLCD解析度128x64';
+Blockly.Msg.CocoRobo_display_DispChar_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/CocoRobo.html?highlight=lcd#lcd.DispChar';
+
+Blockly.Msg.CocoRobo_display_DispChar_5lines_MESSAGE0 ='LCD 第%1 欄顯示 %2 模式 %3';
+Blockly.Msg.CocoRobo_display_DispChar_5lines_TOOLTIP = 'OLCD解析度128x64';
+Blockly.Msg.CocoRobo_line1  = '1';
+Blockly.Msg.CocoRobo_line2 = '2';
+Blockly.Msg.CocoRobo_line3 = '3';
+Blockly.Msg.CocoRobo_line4 = '4';
+Blockly.Msg.CocoRobo_line5 = '5';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_MESSAGE0 ='LCD 清除第 %1 欄';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_TOOLTIP = 'OLCD解析度128x64';
+Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_HELPURL = '';
+Blockly.Msg.CocoRobo_display_fill_O = "初始化";
+Blockly.Msg.CocoRobo_display_fill_0 ='清空';
+Blockly.Msg.CocoRobo_display_fill_1 = '全亮';
+Blockly.Msg.CocoRobo_display_invert_0 ='黑底';
+Blockly.Msg.CocoRobo_display_invert_1 = '白底';
+Blockly.Msg.CocoRobo_display_show = '生效';
+Blockly.Msg.CocoRobo_display_fill_MESSAGE0 ='LCD 螢幕初始化';
+Blockly.Msg.GLCDD = '獲取LCD顯示器 %1';
+Blockly.Msg.CocoRobo_display_fill_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_pixel_0 ='暗';
+Blockly.Msg.CocoRobo_display_pixel_1 = '亮';
+Blockly.Msg.CocoRobo_display_pixel_MESSAGE0 ='描點 x %1 y %2 為 %3';
+Blockly.Msg.CocoRobo_display_pixel_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_hline_0 ='擦除';
+Blockly.Msg.CocoRobo_display_hline_1 = '繪制';
+Blockly.Msg.CocoRobo_display_hline_MESSAGE0 ='%1 水平線%2 x%3  y%4 長度%5';
+Blockly.Msg.CocoRobo_display_hline_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ProgressBar_MESSAGE0 ='進度條%1 x%2  y%3 寬%4 高%5 進度%6';
+Blockly.Msg.CocoRobo_ProgressBar_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_stripBar_MESSAGE0 ='柱狀條%1 x%2  y%3 寬%4 高%5 進度%6';
+Blockly.Msg.CocoRobo_stripBar_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_QR_CODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#gui.UI.qr_code';
+Blockly.Msg.CocoRobo_QR_CODE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_QR_CODE_MESSAGE0 = '在坐標 x %1 y %2 繪制二維碼 %3 尺寸 %4';
+
+Blockly.Msg.CocoRobo_DISPLAY_MODE_0 = '擦除';
+Blockly.Msg.CocoRobo_DISPLAY_MODE_1 = '繪制';
+
+Blockly.Msg.CocoRobo_DISPLAY_HOLLOW = '空心';
+Blockly.Msg.CocoRobo_DISPLAY_SOLID = '實心';
+
+Blockly.Msg.CocoRobo_DISPLAY_HVLINE_MESSAGE0 = '%1 %2 線 %3 x %4 y %5 長度 %6';
+Blockly.Msg.CocoRobo_DISPLAY_HVLINE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_MESSAGE0 = '%1 %2 矩形 %3 x %4 y %5 寬 %6 高 %7';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_MESSAGE0 = '%1 %2 圓 %3 x %4 y %5 半徑 %6';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_MESSAGE0 = '%1 %2 三角 %3 x1 %4 y1 %5 x2 %6 y2 %7 x3 %8 y3 %9';
+Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_RGB_0 = '0 #';
+Blockly.Msg.CocoRobo_RGB_1 = '1 #';
+Blockly.Msg.CocoRobo_RGB_2 = '2 #';
+Blockly.Msg.CocoRobo_RGB_ALL = '所有';
+
+Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_MESSAGE0 = '設置 %1 RGB 燈顏色為 %2';
+Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_TOOLTIP = '原生亮度的 1/30 能較好顯示色差';
+
+Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_MESSAGE0 = '設置 %1 RGB 燈顏色為 R %2 G %3 B %4';
+Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_TOOLTIP = '原生亮度的 1/30 能較好顯示色差';
+
+Blockly.Msg.CocoRobo_OFF_RGB_LIST_MESSAGE0 = '關閉 %1 RGB 燈';
+Blockly.Msg.CocoRobo_OFF_RGB_LIST_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MUSIC_PLAY_MESSAGE0 = '播放音樂 %1 腳位 %2';
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TOOLTIP = '播放內置的音樂';
+
+Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_MESSAGE0 = '播放音樂 %1 直到完成 , 腳位 %2';
+Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_TOOLTIP = '播放內置的音樂';
+
+Blockly.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO = '歌唱祖國';
+Blockly.Msg.CocoRobo_MUSIC_DONG_FANG_HONG = '東方紅';
+Blockly.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE = '彩雲追月';
+Blockly.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI = '走進新時代';
+Blockly.Msg.CocoRobo_MUSIC_MO_LI_HUA = '茉莉花';
+Blockly.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO = '沂蒙山小調';
+
+Blockly.Msg.CocoRobo_display_vline_MESSAGE0 ='%1 垂直線%2 x%3  y%4 長度%5';
+Blockly.Msg.CocoRobo_display_vline_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_line_MESSAGE0 ='%1 線%2 x1 %3  y1 %4 到  x2 %5 y2 %6';
+Blockly.Msg.CocoRobo_display_line_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_rect_MESSAGE0 ='%1 邊框%2 x %3  y %4 寬 %5 高 %6';
+Blockly.Msg.CocoRobo_display_rect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_RoundRect_MESSAGE0 ='%1 弧角邊框%2 x %3  y %4 寬 %5 高 %6 半徑%7';
+Blockly.Msg.CocoRobo_display_RoundRect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_rect_MESSAGE0 ='%1 矩形%2 x %3  y %4 寬 %5 高 %6 ';
+Blockly.Msg.CocoRobo_display_fill_rect_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_circle_MESSAGE0 ='%1 實心圓%2 x %3  y %4 半徑 %5';
+Blockly.Msg.CocoRobo_display_fill_circle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_circle_MESSAGE0 ='%1 空心圓%2 x %3  y %4 半徑 %5';
+Blockly.Msg.CocoRobo_display_circle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_triangle_MESSAGE0 ='%1 空心三角%2 x%3  y%4 x2%5  y2%6 x3%7  y3%8';
+Blockly.Msg.CocoRobo_display_triangle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_fill_triangle_MESSAGE0 ='%1 實心三角%2 x%3  y%4 x2%5  y2%6 x3%7  y3%8';
+Blockly.Msg.CocoRobo_display_fill_triangle_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_display_Bitmap_MESSAGE0 ='%1 圖像 x%2  y%3 寬%4 高%5 16進制圖像數據 %6';
+Blockly.Msg.CocoRobo_display_Bitmap_TOOLTIP = '將16進制圖像數據顯示在OLCD屏的指定位置';
+
+Blockly.Msg.CocoRobo_GET_PBM_DATA_MESSAGE0 = '獲取內置圖像 %1 模式%2';
+Blockly.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP = '支持*.pbm 或 *.bmp格式的單色圖像文件,獲取指定路徑的圖像文件數據,返回一個元組對象。';
+Blockly.Msg.CocoRobo_GET_PBM_DATA_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image';
+
+Blockly.Msg.CocoRobo_GET_PBM_DATA_CUSTOM_MESSAGE0 = '獲取自定義圖像 %1 模式%2';
+
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_MESSAGE0 = '在坐標 x %1  y %2 顯示圖像 %3';
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_TOOLTIP = '支持*.pbm 或 *.bmp格式的單色圖像文件';
+Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/cocorobo/gui.html#image';
+
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_MESSAGE0 = '在坐標 x %1  y %2 顯示圖像 %5 寬 %3 高 %4';
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_HELPURL = '';
+
+Blockly.Msg.CocoRobo_horizontal = '水平';
+Blockly.Msg.CocoRobo_vertical = '垂直';
+Blockly.Msg.CocoRobo_display_FrameBuffer_MESSAGE0 ='構建幀 陣列 %1  長 %2 寬 %3 掃描模式 %4';
+Blockly.Msg.CocoRobo_display_FrameBuffer_TOOLTIP = '用圖像模除後數據的陣列 ,創建128x64的幀緩存區,以儲存圖片幀';
+/*
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_MESSAGE0 = '在坐標 x %1  y %2 顯示數碼管字體 %3 大小 %4';
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DISPLAY_DIGIFACE_FONT_HELPURL = '';
+*/
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_11 = '仿數碼管 11畫素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_16 = '仿數碼管 16畫素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_21 = '仿數碼管 21畫素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_30 = '仿數碼管 30畫素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_44 = '仿數碼管 44畫素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_30 = '仿數碼管 斜體 30畫素';
+Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_42 = '仿數碼管 斜體 42畫素';
+Blockly.Msg.CocoRobo_FONT_DVSM_12 = 'DejaVu Sans Mono 12畫素';
+Blockly.Msg.CocoRobo_FONT_DVSM_16 = 'DejaVu Sans Mono 16畫素';
+Blockly.Msg.CocoRobo_FONT_DVSM_21 = 'DejaVu Sans Mono 21畫素';
+Blockly.Msg.CocoRobo_FONT_DVSMB_12 = 'DejaVu Sans Mono 黑體 12畫素';
+Blockly.Msg.CocoRobo_FONT_DVSMB_16 = 'DejaVu Sans Mono 黑體 16畫素';
+Blockly.Msg.CocoRobo_FONT_DVSMB_21 = 'DejaVu Sans Mono 黑體 21畫素';
+
+Blockly.Msg.CocoRobo_FONT_WRAP = '自動換欄';
+Blockly.Msg.CocoRobo_FONT_NO_WRAP = '不換欄';
+
+Blockly.Msg.CocoRobo_FACE_1 = '心形';
+Blockly.Msg.CocoRobo_FACE_2 = '心形(小)';
+Blockly.Msg.CocoRobo_FACE_3 = '高興';
+Blockly.Msg.CocoRobo_FACE_4 = '笑臉';
+Blockly.Msg.CocoRobo_FACE_5 = '傷心';
+Blockly.Msg.CocoRobo_FACE_6 = '困惑';
+Blockly.Msg.CocoRobo_FACE_7 = '生氣';
+Blockly.Msg.CocoRobo_FACE_8 = '睡著';
+Blockly.Msg.CocoRobo_FACE_9 = '驚訝';
+Blockly.Msg.CocoRobo_FACE_10 = '愚蠢';
+Blockly.Msg.CocoRobo_FACE_11 = '極妙';
+Blockly.Msg.CocoRobo_FACE_12 = '無聊';
+Blockly.Msg.CocoRobo_FACE_ROCK = '石頭';
+Blockly.Msg.CocoRobo_FACE_PAPER = '布';
+Blockly.Msg.CocoRobo_FACE_SCISSORS = '剪刀';
+Blockly.Msg.CocoRobo_FACE_ROCK_S = '石頭(小)';
+Blockly.Msg.CocoRobo_FACE_PAPER_S = '布(小)';
+Blockly.Msg.CocoRobo_FACE_SCISSORS_S = '剪刀(小)';
+
+Blockly.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0 = '在坐標 x %1 y %2 顯示 %3 以 %4 字體 %5';
+Blockly.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP = '';
+Blockly.Msg.CocoRobo_DISPLAY_FONT_HELPURL = '';
+
+Blockly.Msg.CocoRobo_front = '正向';
+Blockly.Msg.CocoRobo_reverse = '反轉';
+Blockly.Msg.CocoRobo_display_blit_MESSAGE0 ='顯示幀 坐標x  %1  y %2';
+Blockly.Msg.CocoRobo_display_blit_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_front_reverse_MESSAGE0 = '畫素點bit %1';
+Blockly.Msg.CocoRobo_front_reverse_TOOLTIP  = '用於顯示之前';
+
+Blockly.Msg.CocoRobo_images_append_MESSAGE0 ='動圖顯示 幀數%1  周期%2 長%3 寬%4';
+Blockly.Msg.CocoRobo_images_append_TOOLTIP = '上載至教科板的pbm圖片需命名為IMAGE.數字,後綴為pbm。如:IMAGE.1.pbm。幀數為7則數字為1至7';
+
+Blockly.Msg.CocoRobo_button_is_pressed_MESSAGE0 ='按鍵%1 被按下';
+Blockly.Msg.CocoRobo_button_is_pressed_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_button_both_pressed_MESSAGE0 ='AB按鍵都按下';
+Blockly.Msg.CocoRobo_button_both_pressed_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_touchPad_value_MESSAGE0 ='按鍵%1 被觸摸';
+Blockly.Msg.CocoRobo_touchPad_value_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_touchPad_value_num_MESSAGE0 ='按鍵%1 觸摸值';
+Blockly.Msg.CocoRobo_touchPad_value_num_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_digital_MESSAGE0 ='讀取引腳 %1 數字值';
+Blockly.Msg.CocoRobo_read_digital_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_DS18B20_MESSAGE0 ='DS18B20 防水溫度感應器 腳位 %1';
+Blockly.Msg.CocoRobo_read_DS18B20_TOOLTIP = '';
+Blockly.Msg.CocoRobo_read_DS18B20_HELPURL = 'http://docs.micropython.org/en/latest/esp32/quickref.html?highlight=onewire#onewire-driver';
+
+Blockly.Msg.CocoRobo_set_digital_MESSAGE0 ='設置引腳 %2 數字值為 %1';
+Blockly.Msg.CocoRobo_set_digital_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_analog_MESSAGE0 ='讀取引腳 %1 模擬值';
+Blockly.Msg.CocoRobo_read_analog_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_set_analog_MESSAGE0 ='設置引腳 %2 模擬值(PWM)為 %1';
+Blockly.Msg.CocoRobo_set_analog_TOOLTIP = '模擬輸出是透過IO引腳輸出脈寬調制信號,輸出指定的電壓值,簡稱PWM。';
+
+Blockly.Msg.CocoRobo_set_RGB_MESSAGE0 ='設置 %1 號 RGB 燈顏色為 R %2 G %3 B %4';
+Blockly.Msg.CocoRobo_set_RGB_TOOLTIP = '原生亮度的 1/30 能較好顯示色差';
+
+Blockly.Msg.CocoRobo_set_RGB_color_MESSAGE0 ='設置 %1 號 RGB 燈顏色為 %2';
+Blockly.Msg.CocoRobo_set_RGB_color_TOOLTIP = '原生亮度的 1/30 能較好顯示色差';
+
+Blockly.Msg.CocoRobo_set_RGB_all_MESSAGE0 ='設置所有 RGB 燈顏色為 R %1 G %2 B %3';
+Blockly.Msg.CocoRobo_set_RGB_all_TOOLTIP = '原生亮度的 1/30 能較好顯示色差';
+
+Blockly.Msg.CocoRobo_set_RGB_color_all_MESSAGE0 ='設置所有 RGB 燈顏色為 %1';
+Blockly.Msg.CocoRobo_set_RGB_color_all_TOOLTIP = '原生亮度的 1/30 能較好顯示色差';
+
+Blockly.Msg.CocoRobo_fresh_RGB_MESSAGE0 ='RGB 燈設置生效';
+Blockly.Msg.CocoRobo_fresh_RGB_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_off_RGB_MESSAGE0 ='關閉 RGB 燈';
+Blockly.Msg.CocoRobo_off_RGB_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_state_MESSAGE0 = '停止播放音樂';
+Blockly.Msg.CocoRobo_buzz_state_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_freq_MESSAGE0 ='播放連續音調 %1 腳位 %2';
+Blockly.Msg.CocoRobo_buzz_freq_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_buzz_tone_MESSAGE0 ='播放音調 %1';
+Blockly.Msg.CocoRobo_buzz_tone_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_TOOLTIP = '默認是教科板的P6引腳';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_MESSAGE0 = '播放音符 %1 腳位 %2';
+
+Blockly.Msg.CocoRobo_MUSIC_TONE_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_TONE_MESSAGE0 = '音調 %1';
+
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_MESSAGE0 = '音符 %1 節拍 %2';
+
+Blockly.Msg.CocoRobo_MUSIC_TICK_HELPURL  = '';
+Blockly.Msg.CocoRobo_MUSIC_TICK_TOOLTIP = '';
+Blockly.Msg.CocoRobo_MUSIC_TICK_MESSAGE0 = '節拍 %1';
+
+Blockly.Msg.CocoRobo_4_LINES_HELPURL = '';
+Blockly.Msg.CocoRobo_4_LINES_TOOLTIP = '';
+Blockly.Msg.CocoRobo_4_LINES_MESSAGE0 = '%1';
+
+Blockly.Msg.NUMBER_1 = '1';
+Blockly.Msg.NUMBER_1_2 = '1/2';
+Blockly.Msg.NUMBER_1_4 = '1/4';
+Blockly.Msg.NUMBER_2 = '2';
+Blockly.Msg.NUMBER_4 = '4';
+
+Blockly.Msg.CocoRobo_read_sound_MESSAGE0 ='聲音值';
+Blockly.Msg.CocoRobo_read_sound_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_read_light_MESSAGE0 ='光線值';
+Blockly.Msg.CocoRobo_read_light_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_accelerometer_get_MESSAGE0 ='%1 軸加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_TOOLTIP = '';
+Blockly.Msg.CocoRobo_accelerometer_get_z_MESSAGE0 ='z軸加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_z_TOOLTIP = '';
+Blockly.Msg.CocoRobo_accelerometer_get_y_MESSAGE0 ='y軸加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_y_TOOLTIP = '';
+Blockly.Msg.CocoRobo_accelerometer_get_x_MESSAGE0 ='x軸加速度';
+Blockly.Msg.CocoRobo_accelerometer_get_x_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_2G = '±2g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_4G = '±4g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_8G = '±8g';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_16G = '±16g';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_10_BIT = '10bits';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_12_BIT = '12bits';
+Blockly.Msg.CocoRobo_ACCELEROMETER_RES_14_BIT = '14bits';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_TOOLTIP = '設置加速度範圍,默認為 ±2g。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_MESSAGE0 = '設置加速度範圍為 %1';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_TOOLTIP = '設置加速度解析度,默認為 10bits。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_MESSAGE0 = '設置加速度解析度為 %1';
+
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_TOOLTIP = '校準加速度計的3個軸(x,y,z)的加速值偏差。\n壹般情況下無需校準,只有遇到加速度偏差較大時才要校準。\n x , y , z 為調整偏差值,可修正範圍為 ±1g。\n註意:校準數據斷電後不會保存。';
+Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_MESSAGE0 = '校準加速度值 %1 X軸偏差 %2 Y軸偏差 %3 Z軸偏差 %4';
+
+Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_TOOLTIP = '僅適用於教科板2.0及以上版本';
+Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_MESSAGE0 = '%1 軸 磁力';
+
+Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_TOOLTIP = '僅適用於教科板2.0及以上版本';
+Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_MESSAGE0 = '指南針方向';
+
+Blockly.Msg.CocoRobo_TILT_ANGLE_HELPURL = '';
+Blockly.Msg.CocoRobo_TILT_ANGLE_TOOLTIP = '';
+Blockly.Msg.CocoRobo_TILT_ANGLE_MESSAGE0 = '%1 軸傾斜角';
+
+Blockly.Msg.CocoRobo_random_choice_MESSAGE0 ='返回隨機項%1';
+Blockly.Msg.CocoRobo_random_choice_TOOLTIP = '以String格式,返回陣列或字串中的隨機項';
+
+Blockly.Msg.CocoRobo_i2c_init_MESSAGE0 ='初始化I2C 波特率%1';
+Blockly.Msg.CocoRobo_i2c_init_TOOLTIP = 'SCL引腳19,SDA引腳20,與內部的OLCD和加速度感應器共享I2C總線';
+
+Blockly.Msg.MACHINE_TIME_PULSE_US_HELPURL =
+    'https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.html?highlight=machine.time_pulse_us#machine.time_pulse_us';
+Blockly.Msg.MACHINE_TIME_PULSE_US_MESSAGE0 = '%1 外部 %2 電平持續時間(微秒)';
+Blockly.Msg.MACHINE_TIME_PULSE_US_TOOLTIP = "";
+
+Blockly.Msg.BYTES = '字節';
+
+Blockly.Msg.CocoRobo_dev_i2c_init_MESSAGE0 = '初始化I2C SCL %2 SDA %3 波特率 %1';
+Blockly.Msg.CocoRobo_dev_i2c_init_TOOLTIP = '';
+Blockly.Msg.CocoRobo_dev_i2c_init_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/library/micropython/machine/machine.I2C.html#machine.I2C';
+
+
+Blockly.Msg.CocoRobo_i2c_read_write_MESSAGE0 ='I2C 地址 %1 寫入 %2';
+Blockly.Msg.CocoRobo_i2c_read_write_TOOLTIP = '地址:Number\n寫入:Number、String';
+
+Blockly.Msg.CocoRobo_i2c_readfrom_MESSAGE0 ='I2C 地址 %1 讀取bytes數量 %2';
+Blockly.Msg.CocoRobo_i2c_readfrom_TOOLTIP = '地址:Number\n返回:讀取數據的 bytes 對象的字串';
+
+Blockly.Msg.CocoRobo_print_MESSAGE0 ='調試輸出 %1';
+Blockly.Msg.CocoRobo_print_TOOLTIP = '透過串口調試,輸出字串';
+
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_TOOLTIP = "";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_EMPTY_TITLE = "打印數據到圖表";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_INPUT_WITH = "打印數據到圖表";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TITLE = "數據";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TOOLTIP = "";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TITLE_ADD = "數據內容";
+Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_INIT_CHART_TOOLTIP = "";
+Blockly.Msg.CocoRobo_INIT_CHART_EMPTY_TITLE = "初始化圖表列標題";
+Blockly.Msg.CocoRobo_INIT_CHART_INPUT_WITH = "初始化圖表列標題";
+Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TITLE = "標題";
+Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TOOLTIP = "";
+Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TITLE_ADD = "數據列標題";
+Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TOOLTIP = "";
+
+
+/* MICROBIT */
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_X_MESSAGE0 = '加速度計 X 軸';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_X_TOOLTIP = '獲取加速度感應器 X 軸參數。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_X_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_x';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Y_MESSAGE0 = '加速度計 Y 軸';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Y_TOOLTIP = '獲取加速度感應器 Y 軸參數。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Y_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_y';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Z_MESSAGE0 = '加速度計 Z 軸';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Z_TOOLTIP = '獲取加速度感應器 Z 軸參數。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_Z_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_z';
+Blockly.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_MESSAGE0 = '發生過手勢 %1';
+Blockly.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_TOOLTIP = '透過返回 “真” 或者 “假” 提示自從上次檢查後是否發生過指定的手勢。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_WAS_GESTURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.was_gesture';
+Blockly.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_MESSAGE0 = '發生手勢 %1';
+Blockly.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_TOOLTIP = '透過返回 “真” 或者 “假” 表示自從現在發生指定的手勢。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_IS_GESTURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.is_gesture';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_MESSAGE0 = '獲取手勢';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_TOOLTIP = '返回發生過的手勢,同時清除以前的手勢。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_GET_GESTURES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.get_gestures';
+Blockly.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_MESSAGE0 = '當前手勢';
+Blockly.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_TOOLTIP = '返回當前手勢名稱。';
+Blockly.Msg.MICROBIT_ACCELEROMETER_CURRENT_GESTURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html#microbit.accelerometer.current_gesture';
+Blockly.Msg.MICROBIT_BUTTON_IS_PRESSED_MESSAGE0 = '按鍵 %1 已經按下';
+Blockly.Msg.MICROBIT_BUTTON_IS_PRESSED_TOOLTIP = '如果指定按鍵按下返回 “真”,否則返回 “假”。';
+Blockly.Msg.MICROBIT_BUTTON_IS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed';
+Blockly.Msg.MICROBIT_BUTTON_WAS_PRESSED_MESSAGE0 = '按鍵 %1 曾經按下';
+Blockly.Msg.MICROBIT_BUTTON_WAS_PRESSED_TOOLTIP = '如果按鍵曾經按下過返回 “真”,否則返回 “假”。';
+Blockly.Msg.MICROBIT_BUTTON_WAS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed';
+Blockly.Msg.MICROBIT_BUTTON_GET_PRESSES_MESSAGE0 = '按鍵 %1 按下過的次數';
+Blockly.Msg.MICROBIT_BUTTON_GET_PRESSES_TOOLTIP = '返回按鍵按下的總次數,然後清除計數。';
+Blockly.Msg.MICROBIT_BUTTON_GET_PRESSES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses';
+Blockly.Msg.MICROBIT_COMPASS_CALIBRATE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.calibrate';
+Blockly.Msg.MICROBIT_COMPASS_CALIBRATE_MESSAGE0 = '校正指南針';
+Blockly.Msg.MICROBIT_COMPASS_CALIBRATE_TOOLTIP = '開始校正指南針,提高精度。';
+Blockly.Msg.MICROBIT_COMPASS_IS_CALIBRATED_MESSAGE0 = '指南針已經校正';
+Blockly.Msg.MICROBIT_COMPASS_IS_CALIBRATED_TOOLTIP = '如果指南針已經校正返回 “真”,否則返回 “假”。';
+Blockly.Msg.MICROBIT_COMPASS_IS_CALIBRATED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.is_calibrated';
+Blockly.Msg.MICROBIT_COMPASS_HEADING_MESSAGE0 = '指南針方向';
+Blockly.Msg.MICROBIT_COMPASS_HEADING_TOOLTIP = '返回指南針的數值,0 - 360 度,順時針方向,正北方是 0。';
+Blockly.Msg.MICROBIT_COMPASS_HEADING_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.heading';
+Blockly.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_MESSAGE0 = '指南針磁場強度';
+Blockly.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_TOOLTIP = '返回設備周圍磁場的強度。';
+Blockly.Msg.MICROBIT_COMPASS_GET_FIELD_STRENGTH_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_field_strength';
+Blockly.Msg.MICROBIT_COMPASS_X_MESSAGE0 = '磁力 X軸';
+Blockly.Msg.MICROBIT_COMPASS_X_TOOLTIP = '返回X軸方向的磁力數值。';
+Blockly.Msg.MICROBIT_COMPASS_X_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_x';
+Blockly.Msg.MICROBIT_COMPASS_Y_MESSAGE0 = '磁力 Y軸';
+Blockly.Msg.MICROBIT_COMPASS_Y_TOOLTIP = '返回Y軸方向的磁力數值。';
+Blockly.Msg.MICROBIT_COMPASS_Y_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_y';
+Blockly.Msg.MICROBIT_COMPASS_Z_MESSAGE0 = '磁力 Z軸';
+Blockly.Msg.MICROBIT_COMPASS_Z_TOOLTIP = '返回Z軸方向的磁力數值。';
+Blockly.Msg.MICROBIT_COMPASS_Z_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/compass.html#microbit.compass.get_z';
+Blockly.Msg.MICROBIT_DISPLAY_GET_PIXEL_MESSAGE0 = '獲取第 %1 列 %2 欄 位置的亮度';
+Blockly.Msg.MICROBIT_DISPLAY_GET_PIXEL_TOOLTIP = '獲取第 X 列和 Y 欄位置 LED 的亮度。 0 (不亮),  9 (最亮)。';
+Blockly.Msg.MICROBIT_DISPLAY_GET_PIXEL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.get_pixel';
+Blockly.Msg.MICROBIT_DISPLAY_SET_PIXEL_MESSAGE0 = '設第 %1 列 %2 欄 LED 的亮度到 %3';
+Blockly.Msg.MICROBIT_DISPLAY_SET_PIXEL_TOOLTIP = '設置第 X 列 Y 欄處 LED 的亮度。0 (不亮),9 (最亮)。';
+Blockly.Msg.MICROBIT_DISPLAY_SET_PIXEL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.set_pixel';
+Blockly.Msg.MICROBIT_DISPLAY_CLEAR_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.clear';
+Blockly.Msg.MICROBIT_DISPLAY_CLEAR_MESSAGE0 = '清除顯示內容';
+Blockly.Msg.MICROBIT_DISPLAY_CLEAR_TOOLTIP = '清除全部顯示的內容 - 設置所有 LED 亮度為 0 (不亮)。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_MESSAGE0 = '顯示圖像/文本 %1';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_TOOLTIP = '顯示圖像或文本消息。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_MESSAGE0 = '以亮度 ( %1 / %2 ) 顯示圖像 %3';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_IMAGE_WITH_BRI_TOOLTIP = '以指定亮度顯示圖像。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_MESSAGE0 = '動畫顯示圖像 %1 延時 %2 毫秒。%3 等待 %4 %5 循環 %6 %7 清除 %8';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_TOOLTIP = '動畫方式顯示圖像陣列,每兩個圖像之間延時壹段時間。還可以設置等待模式、循環模式以及完成後清除螢幕。';
+Blockly.Msg.MICROBIT_DISPLAY_SHOW_ANIMATION_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.show';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_MESSAGE0 = '滾動消息 %1';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_TOOLTIP = '滾動方式顯示文字。';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_MESSAGE0 = '滾動消息 %1 延時 %2 毫秒。%3 等待 %4 %5 循環 %6 %7 等寬字體 %8';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_TOOLTIP = '滾動方式顯示文字。還可以設置等待模式、循環模式以及字體等寬。';
+Blockly.Msg.MICROBIT_DISPLAY_SCROLL_ANIMATION_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.scroll';
+Blockly.Msg.MICROBIT_DISPLAY_ON_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.on';
+Blockly.Msg.MICROBIT_DISPLAY_ON_MESSAGE0 = '打開螢幕';
+Blockly.Msg.MICROBIT_DISPLAY_ON_TOOLTIP = '打開螢幕顯示。';
+Blockly.Msg.MICROBIT_DISPLAY_OFF_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.off';
+Blockly.Msg.MICROBIT_DISPLAY_OFF_MESSAGE0 = '關閉螢幕';
+Blockly.Msg.MICROBIT_DISPLAY_OFF_TOOLTIP = '關閉螢幕顯示。';
+Blockly.Msg.MICROBIT_DISPLAY_IS_ON_MESSAGE0 = '顯示已經打開';
+Blockly.Msg.MICROBIT_DISPLAY_IS_ON_TOOLTIP = '螢幕已經打開就返回 “真”,否則返回 “假”';
+Blockly.Msg.MICROBIT_DISPLAY_IS_ON_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/display.html#microbit.display.is_on';
+Blockly.Msg.MICROBIT_IMAGE_BUILTINS_MESSAGE0 = '內置圖像 %1';
+Blockly.Msg.MICROBIT_IMAGE_BUILTINS_TOOLTIP = '選擇一個內置的圖像。';
+Blockly.Msg.MICROBIT_IMAGE_BUILTINS_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#attributes';
+Blockly.Msg.MICROBIT_IMAGE_COPY_MESSAGE0 = '復制圖像 %1';
+Blockly.Msg.MICROBIT_IMAGE_COPY_TOOLTIP = '創建參考圖像副本。';
+Blockly.Msg.MICROBIT_IMAGE_COPY_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.copy';
+Blockly.Msg.MICROBIT_IMAGE_INVERT_MESSAGE0 = '反顯圖像 %1';
+Blockly.Msg.MICROBIT_IMAGE_INVERT_TOOLTIP = '反顯圖像(負片效果)。';
+Blockly.Msg.MICROBIT_IMAGE_INVERT_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.invert';
+Blockly.Msg.MICROBIT_IMAGE_CREATE_MESSAGE0 = '創建圖像 %1 %2 %3 %4 %5 %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';
+Blockly.Msg.MICROBIT_IMAGE_CREATE_TOOLTIP = '創建新圖像。';
+Blockly.Msg.MICROBIT_IMAGE_CREATE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_MESSAGE0 = '創建圖像 %1 首個欄%2第二欄%3第三欄%4第四欄%5第五欄%6';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_TOOLTIP = '創建新圖像。';
+Blockly.Msg.MICROBIT_IMAGE_CREATE1_HELPURL = '';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_MESSAGE0 = '平移圖像 %1 %2 %3 位';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_TOOLTIP = '向特定方向移動圖像,並返回移動後的結果。';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/image.html#microbit.Image.shift_left';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_LEFT = '左移';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_RIGHT = '右移';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_UP = '上移';
+Blockly.Msg.MICROBIT_IMAGE_SHIFT_DOWN = '下移';
+Blockly.Msg.MICROBIT_MICROBIT_PANIC_MESSAGE0 = '錯誤狀態碼 %1';
+Blockly.Msg.MICROBIT_MICROBIT_PANIC_TOOLTIP = '進入錯誤模式,提示程序存在錯誤。需要重新啟動。用一個數字表示狀態碼。';
+Blockly.Msg.MICROBIT_MICROBIT_PANIC_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.panic';
+Blockly.Msg.MICROBIT_MICROBIT_RESET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.reset';
+Blockly.Msg.MICROBIT_MICROBIT_RESET_MESSAGE0 = '復位 micro:bit';
+Blockly.Msg.MICROBIT_MICROBIT_RESET_TOOLTIP = '復位 micro:bit,重新運行';
+Blockly.Msg.MICROBIT_MICROBIT_SLEEP_MESSAGE0 = '等待 %1 %2';
+Blockly.Msg.CocoRobo_MS = '毫秒';
+Blockly.Msg.CocoRobo_US = '微秒';
+
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_HELPURL = '';
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_MESSAGE0 = '返回運行時間差  開始時間 %1 結束時間 %2';
+Blockly.Msg.CocoRobo_TIME_DIFFERENCE_TOOLTIP = '測量連續調用ticks_ms()、ticks_us()間的周期';
+
+Blockly.Msg.CocoRobo_TYPE_HELPURL = '';
+Blockly.Msg.CocoRobo_TYPE_MESSAGE0 = '值 %1 的類型';
+Blockly.Msg.CocoRobo_TYPE_TOOLTIP = '返回當前值的類型';
+
+Blockly.Msg.CocoRobo_TYPE_IS_HELPURL = '';
+Blockly.Msg.CocoRobo_TYPE_IS_MESSAGE0 = '值 %1 的類型為 %2';
+Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP = '設置當前值的類型爲%2,並返回結果';
+
+Blockly.Msg.CocoRobo_EVAL_HELPURL = '';
+Blockly.Msg.CocoRobo_EVAL_MESSAGE0 = '計算運算式 %1 的結果';
+Blockly.Msg.CocoRobo_EVAL_TOOLTIP = '計算字串運算式,並返回結果';
+
+Blockly.Msg.CocoRobo_RETURN_HELPURL = '';
+Blockly.Msg.CocoRobo_RETURN_MESSAGE0 = '返回 %1';
+Blockly.Msg.CocoRobo_RETURN_TOOLTIP = '返回一個值';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_MESSAGE0 = '擴展板 馬達速度 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_M1M2_LED_ON_HELPURL = '';
+Blockly.Msg.CocoRobo_M1M2_LED_ON_MESSAGE0 = '擴展板 設燈 %1 亮度 %2';
+Blockly.Msg.CocoRobo_M1M2_LED_ON_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_HELPURL = '';
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_MESSAGE0 = '擴展板 關燈 %1';
+Blockly.Msg.CocoRobo_M1M2_LED_OFF_TOOLTIP = "";
+
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_MESSAGE0 = 'I2C數字光綫';
+Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_MESSAGE0 = 'I2C RGB 顔色 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_MESSAGE0 = 'I2C RGB 顔色';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_TOOLTIP = '以陣列形式返回';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_MESSAGE0 = 'I2C HSV 顔色 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_TOOLTIP = '色調(H),飽和度(S),明度(V)';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_MESSAGE0 = 'I2C HSV 顔色';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_TOOLTIP = '色調(H),飽和度(S),明度(V)';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_MESSAGE0 = 'I2C力感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_MESSAGE0 = 'I2C電流感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_MESSAGE0 = 'I2C電壓感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_MESSAGE0 = 'I2C磁場感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_MESSAGE0 = 'I2C PH感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_MESSAGE0 = 'I2C電匯率感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_MESSAGE0 = 'I2C氣壓感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_MESSAGE0 = 'I2C光電門感應器  撥碼 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_TOOLTIP = 'I2C地址與編碼開關的需要對應';
+
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_HELPURL = '';
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_MESSAGE0 = 'WI-FI配置信息';
+Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_TOOLTIP = '以元組形式返回所有wifi配置信息';
+
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_HELPURL = '';
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_MESSAGE0 = '已連接到 WI-FI';
+Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_MESSAGE0 ='Wi-Fi連接 語音助手 Wi-Fi 名稱 %1 密碼 %2';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_TOOLTIP = '教科板透過串口把WIF傳給語音助手';
+
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_HELPURL = '';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_TOOLTIP = '需要先在檔案系統將文件上載到板';
+Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_MESSAGE0 = '讀取 語音助手 文字檔 %1';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_MESSAGE0 = '數碼管顯示 %1';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_TOOLTIP = '-999~9999';
+
+Blockly.Msg.CocoRobo_MACHINE_RESET_HELPURL = '';
+Blockly.Msg.CocoRobo_MACHINE_RESET_MESSAGE0 = '復位';
+Blockly.Msg.CocoRobo_MACHINE_RESET_TOOLTIP = '與按下外部RESET按鍵效果壹樣';
+
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_HELPURL = '';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_MESSAGE0 = '清空數碼管';
+Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_TOOLTIP = '';
+
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6 = '默認';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_HELPURL = '';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_MESSAGE0 = '%1';
+Blockly.Msg.CocoRobo_MUSIC_PIN_P6_TOOLTIP = "";
+
+Blockly.Msg.MICROBIT_MICROBIT_SLEEP_TOOLTIP = '在進行下一個命令前,等待設定的時間。\n1秒(s) = 1,000毫秒(ms)\n1秒(s) = 1,000,000微秒(μs)\n毫秒,符號ms(millisecond)\n微秒,符號μs(microsecond)';
+Blockly.Msg.MICROBIT_MICROBIT_SLEEP_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.sleep';
+Blockly.Msg.MICROBIT_MICROBIT_RUNNING_TIME_MESSAGE0 = '運行時間';
+Blockly.Msg.MICROBIT_MICROBIT_RUNNING_TIME_TOOLTIP = '獲取開機或復位後的運行時間(毫秒)。';
+Blockly.Msg.MICROBIT_MICROBIT_RUNNING_TIME_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.running_time';
+Blockly.Msg.MICROBIT_MICROBIT_TEMPERATURE_MESSAGE0 = '溫度';
+Blockly.Msg.MICROBIT_MICROBIT_TEMPERATURE_TOOLTIP = '獲取 micro:bit 的溫度(℃)。';
+Blockly.Msg.MICROBIT_MICROBIT_TEMPERATURE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/microbit.html#microbit.temperature';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_MESSAGE0 = '播放音樂 %1 等待 %2 循環 %3 腳位 %4';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_TOOLTIP = '播放內置的音樂,可以設置等待模式和循環播放。';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#built-in-melodies';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_MESSAGE0 = '播放音調 %1 %2 延時  %3 毫秒 腳位 %4';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_TOOLTIP = '在設定的時間長度裏播放音調。';
+Blockly.Msg.MICROBIT_MUSIC_PITCH_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.pitch';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_MESSAGE0 = '腳位 %5 播放音符陣列 %1 等待 %2 %3 循環 %4';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_TOOLTIP = '播放音符陣列,如C4:4、G4:8等,音符為字串形式。默認是教科板的P6引腳';
+Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_HELPURL = 'https://CocoRobo.readthedocs.io/zh/latest/tutorials/basics/buzz.html';
+Blockly.Msg.MICROBIT_MUSIC_RESET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.reset';
+Blockly.Msg.MICROBIT_MUSIC_RESET_MESSAGE0 = '恢復音樂設置';
+Blockly.Msg.MICROBIT_MUSIC_RESET_TOOLTIP = '將所有音樂設置 (當前節拍, 音階和周期) 恢復成默認值。';
+Blockly.Msg.MICROBIT_MUSIC_STOP_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.stop';
+Blockly.Msg.MICROBIT_MUSIC_STOP_MESSAGE0 = '停止播放音樂 腳位 %1';
+Blockly.Msg.MICROBIT_MUSIC_STOP_TOOLTIP = '默認是教科板的P6引腳';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_MESSAGE0 = '設置每壹拍等同 %1 分音符,每分鐘節拍數 %2';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_TOOLTIP = '設置回放速度 (節拍)。壹定數量的滴答代表壹拍,每拍每分鐘播放次數 (BPM 每分鐘節拍)。';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_MESSAGE0 = '設置播放速度為 %1 倍';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_TOOLTIP = '4分音符為1拍,每分鐘節拍數默認120,為1倍的播放速度';
+Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.set_tempo';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_MESSAGE0 = '獲取當前節拍';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_TOOLTIP = '獲取當前節拍: 每節拍滴答數, 每分鐘節拍 (BPM)。';
+Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/music.html#music.get_tempo';
+Blockly.Msg.MICROBIT_NEOPIXEL_INITIALISE_MESSAGE0 = '使用 腳位 %1 控制, neopixel 彩燈數  %2 ';
+Blockly.Msg.MICROBIT_NEOPIXEL_INITIALISE_TOOLTIP = '控制 neopixels 彩燈。需要設定 neopixels 彩燈數量和控制腳。';
+Blockly.Msg.MICROBIT_NEOPIXEL_INITIALISE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel';
+Blockly.Msg.MICROBIT_NEOPIXEL_CLEAR_MESSAGE0 = '清除 neopixels 彩燈 %1';
+Blockly.Msg.MICROBIT_NEOPIXEL_CLEAR_TOOLTIP = '清除所有 neopixels 彩燈';
+Blockly.Msg.MICROBIT_NEOPIXEL_CLEAR_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear';
+Blockly.Msg.MICROBIT_NEOPIXEL_SHOW_MESSAGE0 = '顯示 neopixels 彩燈 %1';
+Blockly.Msg.MICROBIT_NEOPIXEL_SHOW_TOOLTIP = '顯示 / 更新全部 neopixels 彩燈。';
+Blockly.Msg.MICROBIT_NEOPIXEL_SHOW_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show';
+Blockly.Msg.MICROBIT_NEOPIXEL_SET_MESSAGE0 = 'neopixels 彩燈控制 %1 設置位置 %2 紅色 %3 綠色 %4 藍色 %5';
+Blockly.Msg.MICROBIT_NEOPIXEL_SET_TOOLTIP = '更新指定的 neopixel 彩燈的紅、綠、藍 (RGB) 顏色';
+Blockly.Msg.MICROBIT_NEOPIXEL_SET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels';
+Blockly.Msg.MICROBIT_PIN_TOUCHED_MESSAGE0 = '腳位 %1 被觸摸';
+Blockly.Msg.MICROBIT_PIN_TOUCHED_TOOLTIP = '如果引腳被觸摸將返回 “真”。';
+Blockly.Msg.MICROBIT_PIN_TOUCHED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.is_touched';
+Blockly.Msg.MICROBIT_PIN_WAS_PRESSED_MESSAGE0 = '腳位 %1 曾經被觸摸';
+Blockly.Msg.MICROBIT_PIN_WAS_PRESSED_TOOLTIP = '如果引腳曾經被觸摸將返回 “真”。';
+Blockly.Msg.MICROBIT_PIN_WAS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.was_pressed';
+Blockly.Msg.MICROBIT_PIN_GET_PRESSES_MESSAGE0 = '腳位 %1 被觸摸的次數';
+Blockly.Msg.MICROBIT_PIN_GET_PRESSES_TOOLTIP = '返回被觸摸的次數,然後清零。';
+Blockly.Msg.MICROBIT_PIN_GET_PRESSES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitTouchPin.get_presses';
+Blockly.Msg.MICROBIT_PIN_READ_ANALOG_MESSAGE0 = '讀取引腳 %1 模擬電壓';
+Blockly.Msg.MICROBIT_PIN_READ_ANALOG_TOOLTIP = '讀取引腳的模擬輸入電壓。';
+Blockly.Msg.MICROBIT_PIN_READ_ANALOG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.read_analog';
+Blockly.Msg.MICROBIT_PIN_WRITE_ANALOG_MESSAGE0 = '設置模擬量 %1 到引腳 %2';
+Blockly.Msg.MICROBIT_PIN_WRITE_ANALOG_TOOLTIP = '寫入模擬參數到指定引腳上。';
+Blockly.Msg.MICROBIT_PIN_WRITE_ANALOG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitAnalogDigitalPin.write_analog';
+Blockly.Msg.MICROBIT_PIN_READ_DIGITAL_MESSAGE0 = '讀取引腳 %1 的數字輸入';
+Blockly.Msg.MICROBIT_PIN_READ_DIGITAL_TOOLTIP = '讀取引腳的數字輸入 (真 或 假)。';
+Blockly.Msg.MICROBIT_PIN_READ_DIGITAL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.read_digital';
+Blockly.Msg.MICROBIT_PIN_WRITE_DIGITAL_MESSAGE0 = '設置數字輸出 %1 到引腳 %2';
+Blockly.Msg.MICROBIT_PIN_WRITE_DIGITAL_TOOLTIP = '寫入數字量 (真 或 假) 到指定引腳。';
+Blockly.Msg.MICROBIT_PIN_WRITE_DIGITAL_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/pin.html#microbit.MicroBitDigitalPin.write_digital';
+Blockly.Msg.MICROBIT_RADIO_ON_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.on';
+Blockly.Msg.MICROBIT_RADIO_ON_MESSAGE0 = '打開無線廣播';
+Blockly.Msg.MICROBIT_RADIO_ON_TOOLTIP = '打開無線廣播。需要明確宣告調用,因為它會消耗更多功率和占用更多記憶體。';
+Blockly.Msg.MICROBIT_RADIO_OFF_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.off';
+Blockly.Msg.MICROBIT_RADIO_OFF_MESSAGE0 = '關閉無線廣播';
+Blockly.Msg.MICROBIT_RADIO_OFF_TOOLTIP = '關閉無線廣播,節省功耗和記憶體。';
+Blockly.Msg.MICROBIT_RADIO_CONFIG_MESSAGE0 = '配置無線廣播消息長度 %1 %2 最大隊列數量 %3 %4 信道 %5 %6 廣播功率 %7 %8 地址 %9 %10 組 %11 %12 數據速率 %13';
+Blockly.Msg.MICROBIT_RADIO_CONFIG_TOOLTIP = '配置無線廣播。\n 長度指單個消息的最大長度; \n 隊列指可以存放在消息隊列中消息的數量; \n 信道指無線廣播使用的無線頻率; \n 功率指發射廣播信號的強度; \n 地址:32位值; \n 組:8位值(0-255); \n 數據速率指數據傳輸的速度。';
+Blockly.Msg.MICROBIT_RADIO_CONFIG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.config';
+Blockly.Msg.MICROBIT_RADIO_RESET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.reset';
+Blockly.Msg.MICROBIT_RADIO_RESET_MESSAGE0 = '復位無線廣播';
+Blockly.Msg.MICROBIT_RADIO_RESET_TOOLTIP = '恢復無線廣播到默認設置。';
+Blockly.Msg.MICROBIT_RADIO_SEND_STRING_MESSAGE0 = '發送消息 %1';
+Blockly.Msg.MICROBIT_RADIO_SEND_STRING_TOOLTIP = '廣播文字消息。';
+Blockly.Msg.MICROBIT_RADIO_SEND_STRING_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send';
+Blockly.Msg.MICROBIT_RADIO_SEND_BYTES_MESSAGE0 = '發送字節 %1';
+Blockly.Msg.MICROBIT_RADIO_SEND_BYTES_TOOLTIP = '廣播字節。';
+Blockly.Msg.MICROBIT_RADIO_SEND_BYTES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.send';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_MESSAGE0 = '接收消息';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_TOOLTIP = '接收消息。';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_BYTES_MESSAGE0 = '接收字節';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_BYTES_TOOLTIP = '接收字節。';
+Blockly.Msg.MICROBIT_RADIO_RECEIVE_BYTES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/radio.html#radio.receive';
+Blockly.Msg.MICROBIT_SPEECH_SAY_MESSAGE0 = '說 %1';
+Blockly.Msg.MICROBIT_SPEECH_SAY_TOOLTIP = '嘗試說英語';
+Blockly.Msg.MICROBIT_SPEECH_SAY_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/speech.html#speech.say';
+Blockly.Msg.MICROBIT_SPEECH_PRONOUNCE_MESSAGE0 = '讀 %1';
+Blockly.Msg.MICROBIT_SPEECH_PRONOUNCE_TOOLTIP = '精確發音。';
+Blockly.Msg.MICROBIT_SPEECH_PRONOUNCE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/speech.html#phonemes';
+Blockly.Msg.MICROBIT_SPEECH_SING_MESSAGE0 = '唱 %1';
+Blockly.Msg.MICROBIT_SPEECH_SING_TOOLTIP = '象機器人壹樣唱歌。';
+Blockly.Msg.MICROBIT_SPEECH_SING_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/speech.html#singing';
+
+//MENUS
+Blockly.Msg.MICROBIT_GESTURE_SHAKE = '搖晃';
+Blockly.Msg.MICROBIT_GESTURE_UP = '上';
+Blockly.Msg.MICROBIT_GESTURE_DOWN = '下';
+Blockly.Msg.MICROBIT_GESTURE_LEFT = '左';
+Blockly.Msg.MICROBIT_GESTURE_RIGHT = '右';
+Blockly.Msg.MICROBIT_GESTURE_FACE_UP = '朝上';
+Blockly.Msg.MICROBIT_GESTURE_FACE_DOWN = '朝下';
+Blockly.Msg.MICROBIT_GESTURE_FREEFAIL = '自由下落';
+Blockly.Msg.MICROBIT_IMAGE_HEART = '心形';
+Blockly.Msg.MICROBIT_IMAGE_HEART_SMALL = '心(小)';
+Blockly.Msg.MICROBIT_IMAGE_HAPPY = '高興';
+Blockly.Msg.MICROBIT_IMAGE_SMILE = '笑臉';
+Blockly.Msg.MICROBIT_IMAGE_SAD = '傷心';
+Blockly.Msg.MICROBIT_IMAGE_CONFUSED = '困惑';
+Blockly.Msg.MICROBIT_IMAGE_ANGRY = '生氣';
+Blockly.Msg.MICROBIT_IMAGE_ASLEEP = '睡著';
+Blockly.Msg.MICROBIT_IMAGE_SUPRISED = '驚訝';
+Blockly.Msg.MICROBIT_IMAGE_SILLY = '愚蠢';
+Blockly.Msg.MICROBIT_IMAGE_FABULOUS = '極妙';
+Blockly.Msg.MICROBIT_IMAGE_MEH = '無聊';
+Blockly.Msg.MICROBIT_IMAGE_YES = '是';
+Blockly.Msg.MICROBIT_IMAGE_NO = '否';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK12 = '12點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK11 = '11點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK10 = '10點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK9 = '9點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK8 = '8點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK7 = '7點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK6 = '6點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK5 = '5點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK4 = '4點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK3 = '3點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK2 = '2點';
+Blockly.Msg.MICROBIT_IMAGE_CLOCK1 = '1點';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_N = '箭頭-北';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_NE = '箭頭-東北';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_E = '箭頭-東';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_SE = '箭頭-東南';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_S = '箭頭-南';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_SW = '箭頭-西南';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_W = '箭頭-西';
+Blockly.Msg.MICROBIT_IMAGE_ARROW_NW = '箭頭-西北';
+Blockly.Msg.MICROBIT_IMAGE_TRIANGLE = '三角形';
+Blockly.Msg.MICROBIT_IMAGE_TRIANGLE_LEFT = '左三角形';
+Blockly.Msg.MICROBIT_IMAGE_CHESSBOARD = '棋盤';
+Blockly.Msg.MICROBIT_IMAGE_DIAMOND = '菱形';
+Blockly.Msg.MICROBIT_IMAGE_DIAMOND_SMALL = '菱形(小)';
+Blockly.Msg.MICROBIT_IMAGE_SQUARE = '方形';
+Blockly.Msg.MICROBIT_IMAGE_SQUARE_SMALL = '方形(小)';
+Blockly.Msg.MICROBIT_IMAGE_RABBIT = '兔子';
+Blockly.Msg.MICROBIT_IMAGE_COW = '牛';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_CROTCHET = '四分音符';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVER = '八分音符';
+Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVERS = '顫音';
+Blockly.Msg.MICROBIT_IMAGE_PITCHFORK = '叉子';
+Blockly.Msg.MICROBIT_IMAGE_XMAS = '聖誕樹';
+Blockly.Msg.MICROBIT_IMAGE_PACMAN = '吃豆人';
+Blockly.Msg.MICROBIT_IMAGE_TARGET = '目標';
+Blockly.Msg.MICROBIT_IMAGE_TSHIRT = 'T恤衫';
+Blockly.Msg.MICROBIT_IMAGE_ROLLERSKATE = '輪滑';
+Blockly.Msg.MICROBIT_IMAGE_DUCK = '鴨子';
+Blockly.Msg.MICROBIT_IMAGE_HOUSE = '房子';
+Blockly.Msg.MICROBIT_IMAGE_TORTOISE = '烏龜';
+Blockly.Msg.MICROBIT_IMAGE_BUTTERFLY = '蝴蝶';
+Blockly.Msg.MICROBIT_IMAGE_STICKFIGURE = '線條畫';
+Blockly.Msg.MICROBIT_IMAGE_GHOST = '幽靈';
+Blockly.Msg.MICROBIT_IMAGE_SWORD = '寶劍';
+Blockly.Msg.MICROBIT_IMAGE_GIRAFFE = '長頸鹿';
+Blockly.Msg.MICROBIT_IMAGE_SKULL = '頭';
+Blockly.Msg.MICROBIT_IMAGE_UMBRELLA = '傘';
+Blockly.Msg.MICROBIT_IMAGE_SNAKE = '蛇';
+Blockly.Msg.MICROBIT_IMAGE_ALL_CLOCKS = '所有時鐘';
+Blockly.Msg.MICROBIT_IMAGE_ALL_ARROWS = '所有箭頭';
+Blockly.Msg.MICROBIT_PIN_SET_SERVO_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA';
+Blockly.Msg.MICROBIT_PIN_SET_SERVO_TOOLTIP = '設置伺服馬達角度,範圍為 0 ~ 180度';
+Blockly.Msg.MICROBIT_PIN_SET_SERVO_MESSAGE0 = '設置伺服馬達 腳位 %1 角度為 %2';
+Blockly.Msg.MICROBIT_PIN_SET_MODE_HELPURL = '';
+Blockly.Msg.MICROBIT_PIN_SET_MODE_TOOLTIP = '引腳模式有三種:懸空、上拉、下拉';
+Blockly.Msg.MICROBIT_PIN_SET_MODE_MESSAGE0 = '設置引腳 %1 模式為 %2';
+Blockly.Msg.MICROBIT_PIN_MODE_NO = '懸空';
+Blockly.Msg.MICROBIT_PIN_MODE_UP = '上拉';
+Blockly.Msg.MICROBIT_PIN_MODE_DOWN = '下拉';
+
+
+//uart
+Blockly.Msg.MICROBIT_UART_INIT_MESSAGE0 = '初始化串口波特率為 %3 TX為 %1 RX為 %2';
+Blockly.Msg.MICROBIT_UART_INIT_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_INIT_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_ANY_MSG_RECEIVED_MESSAGE0 = '串口接收到數據';
+Blockly.Msg.MICROBIT_UART_READ_MSG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_READ_MSG_MESSAGE0 = '讀取串口 %1 字節';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TO_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TO_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_READ_MSG_TO_MESSAGE0 = '讀取串口 %1 字節存至 %2';
+Blockly.Msg.MICROBIT_UART_WRITE_MSG_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/uart.html';
+Blockly.Msg.MICROBIT_UART_WRITE_MSG_TOOLTIP = '';
+Blockly.Msg.MICROBIT_UART_WRITE_MSG_MESSAGE0 = '串口發送數據 %1';
+Blockly.Msg.MICROBIT_ALL_BYTES = "全部";
+Blockly.Msg.MICROBIT_ALINE_BYTES = "壹欄";
+//labplus
+Blockly.Msg.LABPLUS_BUTTON_IS_PRESSED_MESSAGE0 = '腳位 %1 被觸發';
+Blockly.Msg.LABPLUS_BUTTON_IS_PRESSED_TOOLTIP = '如果指定按鍵按下返回 “真”,否則返回 “假”。';
+Blockly.Msg.LABPLUS_BUTTON_IS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.is_pressed';
+
+Blockly.Msg.LABPLUS_BUTTON_WAS_PRESSED_MESSAGE0 = '腳位 %1 曾經被觸發';
+Blockly.Msg.LABPLUS_BUTTON_WAS_PRESSED_TOOLTIP = '如果按鍵曾經按下過返回 “真”,否則返回 “假”。';
+Blockly.Msg.LABPLUS_BUTTON_WAS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.was_pressed';
+
+Blockly.Msg.LABPLUS_BUTTON_GET_PRESSES_MESSAGE0 = '腳位 %1 被觸發過的次數';
+Blockly.Msg.LABPLUS_BUTTON_GET_PRESSES_TOOLTIP = '返回按鍵按下的總次數,然後清除計數。';
+Blockly.Msg.LABPLUS_BUTTON_GET_PRESSES_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/button.html#Button.get_presses';
+
+Blockly.Msg.LABPLUS_LED_MESSAGE0 = '設置LED燈 腳位 %2 輸出 %1';
+Blockly.Msg.LABPLUS_LED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LED_HELPURL = 'http://wiki.labplus.cn/index.php?title=LED';
+
+Blockly.Msg.LABPLUS_INFRARED_IS_TRIGGERED_MESSAGE0 = '紅外探測 腳位 %1 被觸發';
+Blockly.Msg.LABPLUS_INFRARED_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_INFRARED_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%BA%A2%E5%A4%96%E6%8E%A2%E6%B5%8B';
+
+Blockly.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_MESSAGE0 = '熱敏感應器 腳位 %1 的值';
+Blockly.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_HEAT_SENSITIVE_DETECTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%83%AD%E6%95%8F%E7%94%B5%E9%98%BB';
+
+Blockly.Msg.LABPLUS_I2C_LIGHT_SENSOR_MESSAGE0 = 'I2C數字光線感應器的值(lux)';
+Blockly.Msg.LABPLUS_I2C_LIGHT_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_I2C_LIGHT_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%95%B0%E5%AD%97%E5%85%89%E7%BA%BF';
+
+Blockly.Msg.LABPLUS_WATER_LEVEL_DETECTOR_MESSAGE0 = '水位感應器 腳位 %1 的值';
+Blockly.Msg.LABPLUS_WATER_LEVEL_DETECTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_WATER_LEVEL_DETECTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%B0%B4%E4%BD%8D';
+
+Blockly.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_MESSAGE0 = '煙霧探測器 腳位 %1 被觸發';
+Blockly.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SMOKE_DETECTOR_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE';
+
+Blockly.Msg.LABPLUS_BUZZER_FOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_BUZZER_FOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUZZER_FOR_MESSAGE0 = '以頻率 %1 激活蜂鳴器 引腳0 %2 毫秒';
+
+Blockly.Msg.LABPLUS_BUZZER_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_BUZZER_ON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUZZER_ON_MESSAGE0 = '以頻率 %1 激活蜂鳴器 引腳0';
+
+Blockly.Msg.LABPLUS_BUZZER_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_BUZZER_OFF_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUZZER_OFF_MESSAGE0 = '關閉蜂鳴器 引腳0';
+
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_MESSAGE0 = 'I2C溫濕度感應器的 %1 值';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%B8%A9%E6%B9%BF%E5%BA%A6';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_TM = '溫度';
+Blockly.Msg.LABPLUS_TM_HM_SENSOR_HM = '濕度';
+
+Blockly.Msg.LABPLUS_SET_SERVO_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%88%B5%E6%9C%BA';
+Blockly.Msg.LABPLUS_SET_SERVO_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_SERVO_MESSAGE0 = '設置伺服馬達 腳位 %1 角度為 %2';
+
+Blockly.Msg.LABPLUS_FINGERPRINT_SENSOR_MESSAGE0 = '指紋感應器 腳位 %1 驗證透過';
+Blockly.Msg.LABPLUS_FINGERPRINT_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_FINGERPRINT_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%8C%87%E7%BA%B9';
+
+Blockly.Msg.LABPLUS_SET_MOTOR_HELPURL = '';
+Blockly.Msg.LABPLUS_SET_MOTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_MOTOR_MESSAGE0 = '設置馬達 %1 方向 %2 速度 %3';
+Blockly.Msg.LABPLUS_SET_MOTOR_CLOCKWISE = '正轉';
+Blockly.Msg.LABPLUS_SET_MOTOR_ANTI_CLOCKWISE = '反轉';
+
+Blockly.Msg.LABPLUS_STOP_MOTOR_HELPURL = '';
+Blockly.Msg.LABPLUS_STOP_MOTOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_STOP_MOTOR_MESSAGE0 = '停止馬達';
+
+Blockly.Msg.LABPLUS_GET_RFID_ID_MESSAGE0 = '射頻卡 腳位 %1 驗證透過';
+Blockly.Msg.LABPLUS_GET_RFID_ID_TOOLTIP = '';
+Blockly.Msg.LABPLUS_GET_RFID_ID_HELPURL = 'http://wiki.labplus.cn/index.php?title=RFID';
+
+Blockly.Msg.LABPLUS_GET_RFID_VALUE_MESSAGE0 = '電子錢包 腳位 %1 余額';
+Blockly.Msg.LABPLUS_GET_RFID_VALUE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_GET_RFID_VALUE_HELPURL = '';
+
+Blockly.Msg.LABPLUS_SET_RFID_VALUE_MESSAGE0 = '設置電子錢包 腳位 %1 余額 %2 %3';
+Blockly.Msg.LABPLUS_SET_RFID_VALUE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_RFID_VALUE_HELPURL = '';
+Blockly.Msg.LABPLUS_SET_RFID_ADD = '增加';
+Blockly.Msg.LABPLUS_SET_RFID_MINUS = '減少';
+
+Blockly.Msg.LABPLUS_SOUND_IS_TRIGGERED_MESSAGE0 = '聲音感應器 腳位 %1 被觸發';
+Blockly.Msg.LABPLUS_SOUND_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SOUND_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%BA%A6%E5%85%8B%E9%A3%8E';
+
+Blockly.Msg.LABPLUS_USB_SWITCH_HELPURL = '';
+Blockly.Msg.LABPLUS_USB_SWITCH_TOOLTIP = '';
+Blockly.Msg.LABPLUS_USB_SWITCH_MESSAGE0 = '%1 USB開關 腳位 %2';
+Blockly.Msg.LABPLUS_USB_SWITCH_ON = '打開';
+Blockly.Msg.LABPLUS_USB_SWITCH_OFF = '關閉';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_HELPURL = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_MESSAGE0 = '%1 語音錄放器 腳位 %2';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON = '打開';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF = '關閉';
+
+Blockly.Msg.LABPLUS_RGB_INITIALISE_MESSAGE0 = '使用 腳位 %1 控制,RGB 彩燈數  %2 ';
+Blockly.Msg.LABPLUS_RGB_INITIALISE_TOOLTIP = '控制 RGB 彩燈。需要設定 neopixels 彩燈數量和控制腳。';
+Blockly.Msg.LABPLUS_RGB_INITIALISE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel';
+Blockly.Msg.LABPLUS_RGB_CLEAR_MESSAGE0 = '清除 RGB 彩燈 %1';
+Blockly.Msg.LABPLUS_RGB_CLEAR_TOOLTIP = '清除所有 RGB 彩燈';
+Blockly.Msg.LABPLUS_RGB_CLEAR_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.clear';
+Blockly.Msg.LABPLUS_RGB_SHOW_MESSAGE0 = '顯示 RGB 彩燈 %1';
+Blockly.Msg.LABPLUS_RGB_SHOW_TOOLTIP = '顯示 / 更新全部 RGB 彩燈。';
+Blockly.Msg.LABPLUS_RGB_SHOW_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#neopixel.NeoPixel.show';
+Blockly.Msg.LABPLUS_RGB_SET_MESSAGE0 = 'RGB 彩燈控制 %1 設置位置 %2 紅色 %3 綠色 %4 藍色 %5';
+Blockly.Msg.LABPLUS_RGB_SET_TOOLTIP = '更新指定的 RGB 彩燈的紅、綠、藍 (RGB) 顏色';
+Blockly.Msg.LABPLUS_RGB_SET_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/neopixel.html#using-neopixels';
+
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_MESSAGE0 = '設置擴展端口 IO %1 為 %2';
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_TOOLTIP = '0表示輸出引腳,1表示輸入引腳';
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95';
+
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_INPUT = '輸入';
+Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_OUTPUT = '輸出';
+
+Blockly.Msg.LABPLUS_READ_EXTENDED_PIN_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95';
+Blockly.Msg.LABPLUS_READ_EXTENDED_PIN_TOOLTIP = '';
+Blockly.Msg.LABPLUS_READ_EXTENDED_PIN_MESSAGE0 = '讀取擴展端口值 IO %1'
+
+Blockly.Msg.LABPLUS_WRITE_EXTENDED_PIN_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%AB%AF%E5%8F%A3%E6%89%A9%E5%B1%95';
+Blockly.Msg.LABPLUS_WRITE_EXTENDED_PIN_TOOLTIP = '';
+Blockly.Msg.LABPLUS_WRITE_EXTENDED_PIN_MESSAGE0 = '設置擴展端口 IO %1 值為 %2';
+
+Blockly.Msg.LABPLUS_I2C_ULTRASONIC_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%B6%85%E5%A3%B0%E6%B3%A2';
+Blockly.Msg.LABPLUS_I2C_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.LABPLUS_I2C_ULTRASONIC_MESSAGE0 = 'I2C超聲波感應器的值';
+
+Blockly.Msg.MICROBIT_SET_MUSIC_PIN_HELPURL = '';
+Blockly.Msg.MICROBIT_SET_MUSIC_PIN_TOOLTIP = '';
+Blockly.Msg.MICROBIT_SET_MUSIC_PIN_MESSAGE0 = '設置默認蜂鳴器引腳為 %1';
+
+Blockly.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E4%BA%BA%E4%BD%93%E6%84%9F%E5%BA%94';
+Blockly.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_HUMAN_DETECTOR_IS_TRIGGERED_MESSAGE0 = '人體感應 腳位 %1 被觸發';
+
+Blockly.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%97%A8%E7%A3%81%E5%BC%80%E5%85%B3';
+Blockly.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MAGNETIC_SWITCH_IS_TRIGGERED_MESSAGE0 = '門磁開關 腳位 %1 被觸發';
+
+Blockly.Msg.LABPLUS_SOUND_LEVEL_SENSOR_HELPURL = '';
+Blockly.Msg.LABPLUS_SOUND_LEVEL_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SOUND_LEVEL_SENSOR_MESSAGE0 = '聲音感應器 腳位 %1 的值';
+
+Blockly.Msg.LABPLUS_SMOKE_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%83%9F%E9%9B%BE';
+Blockly.Msg.LABPLUS_SMOKE_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SMOKE_SENSOR_MESSAGE0 = '煙霧感應器 腳位 %1 的值';
+
+Blockly.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E5%9C%9F%E5%A3%A4%E6%B9%BF%E5%BA%A6';
+Blockly.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SOIL_MOISTURE_SENSOR_MESSAGE0 = '土壤濕度感應器 腳位 %1 的值';
+
+Blockly.Msg.LABPLUS_FAN_SWITCH_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%8E%92%E9%A3%8E%E6%89%87';
+Blockly.Msg.LABPLUS_FAN_SWITCH_TOOLTIP = '';
+Blockly.Msg.LABPLUS_FAN_SWITCH_MESSAGE0 = '%1 風扇 腳位 %2';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON_MESSAGE0 = '打開錄放器 %1 腳位 %2';
+Blockly.Msg.LABPLUS_VOICE_RECORD_PLAY = '播放';
+Blockly.Msg.LABPLUS_VOICE_RECORD_REC = '錄音';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF_MESSAGE0 = '關閉錄放器 腳位 %1';
+
+
+Blockly.Msg.LABPLUS_MOTOR_ON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_ON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_ON_MESSAGE0 = '打開直流馬達 %1 速度 %2 腳位 %3';
+Blockly.Msg.LABPLUS_MOTOR_ON_CLOCKWISE = '正轉';
+Blockly.Msg.LABPLUS_MOTOR_ON_ANTICLOCKWISE = '反轉';
+
+Blockly.Msg.LABPLUS_MOTOR_OFF_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_OFF_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_OFF_MESSAGE0 = '停止直流馬達 腳位 %1';
+
+Blockly.Msg.LABPLUS_READ_COLOR_FROM_I2C_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%A2%9C%E8%89%B2';
+Blockly.Msg.LABPLUS_READ_COLOR_FROM_I2C_TOOLTIP = '';
+Blockly.Msg.LABPLUS_READ_COLOR_FROM_I2C_MESSAGE0 = 'I2C顏色感應器讀取並儲存顏色';
+
+Blockly.Msg.LABPLUS_RGB_COLOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=RGB_LED';
+Blockly.Msg.LABPLUS_RGB_COLOR_TOOLTIP = '讀取已儲存的顏色';
+Blockly.Msg.LABPLUS_RGB_COLOR_MESSAGE0 = 'RGB顏色 %1';
+
+Blockly.Msg.LABPLUS_SET_I2C_DIGITS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1';
+Blockly.Msg.LABPLUS_SET_I2C_DIGITS_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_DIGITS_MESSAGE0 = '設置I2C數碼管的值為 %1';
+
+Blockly.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%95%B0%E7%A0%81%E7%AE%A1';
+Blockly.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_TOOLTIP = '';
+Blockly.Msg.LABPLUS_TURN_OFF_I2C_DIGITS_MESSAGE0 = '關閉I2C數碼管';
+
+Blockly.Msg.LABPLUS_UART_SET_MIDI_MELODIC_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_MELODIC_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_MELODIC_MESSAGE0 = '設置MIDI模組音調為 %1';
+
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_MESSAGE0 = 'MIDI模組 %2 音符 %1';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Do = 'Do';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Re = 'Re';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Mi = 'Mi';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Fa = 'Fa';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Sol = 'Sol';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_La = 'La';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE_Si = 'Si';
+Blockly.Msg.LABPLUS_UART_PLAY_MIDI_NOTE = '播放';
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE = '停止';
+
+
+
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_OFF_MIDI_NOTE_MESSAGE0 = 'MIDI模組停止播放音符 %1';
+
+Blockly.Msg.LABPLUS_UART_INIT_MIDI_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E5%AD%90%E7%90%B4';
+Blockly.Msg.LABPLUS_UART_INIT_MIDI_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_INIT_MIDI_MESSAGE0 = '初始化MIDI模組 %1';
+
+Blockly.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E5%BE%AA%E8%BF%B9';
+Blockly.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LINE_FOLLOWER_IS_TRIGGERED_MESSAGE0 = '循跡感應器 腳位 %1 檢測為黑';
+
+Blockly.Msg.LABPLUS_TEMPERATURE_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=LM35%E6%B8%A9%E5%BA%A6';
+Blockly.Msg.LABPLUS_TEMPERATURE_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_TEMPERATURE_SENSOR_MESSAGE0 = 'LM35溫度感應器 腳位 %1 的值';
+
+Blockly.Msg.LABPLUS_ROTATE_DIMMER_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%97%8B%E9%92%AE%E7%94%B5%E4%BD%8D%E5%99%A8';
+Blockly.Msg.LABPLUS_ROTATE_DIMMER_TOOLTIP = '';
+Blockly.Msg.LABPLUS_ROTATE_DIMMER_MESSAGE0 = '旋轉電位器 腳位 %1 的值';
+
+Blockly.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9C%87%E5%8A%A8';
+Blockly.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SHAKE_DETECTOR_IS_TRIGGERED_MESSAGE0 = '震動感應器 腳位 %1 被觸發';
+
+Blockly.Msg.LABPLUS_LASER_SWITCH_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%BF%80%E5%85%89%E5%8F%91%E5%B0%84';
+Blockly.Msg.LABPLUS_LASER_SWITCH_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LASER_SWITCH_MESSAGE0 = '%1 激光開關 腳位 %2';
+
+Blockly.Msg.LABPLUS_4BUTTON_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E5%9B%9B%E6%8C%89%E9%94%AE';
+Blockly.Msg.LABPLUS_4BUTTON_TOOLTIP = '';
+Blockly.Msg.LABPLUS_4BUTTON_MESSAGE0 = '四向按鍵模組 腳位 %1 按鍵 %2 被按下';
+Blockly.Msg.BLUE = 'A';
+Blockly.Msg.GREEN = 'B';
+Blockly.Msg.RED = 'C';
+Blockly.Msg.YELLOW = 'D';
+
+Blockly.Msg.LABPLUS_JOYSTICK_HELPURL = '';
+Blockly.Msg.LABPLUS_JOYSTICK_TOOLTIP = '';
+Blockly.Msg.LABPLUS_JOYSTICK_MESSAGE0 = '搖桿 引腳A0 %1 引腳A1 %2   %3 軸的值';
+
+Blockly.Msg.LABPLUS_UART_MP3_PLAY_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE';
+Blockly.Msg.LABPLUS_UART_MP3_PLAY_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_MP3_PLAY_MESSAGE0 = 'MP3模組(UART)播放第 %1 首音樂';
+
+Blockly.Msg.LABPLUS_UART_MP3_SET_VOLUME_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE';
+Blockly.Msg.LABPLUS_UART_MP3_SET_VOLUME_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_MP3_SET_VOLUME_MESSAGE0 = '設置MP3模組(UART)音量為 %1';
+
+Blockly.Msg.LABPLUS_UART_MP3_SET_STATUS_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE';
+Blockly.Msg.LABPLUS_UART_MP3_SET_STATUS_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_MP3_SET_STATUS_MESSAGE0 = '設置MP3模組(UART)狀態為 %1';
+Blockly.Msg.PAUSE = '暫停';
+Blockly.Msg.STOP = '停止';
+Blockly.Msg.PLAY = '繼續播放';
+Blockly.Msg.PLAYNEXT = '下壹首';
+Blockly.Msg.PLAYPREV = '上壹首';
+
+Blockly.Msg.LABPLUS_UART_INIT_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_INIT_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_INIT_MESSAGE0 = '初始化串口波特率為 %3 TX為 %1 RX為 %2';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_ON1_MESSAGE0 = '打開錄放器 %1 %2 引腳REC %3 引腳PLAY %4';
+
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%AF%AD%E9%9F%B3%E5%BD%95%E6%94%BE';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_VOICE_RECORD_OFF1_MESSAGE0 = '關閉錄放器 %1 引腳REC %2 引腳PLAY %3';
+
+Blockly.Msg.LABPLUS_MOTOR_ON1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_ON1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_ON1_MESSAGE0 = '打開直流馬達 %1 速度 %2 引腳AIN1 %3 引腳AIN2 %4';
+
+Blockly.Msg.LABPLUS_MOTOR_OFF1_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8';
+Blockly.Msg.LABPLUS_MOTOR_OFF1_TOOLTIP = '';
+Blockly.Msg.LABPLUS_MOTOR_OFF1_MESSAGE0 = '停止直流馬達 %1 引腳AIN1 %2 引腳AIN2 %3';
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CURSOR_MESSAGE0 = '設置LCD遊標位置%1 X %2 Y %3';
+
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_PRINT_MESSAGE0 = '設置LCD顯示 %1';
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_TOOLTIP = '配合循環次數使用';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_MESSAGE0 = '%1滾動LCD顯示內容';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_ALEFT = '向左';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_SCROLL_RIGHTWARD = '向右';
+
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_HELPURL = 'http://wiki.labplus.cn/index.php?title=1602_LCD';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LCD1602_CLEAR_MESSAGE0 = '清除LCD顯示內容';
+
+Blockly.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_ANY_MSG_RECEIVED_MESSAGE0 = '%1 接收到數據';
+Blockly.Msg.BLUEBIT_UART = '串口';
+Blockly.Msg.BLUEBIT_INFRARED_SIGNAL = '紅外信號';
+Blockly.Msg.BLUEBIT_BLUEBOOTH = '藍牙';
+Blockly.Msg.LABPLUS_UART_READ_MSG_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_READ_MSG_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_READ_MSG_MESSAGE0 = '讀取 %1 數據';
+Blockly.Msg.LABPLUS_UART_WRITE_MSG_HELPURL = 'http://wiki.labplus.cn/index.php?title=Bluebit';
+Blockly.Msg.LABPLUS_UART_WRITE_MSG_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_WRITE_MSG_MESSAGE0 = '%1 發送數據 %2';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE0 = '設置點陣 %1 首個欄顯示%2 第二欄顯示%3 第三欄顯示%4 第四欄顯示%5 第五欄顯示%6 第六欄顯示%7 第七欄顯示%8 第八欄顯示%9 ';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_MESSAGE2 = '設置點陣 %1 %2 %3 %4 %5 %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 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 %53 %54 %55 %56 %57 %58 %59 %60 %61 %62 %63 %64 %65 %66 %67 %68 %69 %70 %71 %72';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E7%82%B9%E9%98%B5';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_SET_I2C_LED_MATRIX_CLEAR_MESSAGE0 = '清空點陣';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_HELPURL = 'http://wiki.labplus.cn/index.php?title=LCD';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_MESSAGE0 = '設置OLCD屏 %1 X %2 Y %3 顯示文本 %4 字體為 %5';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_HELPURL = 'http://wiki.labplus.cn/index.php?title=LCD';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_MESSAGE0 = '在OLCD屏上擦除矩陣 %1 X1 %2 Y1 %3 X2 %4 Y2 %5';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_MESSAGE0 = '清空OLCD屏';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_HELPURL = 'http://wiki.labplus.cn/index.php?title=LCD';
+Blockly.Msg.LABPLUS_UART_SET_OLCD_CLEAR_ALL_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LIGHT_SENSOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E6%A8%A1%E6%8B%9F%E5%85%89%E7%BA%BF';
+Blockly.Msg.LABPLUS_LIGHT_SENSOR_TOOLTIP = '';
+Blockly.Msg.LABPLUS_LIGHT_SENSOR_MESSAGE0 = '模擬光線感應器 腳位 %1 的值';
+Blockly.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_TOOLTIP = '';
+Blockly.Msg.LABPLUS_BUTTON_MODULE_IS_PRESSED_MESSAGE0 = '按鍵模組 腳位 %1 被按下';
+
+Blockly.Msg.MICROBIT_EXT2_SET_SERVO_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_SET_SERVO_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_SET_SERVO_MESSAGE0 = '設置伺服馬達 %1 的角度為 %2';
+Blockly.Msg.MICROBIT_EXT2_SET_MOTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_SET_MOTOR_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_SET_MOTOR_MESSAGE0 = '設置馬達 %1 方向 %2 速度 %3';
+Blockly.Msg.MICROBIT_EXT2_STOP_MOTOR_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_STOP_MOTOR_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_STOP_MOTOR_MESSAGE0 = '停止馬達 %1';
+Blockly.Msg.MICROBIT_EXT2_SOUND_VALUE_MESSAGE0 = '聲音感應器的值';
+Blockly.Msg.MICROBIT_EXT2_SOUND_VALUE_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_SOUND_VALUE_TOOLTIP = '';
+Blockly.Msg.MICROBIT_EXT2_LIGHT_VALUE_MESSAGE0 = '光線感應器的值';
+Blockly.Msg.MICROBIT_EXT2_LIGHT_VALUE_HELPURL = 'http://wiki.labplus.cn/index.php?title=Extend:bit%E2%85%A1';
+Blockly.Msg.MICROBIT_EXT2_LIGHT_VALUE_TOOLTIP = '';
+
+Blockly.Msg.MICROBIT_INIT_I2C_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_INIT_I2C_TOOLTIP = '';
+Blockly.Msg.MICROBIT_INIT_I2C_MESSAGE0 = '初始化I2C 頻率 %1 引腳SDA %2 引腳SCL %3';
+Blockly.Msg.MICROBIT_I2C_READ_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_I2C_READ_TOOLTIP = '';
+Blockly.Msg.MICROBIT_I2C_READ_MESSAGE0 = 'I2C讀取從地址 %1 讀取 %2 字節';
+Blockly.Msg.MICROBIT_I2C_WRITE_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_I2C_WRITE_TOOLTIP = '';
+Blockly.Msg.MICROBIT_I2C_WRITE_MESSAGE0 = 'I2C寫入 %2 到地址 %1';
+Blockly.Msg.MICROBIT_CONVERT_BYTEARRAY_HELPURL = 'https://microbit-micropython.readthedocs.io/en/latest/i2c.html';
+Blockly.Msg.MICROBIT_CONVERT_BYTEARRAY_TOOLTIP = '';
+Blockly.Msg.MICROBIT_CONVERT_BYTEARRAY_MESSAGE0 = '轉bytearray %1';
+
+Blockly.Msg.BOTBIT_MOTOR_ON_HELPURL = '';
+Blockly.Msg.BOTBIT_MOTOR_ON_TOOLTIP = '範圍:-2000~2000';
+Blockly.Msg.BOTBIT_MOTOR_ON_MESSAGE0 = '設置機器人 %1 右輪速度為 %2 左輪速度為 %3';
+Blockly.Msg.BOTBIT_MOTOR_LEFT = '左';
+Blockly.Msg.BOTBIT_MOTOR_RIGHT = '右';
+Blockly.Msg.BOTBIT_SERVO_UP = '上方';
+Blockly.Msg.BOTBIT_SERVO_DOWN = '下方';
+Blockly.Msg.BOTBIT_MOTOR_FORWARD = '前進';
+Blockly.Msg.BOTBIT_MOTOR_BACKWARD = '後退';
+
+Blockly.Msg.BOTBIT_HOLDBALL_HELPURL = '';
+Blockly.Msg.BOTBIT_HOLDBALL_TOOLTIP = '';
+Blockly.Msg.BOTBIT_HOLDBALL_MESSAGE0 = '雙臂抱起';
+
+Blockly.Msg.BOTBIT_STEERING_ENGINEL_HELPURL = '';
+Blockly.Msg.BOTBIT_STEERING_ENGINEL_TOOLTIP = '角度範圍為-45°~45°';
+Blockly.Msg.BOTBIT_STEERING_ENGINEL_MESSAGE0 = '獲取 %1臂 速度';
+
+Blockly.Msg.BOTBIT_STEERING_ENGINET_MESSAGE0 = '獲取 %1臂 傾斜角';
+Blockly.Msg.X = 'X:';
+Blockly.Msg.Y = 'Y:';
+
+Blockly.Msg.W = '寬:';
+Blockly.Msg.H = '高:';
+Blockly.Msg.BOTBIT_SERVO_Y = 'Y軸伺服馬達';
+Blockly.Msg.BOTBIT_SERVO_X = 'X軸伺服馬達';
+Blockly.Msg.BOTBIT_SERVO_Z = 'Z軸伺服馬達';
+Blockly.Msg.BOTBIT_STEERING_ENGINE_LEG_HELPURL = '';
+Blockly.Msg.BOTBIT_STEERING_ENGINE_LEG_TOOLTIP = '角度範圍為-45°~45°';
+Blockly.Msg.BOTBIT_STEERING_ENGINE_LEG_MESSAGE0 = '設置 %1腿 %2伺服馬達的角度為 %3';
+
+Blockly.Msg.BOTBIT_UPDATEPOSITION_HELPURL = '';
+Blockly.Msg.BOTBIT_UPDATEPOSITION_TOOLTIP = '';
+Blockly.Msg.BOTBIT_UPDATEPOSITION_MESSAGE0 = '刷新伺服馬達角度';
+
+Blockly.Msg.BOTBIT_ULTRASONIC_HELPURL = '';
+Blockly.Msg.BOTBIT_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.BOTBIT_ULTRASONIC_MESSAGE0 = '超聲波感應器的值';
+
+Blockly.Msg.BOTBIT_WALKING_HELPURL = '';
+Blockly.Msg.BOTBIT_WALKING_TOOLTIP = '周期越短, 速度越快, 推薦1000~2000';
+Blockly.Msg.BOTBIT_WALKING_MESSAGE0 = '舞步(walking) 步數%2 周期%3 方向%1 ';
+Blockly.Msg.BOTBIT_WALKING_FORWARD = '前';
+Blockly.Msg.BOTBIT_WALKING_BACK = '後';
+
+Blockly.Msg.BOTBIT_MOONWALKER_HELPURL = '';
+Blockly.Msg.BOTBIT_MOONWALKER_TOOLTIP = '推薦周期1000~2000, 幅度10~50';
+Blockly.Msg.BOTBIT_MOONWALKER_MESSAGE0 = '舞步(moonwalker) 步數%2 周期%3 幅度%4 方向%1 ';
+Blockly.Msg.BOTBIT_MOONWALKER_L = '左';
+Blockly.Msg.BOTBIT_MOONWALKER_R = '右';
+
+Blockly.Msg.BOTBIT_CRUSAITO_HELPURL = '';
+Blockly.Msg.BOTBIT_CRUSAITO_TOOLTIP = '推薦步數2~10, 幅度10~50';
+Blockly.Msg.BOTBIT_CRUSAITO_MESSAGE0 = '舞步(crusaito) 步數%2 周期%3 幅度%4 方向%1';
+Blockly.Msg.BOTBIT_CRUSAITO_CW = '逆時針';
+Blockly.Msg.BOTBIT_CRUSAITO_ANTICW = '順時針';
+
+Blockly.Msg.BOTBIT_FLAPPING_HELPURL = '';
+Blockly.Msg.BOTBIT_FLAPPING_TOOLTIP = '推薦步數5~15, 幅度10~30, 周期1000~2000';
+Blockly.Msg.BOTBIT_FLAPPING_MESSAGE0 = '舞步(flapping) 步數%2 周期%3 幅度%4 方向%1';
+Blockly.Msg.BOTBIT_FLAPPING_FORWARD = '前';
+Blockly.Msg.BOTBIT_FLAPPING_BACK = '後';
+
+Blockly.Msg.BOTBIT_HOME_HELPURL = '';
+Blockly.Msg.BOTBIT_HOME_TOOLTIP = '';
+Blockly.Msg.BOTBIT_HOME_MESSAGE0 = '機器人舞步初始化';
+
+Blockly.Msg.LABPLUS_UART_SET_MIDI_VOL_HELPURL = 'http://wiki.labplus.cn/index.php?title=MIDI(%E7%94%B5%E5%AD%90%E7%90%B4)';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_VOL_TOOLTIP = '';
+Blockly.Msg.LABPLUS_UART_SET_MIDI_VOL_MESSAGE0 = '設置MIDI模組音量為 %1';
+
+//映射數字範圍,放在math目錄裏
+Blockly.Msg.labplus_mapping_MESSAGE0 = '映射%1 從%2 , %3到%4 , %5'
+Blockly.Msg.labplus_mapping_TOOLTIP = '將0~100中的10映射到0~200中並返回映射值'
+Blockly.Msg.labplus_mapping_HELPURL = ''
+
+
+Blockly.Msg.JOINT_MIDI_PIANO = "平臺鋼琴"; //Acoustic Grand Piano
+Blockly.Msg.JOINT_MIDI_BRIGHTACOUSTICPIANO = "亮音鋼琴";
+Blockly.Msg.JOINT_MIDI_ELECTRICGRANDPIANO = "電鋼琴";
+Blockly.Msg.JOINT_MIDI_HARPSICHORD = "大鍵琴";
+Blockly.Msg.JOINT_MIDI_Celesta = "鋼片琴";
+Blockly.Msg.JOINT_MIDI_Glockenspiel = "鐘琴";
+Blockly.Msg.JOINT_MIDI_Musicalbox = "音樂盒";
+Blockly.Msg.JOINT_MIDI_Marimba = "馬林巴琴";
+Blockly.Msg.JOINT_MIDI_Xylophone = "木琴";
+Blockly.Msg.JOINT_MIDI_TubularBell = "管鐘";
+Blockly.Msg.JOINT_MIDI_Dulcimer = "洋琴";
+Blockly.Msg.JOINT_Vibraphone = "顫音琴"; //Vibraphone
+Blockly.Msg.JOINT_MIDI_ORGAN = "音栓風琴"; //Drawbar Organ
+Blockly.Msg.JOINT_Acoustic_Guitar = "木吉他"; //Acoustic Guitar
+Blockly.Msg.JOINT_Electric_Guitar = "電吉他"; //Electric Guitar
+Blockly.Msg.JOINT_Acoustic_Bass = "民謠貝斯";  //Acoustic Bass
+Blockly.Msg.JOINT_String_Ensemble = "弦樂合奏";  //String Ensemble
+Blockly.Msg.JOINT_Violin = "小提琴";  //Violin
+Blockly.Msg.JOINT_Trumpet = "小號";  //Trumpet
+Blockly.Msg.JOINT_Sax = "薩克斯";  //Sax
+Blockly.Msg.JOINT_Steel_Drums = "鋼鼓";  //Steel Drums
+Blockly.Msg.JOINT_Lead = "合成音主旋律";  //Lead
+Blockly.Msg.JOINT_Pad = "合成音襯底";  //Pad
+
+Blockly.Msg.LABPLUS_PLAY_BUZZER_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_PLAY_BUZZER_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_PLAY_BUZZER_NOTE_MESSAGE0 ='播放音調 %1';
+
+Blockly.Msg.Carbit_init_MESSAGE0 = 'CarBit初始化';
+Blockly.Msg.Carbit_init_TOOLTIP = '';
+Blockly.Msg.Carbit_init_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+
+Blockly.Msg.Carbit_setLeftMotor_MESSAGE0 = 'B2馬達速度 %1';
+Blockly.Msg.Carbit_setLeftMotor_TOOLTIP = '範圍:-100~100';
+Blockly.Msg.Carbit_setLeftMotor_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+
+Blockly.Msg.Carbit_setRightMotor_MESSAGE0 = 'B1馬達速度 %1';
+Blockly.Msg.Carbit_setRightMotor_TOOLTIP = '範圍:-100~100';
+Blockly.Msg.Carbit_setRightMotor_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+
+Blockly.Msg.Carbit_analog_light_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_analog_light_TOOLTIP = 'Q3對應Pin1,Q4對應Pin2';
+Blockly.Msg.Carbit_analog_light_MESSAGE0 = '%1 模擬光線的值';
+
+Blockly.Msg.Carbit_Speed_U10_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_Speed_U10_TOOLTIP = '對應U10';
+Blockly.Msg.Carbit_Speed_U10_MESSAGE0 = '左輪速度';
+
+Blockly.Msg.Carbit_Speed_U11_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_Speed_U11_TOOLTIP = '對應U11';
+Blockly.Msg.Carbit_Speed_U11_MESSAGE0 = '右輪速度';
+
+Blockly.Msg.Carbit_Distance_HELPURL= 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_Distance_TOOLTIP= '';
+Blockly.Msg.Carbit_Distance_MESSAGE0= '超聲波的值';
+
+Blockly.Msg.Carbit_tracking_HELPURL = 'http://wiki.labplus.cn/index.php?title=Car:bit';
+Blockly.Msg.Carbit_tracking_TOOLTIP = '';
+Blockly.Msg.Carbit_tracking_MESSAGE0 = '循跡參數 %1 直行速度 %2 最大限速 %3 轉彎延時 %5 轉彎速度系數 %4 ';
+/* 教科板end */
+/* Blockly.Msg.LABPLUS_OFF_BUZZER_NOTE_HELPURL = 'http://wiki.labplus.cn/index.php?title=%E8%9C%82%E9%B8%A3%E5%99%A8';
+Blockly.Msg.LABPLUS_OFF_BUZZER_NOTE_TOOLTIP = '';
+Blockly.Msg.LABPLUS_OFF_BUZZER_NOTE_MESSAGE0 = '蜂鳴器%1關閉音調 %2' */
+
+
+/* Blockly.Msg.JOINT_Bass_Drum = "大鼓";  //Bass Drum
+Blockly.Msg.JOINT_Snare_Drum = "小鼓";  //Snare Drum
+Blockly.Msg.JOINT_Closed_Hi_hat = "閉合開合鈸";  //Closed Hi-hat
+Blockly.Msg.JOINT_Open_Hi_hat = "開放開合鈸";  //Open Hi-hat
+Blockly.Msg.JOINT_Low_Tom = "低音筒鼓";  //Low Tom
+Blockly.Msg.JOINT_High_Tom = "高音筒鼓";  //High Tom
+Blockly.Msg.JOINT_Tambourine = "鈴鼓";  //Tambourine
+Blockly.Msg.JOINT_Crash_Cymbal = "強音鈸";  //Crash Cymbal
+Blockly.Msg.JOINT_Ride_Cymbal = "打點鈸";  //Ride Cymbal
+Blockly.Msg.JOINT_Mute_High_Conga = "高音康加鼓";  //Mute High Conga
+Blockly.Msg.JOINT_Low_Conga = "低音康加鼓";  //Low Conga
+Blockly.Msg.JOINT_Maracas = "沙錘";  //Maracas
+Blockly.Msg.JOINT_Claves = "擊木";  //Claves */
+
+
+
+
+//新tts
+Blockly.Msg.XUNFEI_SPEECH_TTS_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_TTS_TOOLTIP = '合成音頻文件格式只能是 *.pcm';
+Blockly.Msg.XUNFEI_SPEECH_TTS_MESSAGE0 = '[訊飛語音] 合成音頻 %1 APPID %2 APISecret %3 APIKey %4 文字內容 %5 轉存為音頻文件 %6';
+
+Blockly.Msg.XUNFEI_SPEECH_IAT_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_TOOLTIP = '可識別的音頻格式有 *.pcm 與 *.wav';
+Blockly.Msg.XUNFEI_SPEECH_IAT_MESSAGE0 = '[訊飛語音] 識別音頻 %1 APPID %2 APISecret %3 APIKey %4 待識別音頻文件 %5';
+
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_HELPURL = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_TOOLTIP = '';
+Blockly.Msg.XUNFEI_SPEECH_IAT_RESULT_MESSAGE0 = '[訊飛語音] 識別結果';
+
+
+//宣告python 運行環境
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_HELPURL = '';
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_MESSAGE0 = '宣告python 運行環境';
+Blockly.Msg.CocoRobo_NAME_PYTHON_ENVIRONMENT_TOOLTIP = '';
+
+//lark
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_MESSAGE0 = 'I2C獲取顔色';
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_TOOLTIP = '返回陣列';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_MESSAGE0 = 'I2C獲取 %1';
+Blockly.Msg.CocoRobo_lARK_RED = '紅色';
+Blockly.Msg.CocoRobo__LARK_GREEN = '綠色';
+Blockly.Msg.CocoRobo__LARK_BLUE = '藍色';
+
+Blockly.Msg.CocoRobo_LARK_GET_ALL_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARKT_GET_ALL_COLOR_HSV_MESSAGE0 = 'I2C獲取HSV';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_HSV_MESSAGE0 = 'i2C獲取HSV %1';
+
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_COLOR_STRING_MESSAGE0 = 'I2C獲取顔色';
+
+Blockly.Msg.CocoRobo_LARK_DISCERN_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_DISCERN_COLOR_MESSAGE0 = '獲取 %1';
+Blockly.Msg.CocoRobo_LARK_RED = '紅色';
+Blockly.Msg.CocoRobo_LARK_GREEN = '綠色';
+Blockly.Msg.CocoRobo_LARK_BLUE = '藍色';
+Blockly.Msg.CocoRobo_LARK_ORANGE = '橙色';
+Blockly.Msg.CocoRobo_LARK_YELLOW = '黃色';
+Blockly.Msg.CocoRobo_LARK_PURPLE = '紫色';
+Blockly.Msg.CocoRobo_LARK_CYAN = '青色';
+Blockly.Msg.CocoRobo_LARK_NONE = '無色';
+Blockly.Msg.CocoRobo_LARK_NULL = '無法獲取';
+
+Blockly.Msg.CocoRobo_LARK_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_ULTRASONIC_MESSAGE0 = 'I2C超聲波';
+
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0 = 'I2C設置 %1 速度 %2';
+
+Blockly.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_ON_I2C_MESSAGE0 = 'I2C獲取 %1 巡綫值';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_RIGHT_ON_I2C = '右邊';
+Blockly.Msg.CocoRobo_LARK_GET_LINE_LEFT_ON_I2C = '左邊';
+
+Blockly.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_SEARCH_LINE_ON_I2C_MESSAGE0 = 'I2C循跡感應器 %1 遇到黑綫';
+Blockly.Msg.CocoRobo_LARK_SEARCH_LEFT = '左邊';
+Blockly.Msg.CocoRobo_LARK_SEARCH_RIGHT = '右邊';
+Blockly.Msg.CocoRobo_LARK_SEARCH_BOTH = '兩邊都';
+Blockly.Msg.CocoRobo_LARK_SEARCH_NONE = '兩邊都無';
+
+
+///千裏馬
+Blockly.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_TOOLTIP = 'Returns as list';
+Blockly.Msg.CocoRobo_LARK__CAR_GET_ALL_COLOR_MESSAGE0 = '千裏馬獲取顔色';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_MESSAGE0 = '千裏馬獲取 %1';
+Blockly.Msg.CocoRobo_lARK_CAR_RED = '紅色';
+Blockly.Msg.CocoRobo__LARK_CAR_GREEN = '綠色';
+Blockly.Msg.CocoRobo__LARK_CAR_BLUE = '藍色';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_ALL_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARKT_CAR_GET_ALL_COLOR_HSV_MESSAGE0 = '千裏馬獲取HSV';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_TOOLTIP = 'HSV(Hue, Saturation, Value)';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_HSV_MESSAGE0 = '千裏馬HSV %1';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_COLOR_STRING_MESSAGE0 = '千裏馬識別顔色';
+
+Blockly.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_DISCERN_COLOR_MESSAGE0 = '千裏馬獲取 %1';
+Blockly.Msg.CocoRobo_LARK_CAR_RED = '紅色';
+Blockly.Msg.CocoRobo_LARK_CAR_GREEN = '綠色';
+Blockly.Msg.CocoRobo_LARK_CAR_BLUE = '藍色';
+Blockly.Msg.CocoRobo_LARK_CAR_ORANGE = '橙色';
+Blockly.Msg.CocoRobo_LARK_CAR_YELLOW = '黃色';
+Blockly.Msg.CocoRobo_LARK_CAR_PURPLE = '紫色';
+Blockly.Msg.CocoRobo_LARK_CAR_CYAN = '青色';
+Blockly.Msg.CocoRobo_LARK_CAR_NONE = '無識別';
+Blockly.Msg.CocoRobo_LARK_CAR_NULL = '識別錯誤';
+
+Blockly.Msg.CocoRobo_LARK_CAR_ULTRASONIC_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_ULTRASONIC_MESSAGE0 = '千裏馬獲取超聲波';
+
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_ON_I2C_MESSAGE0 = '千裏馬獲取 %1 循跡數值';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_RIGHT_ON_I2C = '右邊';
+Blockly.Msg.CocoRobo_LARK_CAR_GET_LINE_LEFT_ON_I2C = '左邊';
+
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LINE_ON_I2C_MESSAGE0 = '千裏馬循跡 %1 碰到黑綫';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_LEFT = '左邊';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_RIGHT = '右邊';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_BOTH = '兩邊';
+Blockly.Msg.CocoRobo_LARK_CAR_SEARCH_NONE = '兩邊都沒有';
+
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_TOOLTIP = '';
+Blockly.Msg.CocoRobo_LARK_MOTOR_SET_I2C_MESSAGE0 = '千裏馬 %1  速度 %2';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_LEFT = '左轉';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_RIGHT = '右轉';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_FORWARD = '前進';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_BACKWARD = '後退';
+Blockly.Msg.CocoRobo_LARK_CAR_MOTION_STOP = '停止';
+
+Blockly.Msg.Math_Degrad_RAD_TOOLTIP = "返回轉換角度爲弧度的結果";
+Blockly.Msg.Math_Degrad_DEG_TOOLTIP = "返回轉換弧度爲角度的結果";
+
+Blockly.Msg.Text_Split_String_By_Delimiter_TOOLTIP = "將字元串使用分隔符進行拆分並生成陣列";
+
+Blockly.Msg.Text_List_TOOLTIP = "初始化陣列[0,0,0]";
+Blockly.Msg.Text_Dict_TOOLTIP = "初始化字典";
+Blockly.Msg.Text_Tuple_TOOLTIP = "初始化元組";
+Blockly.Msg.Text_Set_TOOLTIP = "初始化集合";
+Blockly.Msg.Iot_System_Run_TOOLTIP = "運行指定路徑的程序文件";
+Blockly.Msg.Esp32_Main_Controller_Io_From_Digital_Pin_TOOLTIP = "返回%1獲取特定引腳的數字信號數值";
+Blockly.Msg.Esp32_Main_Controller_Io_Set_Digital_Pin_TOOLTIP = "%1設置特定引腳爲指定電平";
+Blockly.Msg.Esp32_Main_Controller_Io_Set_Analog_Pin_TOOLTIP = "IoT模組設置引腳,並控制%1的模擬輸出";
+Blockly.Msg.Ai_Main_Controller_Io_Set_Analog_Pin_TOOLTIP = "A.I.模組設置引腳,並控制%1的模擬輸出";
+Blockly.Msg.Esp32_Main_Controller_Io_From_Analog_Pin_TOOLTIP = "IoT模組獲取特定引腳的模擬信號數值";
+Blockly.Msg.Esp32_Main_Controller_Io_High_Low_TOOLTIP = "返回%1";
+Blockly.Msg.esp32_main_controller_io_analog_pin_1_TOOLTIP = "返回A.I. 模組引腳 #%1";
+Blockly.Msg.esp32_main_controller_io_analog_pin_2_TOOLTIP = "返回IoT 模組引腳 #%1";
+Blockly.Msg.Iot_System_Create_TOOLTIP = "創建指定名字的文本文件";
+Blockly.Msg.Iot_System_Write_TOOLTIP = "創建指定名字的文本文件,並寫入內容,以%1爲分隔符";
+Blockly.Msg.Iot_System_Input_TOOLTIP = "讀取指定名字的文本文件爲列表,並以%1爲分隔符";
+Blockly.Msg.Esp32_Get_Current_Date_TOOLTIP = "獲取本地時間的%1";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Init_TOOLTIP = "%1初始化計時器";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Get_Current_TOOLTIP = "%1獲取計時器已過時間";
+Blockly.Msg.Esp32_Main_Controller_Time_Timer_Clear_TOOLTIP = "%1清除計時器";
+Blockly.Msg.Esp32_Main_Controller_Time_Period_Timer_TOOLTIP = "%1啓用週期重複計時器,並隔一定的時間運行指定的條件";
+Blockly.Msg.Esp32_Main_Controller_Time_Period_Timer_Clear_TOOLTIP = "%1清除週期重複計時器";
+Blockly.Msg.serial_Comm_Print_TOOLTIP = "串口打印";
+Blockly.Msg.Serial_Write_Data_TOOLTIP = "使用%1透過序列埠傳送資料至其他設備";
+Blockly.Msg.Serial_Read_Data_Setup_TOOLTIP = "使用%1透過序列埠獲取其他設備傳送的資料初始化";
+Blockly.Msg.Serial_Read_Data_all_TOOLTIP = "獲取串口的數據並存儲到serial_data中";
+Blockly.Msg.Serial_Read_Data_TOOLTIP = "從serial_data獲取接收到串列埠資料中的某一位資料";
+Blockly.Msg.Serial_Send_Data_To_Microbit_TOOLTIP = "在%1模組上載送資料至Microbit";
+Blockly.Msg.Trd_Party_Sensor_Hcsr04_TOOLTIP = "%1初始化超聲波感應器";
+Blockly.Msg.Trd_Party_Sensor_Hcsr04_Read_TOOLTIP = "讀取來自特定超聲波感應器的距離檢測數值,並返回";
+Blockly.Msg.Esp32_Main_Controller_Led_Strip_Setup_TOOLTIP = "%1初始化LED燈帶";
+Blockly.Msg.Esp32_Main_Controller_Led_strip_set_bright_TOOLTIP = "設置LED燈帶亮度";
+Blockly.Msg.Iot_Led_Matrix_Color_Picker_TOOLTIP = "將十六進制顏色碼轉換成RGB顏色值,並返回";
+Blockly.Msg.Led_Strip_Color_Rgb_TOOLTIP = "返回RGB顏色值";
+Blockly.Msg.Esp32_Main_Controller_Led_Strip_Set_TOOLTIP = "%1點亮LED燈帶";
+Blockly.Msg.Led_Strip_Show_Above_TOOLTIP = "%1使燈帶顯示以上效果";
+
+// IoT
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Pressed_TOOLTIP = "當按鈕%1按下時";
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Released_TOOLTIP = "當按鈕%1鬆開時";
+Blockly.Msg.Esp32_Main_Controller_Button_Read_Value_TOOLTIP = "讀取按鈕%1的電平狀態";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Touched_TOOLTIP = "當觸摸區域%1被觸摸時";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Untouched_TOOLTIP = "當觸摸區域%1未被觸摸時";
+Blockly.Msg.Esp32_Main_Controller_Touch_Read_Value_TOOLTIP = "獲取觸摸區域%1的電容變化數值";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Turnon_TOOLTIP = "設置點亮指定的LED燈";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Turnoff_TOOLTIP = "設置關閉指定的LED燈";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_On_TOOLTIP = "點亮指定的LED燈";
+Blockly.Msg.Esp32_Main_Controller_Set_Led_Drawpixel_Off_TOOLTIP = "熄滅指定的LED燈";
+Blockly.Msg.Esp32_Main_Controller_Set_Buzzer_TOOLTIP = "蜂鳴器設置音調頻率";
+Blockly.Msg.Esp32_Main_Controller_Turn_Off_Buzzer_TOOLTIP = "關閉蜂鳴器";
+Blockly.Msg.Esp32_Main_Controller_Get_Environmental_Value_TOOLTIP = "獲取%1數值(獲取數值時間要大於1秒)";
+Blockly.Msg.Esp32_Main_Controller_Motion_When_Shaking_STATEMENT_TOOLTIP = "當模組%1搖晃狀態時,執行操作";
+Blockly.Msg.Esp32_Main_Controller_Motion_When_Tilting_STATEMENT_TOOLTIP= "當模組%1傾斜時,執行操作";
+Blockly.Msg.Esp32_Main_Controller_Motion_Acceleration_TOOLTIP= "獲取%1軸的加速度";
+Blockly.Msg.Esp32_Main_Controller_Motion_Rotation_Measurement_TOOLTIP = "獲取%1軸的旋轉測量值";
+Blockly.Msg.Esp32_Main_Controller_Motion_Tilt_Angle_TOOLTIP= "獲取%1軸的傾斜角度";
+Blockly.Msg.Esp32_Main_Controller_Get_Light_TOOLTIP= "獲取光線值";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Connect_Internet_TOOLTIP= "連接WiFi網絡";
+Blockly.Msg.Esp32_Main_Controller_Get_Wifi_Connection_Status_TOOLTIP= "獲取WiFi連接狀態";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Get_Info_TOOLTIP= "獲取WiFi配置信息%1";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Ntptime_TOOLTIP= "同步網絡時間";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Disconnect_TOOLTIP= "斷開WiFi連接";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Enable_Hotspot_Mode_TOOLTIP= "創建WiFi熱點";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Acquiring_Equipment_TOOLTIP= "獲取當前已連接的設備陣列";
+Blockly.Msg.Esp32_Main_Controller_Get_Wifi_Devices_Number_TOOLTIP= "獲取當前已連接的設備數量";
+Blockly.Msg.Esp32_Main_Controller_Wifi_Close_TOOLTIP= "關閉WiFi熱點";
+Blockly.Msg.Esp32_Network_Http_Get_TOOLTIP= "發送http get請求";
+Blockly.Msg.Esp32_Network_Http_Post_TOOLTIP= "發送http post請求";
+Blockly.Msg.CocoRobo_get_TOOLTIP= "獲取HTTP響應內容的%1";
+Blockly.Msg.Esp32_Network_Http_Get_Data_From_Local_Server_TOOLTIP= "獲取從本地HTTP伺服器請求得到的數據,數據類型爲%1";
+Blockly.Msg.Esp32_Network_Http_Server_Setup_TOOLTIP= "HTTP伺服器初始化";
+Blockly.Msg.Esp32_Network_Http_Server_Route_TOOLTIP= "當指定路徑被請求時,設定請求屬性爲%1請求,並執行操作";
+Blockly.Msg.Esp32_Network_Http_Server_Route_Respond_TOOLTIP= "HTTP伺服器設置響應內容,並設置返回數據類型爲%1";
+Blockly.Msg.Esp32_Network_Http_Server_Get_Data_TOOLTIP= "HTTP伺服器獲取從客戶端收到的數據,類型爲%1";
+Blockly.Msg.Esp32_Web_Ws_Setup_Send_TOOLTIP= "實時通信發送端初始化";
+Blockly.Msg.Esp32_Web_Ws_Send_TOOLTIP= "透過實時通信發送消息";
+Blockly.Msg.Esp32_Web_Ws_Setup_Receive_TOOLTIP= "實時通信接收端初始化";
+Blockly.Msg.Esp32_Web_Ws_Receive_Statement_TOOLTIP= "當實時通信收到消息時,運行操作";
+Blockly.Msg.Esp32_Web_Ws_Receive_Get_Data_TOOLTIP= "獲取從實時通信接收到的消息,類型爲%1";
+Blockly.Msg.Iot_Service_Cococloud_TOOLTIP= "發送數據至CocoCloud指定事件";
+Blockly.Msg.Iot_Service_Cococloud_Read_TOOLTIP= "獲取CocoCloud指定事件中的數據";
+Blockly.Msg.Iot_Service_Cococloud_Read_Data_TOOLTIP= "獲取CocoCloud事件中指定屬性的數據";
+Blockly.Msg.Esp32_Main_Controller_Ifttt_Send_Data_TOOLTIP= "發送數據到IFTTT Webhooks事件";
+Blockly.Msg.Esp32_Main_Controller_Ifttt_Touched_TOOLTIP= "觸發指定的IFTTT事件";
+Blockly.Msg.Iot_Service_Thingspeak_TOOLTIP= "發送數據至指定ThingSpeak頻道";
+Blockly.Msg.Iot_Service_Thingspeak_Read_TOOLTIP= "查找ThingSpeak指定頻道的數據";
+Blockly.Msg.Iot_Service_Thingspeak_Read_Total_TOOLTIP= "獲取ThingSpeak頻道中的數據總量";
+Blockly.Msg.Iot_Service_Thingspeak_Read_Specific_TOOLTIP= "獲取ThingSpeak頻道中指定數據的指定Field的數值";
+Blockly.Msg.Iot_System_Restart_TOOLTIP= "重啓系統";
+Blockly.Msg.Iot_System_Get_TOOLTIP= "獲模除組內剩餘空間";
+Blockly.Msg.Iot_System_Mac_TOOLTIP= "獲模除組的MAC地址";
+Blockly.Msg.Iot_System_Get_Cocorobo_Id_TOOLTIP= "獲取IoT設備ID";
+Blockly.Msg.iot_system_get_cocorobo_firmware_version_TOOLTIP= "獲取IoT當前固件版本號";
+Blockly.Msg.iot_system_delete_TOOLTIP = "刪除指定名字的文件";
+Blockly.Msg.ai_system_get_cocorobo_firmware_version_TOOLTIP= "獲取AI當前固件版本號";
+Blockly.Msg.ai_System_Get_TOOLTIP= "獲取記憶體內剩餘空間";
+Blockly.Msg.ai_System_sd_Get_TOOLTIP = "獲取SD卡內剩餘空間";
+Blockly.Msg.ai_system_thread_TOOLTIP = "啓用多線程,執行相關操作";
+Blockly.Msg.Iot_Lcd_Screeninit_TOOLTIP= "LCD螢幕初始化";
+Blockly.Msg.Iot_Lcd_Screen_TOOLTIP= "將LCD螢幕填充顏色爲%1";
+Blockly.Msg.Iot_Lcd_Fill_Screen_With_Rgb_TOOLTIP= "將LCD螢幕填充指定顏色";
+Blockly.Msg.Iot_Lcd_Set_Color_TOOLTIP= "將十六進制顏色碼轉換成RGB顏色值,並返回";
+Blockly.Msg.Iot_Lcd_Rgb_Value_Input_TOOLTIP= "返回指定rgb值";
+Blockly.Msg.Iot_Lcd_Drawpixel_TOOLTIP= "螢幕繪製點";
+Blockly.Msg.Iot_Lcd_Linecarvas_TOOLTIP= "螢幕繪製直線";
+Blockly.Msg.Iot_Lcd_Ractanglecarvas_TOOLTIP= "螢幕繪製%1矩形";
+Blockly.Msg.Iot_Lcd_Textcarvas_TOOLTIP= "螢幕繪製文本";
+Blockly.Msg.Iot_Lcd_Draw_ZedGraph_TOOLTIP= "螢幕繪製%1統計圖";
+Blockly.Msg.iot_lcd_clear_screen_TOOLTIP = "清除螢幕";
+Blockly.Msg.Iot_Led_Matrix_Setup_TOOLTIP= "IoT模組初始化LED燈屏";
+Blockly.Msg.Iot_Led_Matrix_Set_Bright_TOOLTIP= "設置燈屏亮度";
+Blockly.Msg.Iot_Led_Matrix_xy_TOOLTIP= "設置欄列";
+Blockly.Msg.Iot_Led_Matrix_wh_TOOLTIP= "設置寬高";
+Blockly.Msg.Iot_Led_Matrix_Rgb_Value_Input_TOOLTIP= "返回指定rgb值";
+Blockly.Msg.Iot_Led_Matrix_Draw_Pixel_TOOLTIP= "IoT模組LED燈屏繪製點";
+Blockly.Msg.Iot_Led_Matrix_Draw_Rectangle_TOOLTIP= "IoT模組LED燈屏繪製矩形";
+Blockly.Msg.Iot_Led_Matrix_Show_Above_TOOLTIP= "IoT模組LED燈屏顯示生效";
+Blockly.Msg.Esp32_Motor_Setup_TOOLTIP= "IoT模組馬達驅動初始化";
+Blockly.Msg.Esp32_Motor_Run_TOOLTIP= "IoT模組設定指定馬達以指定速度進行指定方向的轉動";
+Blockly.Msg.Esp32_Main_Controller_Servo_Setup_TOOLTIP= "IoT模組伺服馬達初始化";
+Blockly.Msg.Esp32_Main_Controller_Servo_Set_TOOLTIP= "IoT模組設置位於指定引腳的伺服馬達轉動至指定角度";
+
+Blockly.Msg.x_iot_read_gamepad_button_pressed_TOOLTIP= "當遊戲手柄上的按鍵%1按下時";
+Blockly.Msg.x_iot_read_gamepad_button_released_TOOLTIP= "當遊戲手柄上的按鍵%1鬆開時";
+Blockly.Msg.x_iot_read_gamepad_button_xr_TOOLTIP= "獲取遊戲手柄上按鍵%1的電平值";
+Blockly.Msg.x_iot_read_gamepad_joystick_check_TOOLTIP= "當遊戲手柄上的搖桿%1";
+Blockly.Msg.x_iot_read_gamepad_joystick_TOOLTIP= "獲取遊戲手柄上搖桿%1的類比數值";
+Blockly.Msg.esp32_nbiot_setup_TOOLTIP= "在%1模組上NB-IoT模組通信初始化";
+Blockly.Msg.esp32_nbiot_get_power_status_TOOLTIP= "獲取NB-IoT模組啓用狀態";
+Blockly.Msg.esp32_nbiot_get_network_status_TOOLTIP= "獲取NB-IoT模組網絡連接狀態";
+Blockly.Msg.esp32_nbiot_get_network_ip_TOOLTIP= "獲取NB-IoT模組網絡IP地址";
+Blockly.Msg.iot_service_nbiot_cococloud_TOOLTIP= "NB-IoT模組發送數據至CocoCloud";
+Blockly.Msg.esp32_nbiot_onenet_init_TOOLTIP= "NB-IoT模組連接OneNET";
+Blockly.Msg.esp32_nbiot_onenet_connection_status_TOOLTIP= "NB-IoT模組獲取OneNET連接狀態";
+Blockly.Msg.iot_service_nbiot_onenet_TOOLTIP= "NB-IoT模組發送數據至OneNET";
+Blockly.Msg.esp32_nbiot_onenet_read_value_TOOLTIP= "獲取NB-IoT模組從OneNET發送的指令";
+Blockly.Msg.iot_service_nbiot_onenet_read_TOOLTIP= "當NB-IoT模組從OneNET收到消息時,運行操作";
+Blockly.Msg.esp32_ble_setup_sender_TOOLTIP= "BLE(低功耗藍牙)發送端初始化";
+Blockly.Msg.esp32_ble_send_data_TOOLTIP= "BLE發送指定的數據";
+Blockly.Msg.esp32_ble_setup_receiver_TOOLTIP= "BLE(低功耗藍牙)接收端初始化";
+Blockly.Msg.esp32_ble_get_data_TOOLTIP= "返回BLE接收的數據";
+Blockly.Msg.esp32_ble_sender_connected_TOOLTIP= "發送端已經被連接";
+Blockly.Msg.esp32_ble_receiver_connected_TOOLTIP= "接收端已經被連接";
+
+// ai
+Blockly.Msg.ai_k210_button_read_pressed_TOOLTIP= "當按鈕%1按下時";
+Blockly.Msg.ai_k210_button_read_released_TOOLTIP= "當按鈕%1鬆開時";
+Blockly.Msg.ai_k210_led_light_up_TOOLTIP= "設定%1點亮";
+Blockly.Msg.ai_basic_light_up_led_analog_TOOLTIP= "設定%1的燈光亮度";
+Blockly.Msg.ai_k210_led_light_off_TOOLTIP= "設定%1熄滅";
+Blockly.Msg.ai_system_restart_TOOLTIP= "重啓系統";
+Blockly.Msg.ai_system_off_TOOLTIP= "關機";
+Blockly.Msg.ai_system_refresh_TOOLTIP= "刷新文件目錄";
+Blockly.Msg.ai_system_run_TOOLTIP= "運行指定路徑的Python程序";
+
+Blockly.Msg.ai_mphone_init_TOOLTIP= "咪高峰初始化";
+Blockly.Msg.mphone_audio_spectrum_init_TOOLTIP= "開始讀取音頻頻譜";
+Blockly.Msg.ai_mphone_read_sound_sensitivity_TOOLTIP= "獲取麥克風採集的音頻頻譜";
+Blockly.Msg.ai_mphone_Record_audio_init_TOOLTIP = "咪高峰錄製音頻初始化";
+Blockly.Msg.ai_mphone_Record_audio_start_TOOLTIP = "開始錄製音頻並保存";
+Blockly.Msg.ai_audio_stop_recording_TOOLTIP = "停止錄製音頻";
+
+Blockly.Msg.ai_img_save_TOOLTIP= "將畫布保存至本地,並設置圖像壓縮質量";
+Blockly.Msg.ai_lcd_invert_color_TOOLTIP = "將畫布進行顏色反轉";
+Blockly.Msg.ai_lcd_resizecanvas_TOOLTIP = "將畫布調整至指定的尺寸";
+Blockly.Msg.ai_lcd_color_scheme_TOOLTIP = "將畫布轉換爲%1";
+Blockly.Msg.ai_lcd_img_cut_TOOLTIP = "將畫布進行指定的裁剪處理";
+Blockly.Msg.ai_vision_color_analyze_TOOLTIP = "獲取畫布中指定區域的顏色分析結果";
+Blockly.Msg.ai_vision_find_blobs_TOOLTIP = "從畫布中尋找指定的顏色色塊";
+Blockly.Msg.ai_vision_get_threshold_default_TOOLTIP = "設定獲取用於顏色追蹤的默認顏色爲%1";
+Blockly.Msg.ai_vision_get_blobs_TOOLTIP = "獲取追蹤指定顏色的識別結果";
+Blockly.Msg.ai_vision_get_statistics_TOOLTIP = "獲取對畫布進行顏色信道信息分析的結果";
+Blockly.Msg.ai_vision_get_histogram_TOOLTIP = "獲取從畫布中進行標準化直方圖運算的結果";
+Blockly.Msg.ai_vision_get_histogram_percentile_TOOLTIP = "從直方圖計算結果獲取直方圖頻道的CDF計算值";
+Blockly.Msg.ai_vision_get_histogram_percentile_detail_TOOLTIP = "從直方圖計算結果獲取的百分比值中的%1";
+Blockly.Msg.ai_vision_lab_rgb_conversion_TOOLTIP = "運行顏色制式轉換 %1";
+Blockly.Msg.ai_vision_rgb_grayscale_conversion_TOOLTIP = "運行顏色制式轉換 %1";
+Blockly.Msg.ai_vision_find_qrcode_TOOLTIP = "獲取畫布中QR碼的檢測結果";
+Blockly.Msg.ai_vision_qrcode_get_info_TOOLTIP = "從變量中獲取檢測QR碼的%1";
+Blockly.Msg.ai_vision_find_apriltag_TOOLTIP = "獲取畫布中AprilTag的檢測結果";
+Blockly.Msg.ai_vision_apriltag_get_info_TOOLTIP = "從變量中獲取檢測AprilTag的%1";
+Blockly.Msg.ai_vision_find_datamatrices_TOOLTIP = "獲取畫布中數據矩陣的檢測結果";
+Blockly.Msg.ai_vision_datamatrices_get_info_TOOLTIP = "從變量中獲取檢測數據矩陣的%1";
+Blockly.Msg.ai_vision_find_barcodes_TOOLTIP = "獲取畫布中條形碼的檢測結果";
+Blockly.Msg.ai_vision_barcodes_get_info_TOOLTIP = "從變量中獲取檢測條形碼的%1";
+Blockly.Msg.ai_vision_find_circles_TOOLTIP = "從畫布中尋找圓形";
+Blockly.Msg.ai_vision_get_circles_TOOLTIP = "獲取尋找圓形的結果";
+Blockly.Msg.ai_vision_find_rects_TOOLTIP = "從畫布中尋找矩形";
+Blockly.Msg.ai_vision_get_rects_TOOLTIP = "獲取尋找矩形的結果";
+Blockly.Msg.ai_vision_find_lines_TOOLTIP = "從畫布中尋找直線";
+Blockly.Msg.ai_vision_get_lines_TOOLTIP = "獲取尋找直線的結果";
+
+// ai_video
+Blockly.Msg.ai_video_set_TOOLTIP = "播放視頻要求:視頻文件格式——AVI,視頻編碼格式——MJPG,音頻編碼格式——PCM";
+Blockly.Msg.ai_video_status_TOOLTIP = "獲取視頻播放的狀態";
+Blockly.Msg.ai_video_stop_play_TOOLTIP = "結束視頻文件播放";
+
+// ai_audio
+Blockly.Msg.speech_recognition_new_setup_TOOLTIP = "語音識別初始化";
+Blockly.Msg.speech_recognition_new_recording_sample_start_TOOLTIP = "開始錄製語音片段";
+Blockly.Msg.speech_recognition_new_start_recognition_TOOLTIP = "開始進行語音識別";
+Blockly.Msg.speech_recognition_new_recognition_get_result_TOOLTIP = "語音識別的結果爲指定片段";
+Blockly.Msg.speech_recognition_new_recognition_get_any_result_TOOLTIP = "當語音識別獲得任意結果的時候,執行下列操作";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_setup_TOOLTIP = "語音轉拼音初始化";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result_TOOLTIP = "獲取語音轉拼音的結果";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_TOOLTIP = "設定語音拼音識別參數";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_start_recognition_TOOLTIP = "開始語音拼音識別";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition_TOOLTIP = "終止語音拼音識別";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition_TOOLTIP = "暫停語音拼音識別";
+
+// ai_models
+Blockly.Msg.ai_model_allinit_TOOLTIP = "初始化%1";
+Blockly.Msg.ai_model_allload_TOOLTIP = "加載%1";
+Blockly.Msg.ai_model_index_mnist_TOOLTIP = "獲取手寫數字檢測模型的檢測結果";
+Blockly.Msg.ai_model_get_TOOLTIP = "從變量中獲取檢測到的待測物體的%1";
+Blockly.Msg.ai_model_look_TOOLTIP = "檢測到待測物體";
+Blockly.Msg.ai_model_look_attribute_TOOLTIP = "待測物體屬性";
+Blockly.Msg.ai_model_xy_TOOLTIP = "從變量中獲取檢測到的人臉的%1";
+Blockly.Msg.ai_model_xy_TOOLTIP = "從變量中獲取檢測到的人體的%1";
+Blockly.Msg.ai_model_face_TOOLTIP = "檢測到人臉";
+Blockly.Msg.ai_model_face_attribute_TOOLTIP = "人臉屬性";
+Blockly.Msg.ai_model_customized_init_setup_definition_TOOLTIP = "在自定義模型的程序運行前,進行記憶體的釋放";
+Blockly.Msg.ai_model_customized_init_setup_TOOLTIP = "初始化自定義模型";
+Blockly.Msg.ai_model_customized_load_setup_TOOLTIP = "加載自定義模型";
+Blockly.Msg.ai_model_customized_if_got_TOOLTIP = "識別到了自定義模型的對象";
+Blockly.Msg.ai_model_customized_attribute_TOOLTIP = "自定義模型對象屬性";
+Blockly.Msg.ai_model_customized_get_result_TOOLTIP = "從變量中獲取識別到自定義模型結果的%1";
+
+Blockly.Msg.ai_model_face_setup_TOOLTIP = "自定義人臉識別初始化";
+Blockly.Msg.ai_model_face_init_TOOLTIP = "自定義初始化人臉識別模型";
+Blockly.Msg.ai_face_detection_model_TOOLTIP = "初始化人臉檢測模型";
+Blockly.Msg.ai_face_point_detection_model_TOOLTIP = "初始化人臉5點關鍵點檢測模型";
+Blockly.Msg.ai_face_Vitter_eigenvalue_model_TOOLTIP = "初始化人臉196維特徵值模型";
+Blockly.Msg.ai_model_face_load_point_detection_model_TOOLTIP = "加載人臉5點關鍵點檢測模型,並進行一定的設定";
+Blockly.Msg.ai_model_Calculation_of_196_eigenvalues_TOOLTIP = "計算運行人臉特徵模型後的196維特徵值";
+Blockly.Msg.ai_model_class_TOOLTIP = "自定義初始化物體識別模型";
+Blockly.Msg.ai_model_getface_TOOLTIP = "識別到了人臉模型的對象";
+Blockly.Msg.ai_model_getclass_TOOLTIP = "識別到了物体模型的對象";
+
+Blockly.Msg.ai_model_face_start_recognition_TOOLTIP = "加載人臉檢測模型,並設定圖像源";
+Blockly.Msg.ai_model_face_model_load_finish_TOOLTIP = "人臉檢測模型加載完成";
+Blockly.Msg.ai_model_face_gather_TOOLTIP = "採集新的人臉數據並保存人臉數據";
+Blockly.Msg.ai_model_face_data_load_TOOLTIP = "加載已保存的人臉數據";
+Blockly.Msg.ai_model_face_model_list_TOOLTIP = "人臉檢測屬性";
+Blockly.Msg.ai_model_face_gather_num_judge_TOOLTIP = "人臉採集完成";
+Blockly.Msg.ai_model_face_recognition_TOOLTIP = "採集或者加載完成人臉數據並進行人臉識別";
+Blockly.Msg.ai_model_face_recognition_get_result_TOOLTIP = "人臉識別獲得任意結果";
+Blockly.Msg.ai_model_show_face_TOOLTIP = "處理圖像並顯示";
+
+Blockly.Msg.ai_model_class_setup_TOOLTIP = "自定義物體識別初始化";
+Blockly.Msg.ai_class_model_TOOLTIP = "初始化自定義物體特徵提模除型";
+Blockly.Msg.ai_class_model_cluster_TOOLTIP = "初始化自定義物體聚類參數";
+Blockly.Msg.ai_model_class_start_load_TOOLTIP = "設定圖像源並對圖像進行處理";
+Blockly.Msg.ai_model_class_gather_TOOLTIP = "開始採集物體";
+Blockly.Msg.ai_model_class_data_load_TOOLTIP = "加載物體數據";
+Blockly.Msg.ai_model_class_gather_load_finish_TOOLTIP = "採集或者加載完成物體數據";
+Blockly.Msg.ai_model_class_cluster_train_TOOLTIP = "開始進行物體特徵提取,然後加以聚類訓練";
+Blockly.Msg.ai_model_class_recognition_TOOLTIP = "開始進行物體識別";
+
+// ai_wifi
+Blockly.Msg.k210_wifi_enable_disable_TOOLTIP = "設定Wi-Fi爲%1";
+Blockly.Msg.k210_wifi_scan_TOOLTIP = "開始掃描附近Wi-Fi熱點";
+Blockly.Msg.k210_wifi_scan_get_TOOLTIP = "獲取Wi-Fi掃描的結果爲列表形式";
+Blockly.Msg.k210_wifi_connect_hotspot_TOOLTIP = "連接指定的Wi-Fi網絡";
+Blockly.Msg.k210_wifi_get_connection_status_TOOLTIP = "獲取Wi-Fi連接的狀態";
+Blockly.Msg.k210_wifi_get_config_TOOLTIP = "獲取Wi-Fi連接的設備指定信息";
+
+// ai_lcd
+Blockly.Msg.ai_lcd_screeninit_TOOLTIP = "LCD螢幕初始化";
+Blockly.Msg.ai_lcd_rotation_TOOLTIP = "將LCD螢幕方向旋轉指定的角度"; 
+Blockly.Msg.ai_lcd_filp_TOOLTIP = "是否將LCD螢幕進行鏡面翻轉";
+Blockly.Msg.ai_lcd_screen_TOOLTIP = "將LCD螢幕填充顏色爲%1";
+Blockly.Msg.ai_lcd_fill_screen_with_rgb_TOOLTIP = "將LCD螢幕填充顏色爲指定rgb值";
+Blockly.Msg.ai_lcd_clear_TOOLTIP = "清除螢幕";
+Blockly.Msg.ai_lcd_rgb_value_input_TOOLTIP = "返回指定的rgb值";
+Blockly.Msg.ai_lcd_XY_TOOLTIP = "返回指定的x和y";
+Blockly.Msg.ai_lcd_WH_TOOLTIP = "返回指定的寬與高";
+Blockly.Msg.ai_lcd_createnonecarvas_TOOLTIP = "創建指定尺寸的空白畫布";
+Blockly.Msg.ai_lcd_fillcanvas_TOOLTIP = "將畫布鋪滿指定的顏色";
+Blockly.Msg.ai_lcd_createcarvas_TOOLTIP = "創建圖像畫布";
+Blockly.Msg.ai_lcd_showcarvas_set_cord_TOOLTIP = "設定畫布的起始點座標";
+Blockly.Msg.ai_lcd_textcarvas_TOOLTIP = "在畫布上繪製字串";
+Blockly.Msg.ai_lcd_characterscarvas_TOOLTIP = "在畫布上繪製漢字字元";
+Blockly.Msg.ai_lcd_linecarvas_TOOLTIP = "在畫布上繪製直線";
+Blockly.Msg.ai_lcd_ractanglecarvas_TOOLTIP = "在畫布上繪製%1矩形";
+Blockly.Msg.ai_lcd_drawcirclecarvas_TOOLTIP = "在畫布上繪製%1圓形";
+Blockly.Msg.ai_lcd_draw_cross_sign_TOOLTIP = "在畫布上繪製十字標";
+Blockly.Msg.ai_lcd_draw_arrow_sign_TOOLTIP = "在畫布上繪製箭頭";
+Blockly.Msg.ai_lcd_draw_image_on_canvas_TOOLTIP = "在畫布上繪製圖片";
+Blockly.Msg.ai_lcd_draw_sensor_image_on_canvas_TOOLTIP = "在畫布上繪製相機捕捉的圖像";
+Blockly.Msg.ai_lcd_showcarvas_set_display_TOOLTIP = "顯示畫布";
+Blockly.Msg.ai_lcd_clearcanvas_TOOLTIP = "清除畫布中的所有內容";
+Blockly.Msg.ai_lcd_qrcode_TOOLTIP = "在畫布上繪製二維碼";
+
+// ai_led
+Blockly.Msg.ai_led_matrix_setup_TOOLTIP= "A.I.模組初始化LED燈屏";
+Blockly.Msg.ai_led_matrix_set_bright_TOOLTIP= "設置燈屏亮度";
+Blockly.Msg.ai_led_matrix_xy_TOOLTIP= "設置欄列";
+Blockly.Msg.ai_led_matrix_wh_TOOLTIP= "設置寬高";
+Blockly.Msg.ai_led_matrix_rgb_value_input_TOOLTIP= "返回指定rgb值";
+Blockly.Msg.ai_led_matrix_draw_pixel_TOOLTIP= "A.I.模組LED燈屏繪製點";
+Blockly.Msg.ai_led_matrix_draw_rectangle_TOOLTIP= "A.I.模組LED燈屏繪製矩形";
+Blockly.Msg.ai_led_matrix_show_above_TOOLTIP= "顯示圖案";
+Blockly.Msg.ai_led_matrix_clear_screen_TOOLTIP= "清除燈屏";
+
+// ai_speaker
+Blockly.Msg.ai_audio_init_speaker_TOOLTIP = "喇叭初始化";
+Blockly.Msg.ai_audio_play_song_speaker_TOOLTIP = "播放音訊檔案(單個循環)";
+Blockly.Msg.ai_audio_play_song_speaker_list_loop_TOOLTIP = "播放音訊檔案(順序播放)";
+Blockly.Msg.ai_audio_play_music_file_list_random_TOOLTIP = "播放音訊檔案(隨機播放)";
+Blockly.Msg.ai_audio_play_state_speaker_TOOLTIP = "獲取音訊檔案播放狀態";
+Blockly.Msg.ai_audio_play_finish_speaker_TOOLTIP = "結束音訊檔案播放";
+Blockly.Msg.ai_audio_set_speaker_TOOLTIP = "設定音訊檔案播放音量";
+Blockly.Msg.ai_audio_files_list_TOOLTIP = "獲取當前路徑的音頻檔案陣列";
+
+// ai_camera
+Blockly.Msg.ai_camera_init_TOOLTIP = "相機初始化";
+Blockly.Msg.ai_camera_fit_to_screen_size_TOOLTIP = "設定相機捕捉畫面的尺寸";
+Blockly.Msg.ai_camera_windows_TOOLTIP = "調整相機捕捉的圖像尺寸";
+Blockly.Msg.ai_camera_snapshot_TOOLTIP = "獲取相機捕捉的圖像";
+Blockly.Msg.ai_camera_lens_corr_TOOLTIP = "糾正廣角鏡頭畫面";
+Blockly.Msg.ai_camera_image_property_change_TOOLTIP = "設定攝像頭圖像%1的狀態";
+Blockly.Msg.ai_camera_bcs_operation_TOOLTIP = "設定攝像頭圖像的%1";
+Blockly.Msg.ai_video_record_setup_TOOLTIP = "開始錄製視頻並保存";
+Blockly.Msg.ai_video_get_TOOLTIP = "對畫布進行錄製";
+Blockly.Msg.ai_video_stop_TOOLTIP = "停止錄製影片";
+
+// ai_motor
+Blockly.Msg.ai_motor_setup_TOOLTIP = "A.I.模組馬達驅動初始化";
+Blockly.Msg.ai_motor_run_TOOLTIP = "A.I.模組設定指定馬達以指定速度進行指定方向的轉動";
+
+// ai_EFSG
+Blockly.Msg.extension_servo_setup_on_ai_TOOLTIP = "模組伺服馬達初始化";
+Blockly.Msg.extension_servo_write_on_ai_TOOLTIP = "模組設置位於指定引腳的伺服馬達轉動至指定角度";
+
+// ai_EFGH
+Blockly.Msg.x_ai_read_gamepad_button_pressed_TOOLTIP= "當遊戲手柄上的按鍵%1按下時";
+Blockly.Msg.x_ai_read_gamepad_button_released_TOOLTIP= "當遊戲手柄上的按鍵%1鬆開時";
+Blockly.Msg.x_ai_read_gamepad_button_xr_TOOLTIP= "獲取遊戲手柄上按鍵%1的電平值";
+Blockly.Msg.x_ai_read_gamepad_joystick_check_TOOLTIP= "當遊戲手柄上的搖桿%1";
+Blockly.Msg.x_ai_read_gamepad_joystick_TOOLTIP= "獲取遊戲手柄上搖桿%1的類比數值";
+
+Blockly.Msg.CocoRobo_try_except_TOOLTIP= "檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理";
+Blockly.Msg.CocoRobo_try_except_finally_TOOLTIP= "檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理,並且無論異常是否產生都要執行finally語句";
+
+
+Blockly.Msg.Pedometer_Init_TOOLTIP="初始化計步器";
+Blockly.Msg.Pedometer_Run_TOOLTIP="運行計步器";
+Blockly.Msg.Pedometer_Get_TOOLTIP="獲取計數";
+
+Blockly.Msg.ai_vision_canvas_area_tuple_TOOLTIP = "創建區域元組";
+Blockly.Msg.ai_vision_lane_tracking_setup_TOOLTIP = "道路循線識別初始化";
+Blockly.Msg.ai_vision_from_canvas_TOOLTIP = "運行道路循線識別";
+Blockly.Msg.ai_vision_lane_tracking_run_get_TOOLTIP = "獲取道路循線識別的結果";
+
+
+/* mlx90614 */
+Blockly.Msg.MLX90614_SETUP_TOOLTIP = "%1 MLX90614感應器初始化";
+Blockly.Msg.MLX90614_READ_AMBIENT_TOOLTIP = "從 MLX90614 獲取當前環境溫度";
+Blockly.Msg.MLX90614_READ_OBJECT_TOOLTIP = "從 MLX90614 獲取目標物體溫度";
+
+/* DHT11 or DHT22 */
+Blockly.Msg.DHT_SETUP_TOOLTIP = "%1 DHT感應器初始化";
+
+/* PM2.5 */
+Blockly.Msg.PM25_SETUP_TOOLTIP = "%1 PM2.5感應器初始化";
+Blockly.Msg.PM25_REDD_DATA_TOOLTIP = "獲取PM2.5數值";
+
+/* RTC */
+Blockly.Msg.RTC_setup_TOOLTIP = "RTC模組初始化";
+Blockly.Msg.RTC_setDateTime_TOOLTIP = "設定日期時間周數";
+Blockly.Msg.RTC_GETDATE_TOOLTIP = "獲取當前日期%1";
+Blockly.Msg.RTC_GETTIME_TOOLTIP = "獲取當前時間%1";
+Blockly.Msg.RTC_getWeek_TOOLTIP = "獲取當前周數";
+Blockly.Msg.RTC_SETDATE_TOOLTIP = "設定當前日期%1為特定值";
+Blockly.Msg.RTC_SETTIME_TOOLTIP = "設定當前時間%1為特定值";
+Blockly.Msg.RTC_setWeek_TOOLTIP = "設定當前周數為特定值";
+Blockly.Msg.RTC_getDateTime_TOOLTIP = "獲取日期時間周數";
+
+/* robot dog */
+Blockly.Msg.robot_dog_movement_action_TOOLTIP = "語音操控機器狗";
+Blockly.Msg.robot_dog_phonetic_to_pinyin_get_result_TOOLTIP = "獲取語音識別的結果";
+Blockly.Msg.robot_dog_setup_TOOLTIP = "機器狗初始化";
+Blockly.Msg.robot_dog_action_TOOLTIP = "機器狗執行%1指令";
+Blockly.Msg.robot_dog_servo_movement_TOOLTIP = "設定特定腿特定關節伺服馬達轉動至特定的角度";
+Blockly.Msg.robot_dog_servo_speed_TOOLTIP = "設定特定速度為%1";
+Blockly.Msg.robot_dog_servo_movement_location_TOOLTIP = "設定特定腿足尖特定方向的位置為特定值";
+Blockly.Msg.robot_dog_open_gyroscope_TOOLTIP = "%1陀螺儀";
+Blockly.Msg.robot_dog_open_performance_mode_TOOLTIP = "%1機器狗表演模式";
+Blockly.Msg.robot_dog_open_calibration_mode_TOOLTIP = "%1機器狗標定模式";
+Blockly.Msg.robot_dog_get_power_TOOLTIP = "獲取機器狗當前的電量";
+Blockly.Msg.robot_dog_servo_movement_distance_TOOLTIP = "設定機器狗執行%1方向平移運動步長為特定值";
+Blockly.Msg.robot_dog_servo_movement_rotate_TOOLTIP = "設定機器狗執行%1方向旋轉運動轉動速度為特定值";
+Blockly.Msg.robot_dog_servo_movement_standing_still_TOOLTIP = "設定機器狗以特定的抬腿高度以固定頻率執行原地踏步";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_TOOLTIP = "設定機器狗執行%1方向平移運動步長為特定值持續特定秒";
+Blockly.Msg.robot_dog_servo_movement_rotate_cycle_TOOLTIP = "設定機器狗執行%1方向旋轉運動轉動速度為特定值持續特定秒";
+Blockly.Msg.robot_dog_servo_movement_standing_still_cycle_TOOLTIP = "設定機器狗以特定的抬腿高度以固定頻率執行原地踏步持續特定秒";
+Blockly.Msg.robot_dog_servo_movement_distance_still_TOOLTIP = "設定機器狗%1方向平移特定毫米";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_TOOLTIP = "設定機器狗以特定週期向%1方向往復平移";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_TOOLTIP = "設定機器狗繞%1軸旋轉特定值";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_TOOLTIP = "設定機器狗以特定週期繞%1軸往復轉動";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_stop_TOOLTIP = "停止機器狗向%1方向週期往復平移";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_stop_TOOLTIP = "停止機器狗繞%1軸週期往復轉動";
+Blockly.Msg.robot_dog_get_servo_angle_TOOLTIP = "獲取特定腿特定關節伺服馬達的角度";
+Blockly.Msg.robot_dog_get_rotate_angle_TOOLTIP = "獲取陀螺儀%1軸的角度";
+
+/* uav */
+Blockly.Msg.Take_off_TOOLTIP = "設定指定編號無人機的起飛高度爲指定釐米";
+Blockly.Msg.uav_fly_mode_TOOLTIP = "設定指定編號無人機切換指定飛行模式";
+Blockly.Msg.xy_speed_TOOLTIP = "設定指定編號無人機的水平速度爲指定值";
+Blockly.Msg.z_speed_TOOLTIP = "設定指定編號無人機的垂直速度爲指定值";
+Blockly.Msg.follow_line_TOOLTIP = "設定指定編號無人機向指定方向巡線飛行";
+Blockly.Msg.mobile_distance_TOOLTIP = "設定指定編號無人機向指定方向飛行指定距離";
+Blockly.Msg.move_search_dot_TOOLTIP = "並尋找黑色小塊";
+Blockly.Msg.move_search_tag_TOOLTIP = "並尋找指定標籤";
+Blockly.Msg.move_search_blob_TOOLTIP = "並尋找指定色塊";
+Blockly.Msg.go_to_TOOLTIP = "設定指定編號無人機直達指定標籤";
+Blockly.Msg.go_to_tag_TOOLTIP = "並設定指定高度";
+Blockly.Msg.uav_rotation_TOOLTIP = "設定指定編號無人機旋轉指定角度";
+Blockly.Msg.uav_fly_height_TOOLTIP = "設定指定編號無人機的高度";
+Blockly.Msg.filp_ctrl_TOOLTIP = "設定指定編號無人機向指定方向旋轉指定的圈數";
+Blockly.Msg.led_ctrl_TOOLTIP = "設定指定編號無人機的燈光顏色";
+Blockly.Msg.off_led_ctrl_TOOLTIP = "設定指定編號無人機關閉燈光";
+Blockly.Msg.uav_detection_TOOLTIP = "設定指定編號無人機檢測指定物體";
+Blockly.Msg.mangne_ctrl_TOOLTIP = "設定指定編號無人機操作電磁鐵";
+Blockly.Msg.servo_ctrl_TOOLTIP = "設定指定編號無人機的舵機角度爲指定值";
+Blockly.Msg.role_ctrl_TOOLTIP = "設定指定編號無人機的命令爲指定命令";
+Blockly.Msg.lock_dir_TOOLTIP = "設定指定編號無人機管理機頭方向";
+Blockly.Msg.shoot_crtl_TOOLTIP = "設定指定編號無人機發射激光";
+Blockly.Msg.switch_crtl_TOOLTIP = "設定指定編號無人機的狀態爲打開或關閉";
+Blockly.Msg.ai_crtl_TOOLTIP = "設定指定編號無人機AI切換到指定模式";
+Blockly.Msg.ai_learing_TOOLTIP = "設定指定編號無人機學習的ID爲指定值";
+Blockly.Msg.ai_forget_TOOLTIP = "設定指定編號無人機忘記所有學習的數據";
+Blockly.Msg.ai_set_name_TOOLTIP = "設定指定編號無人機指定ID的名字爲指定值";
+Blockly.Msg.ai_save_img_TOOLTIP = "設定指定編號無人機拍照或截圖的照片保存到SD卡上";
+Blockly.Msg.fly_ctrl_TOOLTIP = "設定指定編號無人機的狀態";
+Blockly.Msg.uav_detection_if_TOOLTIP = "指定編號無人機檢測到指定物體";
+Blockly.Msg.uav_detection_if_line_TOOLTIP = "指定編號無人機檢測到指定方向有線";
+Blockly.Msg.uav_get_distance_of_obstacles_TOOLTIP = "獲取指定編號無人機指定方向的障礙物距離";
+Blockly.Msg.uav_get_value_TOOLTIP = "獲取指定編號無人機的指定值";
+Blockly.Msg.uav_get_AI_value_TOOLTIP = "獲取指定編號無人機的AI識別結果";
+Blockly.Msg.uav_get_electronic_balance_value_TOOLTIP = "獲取指定編號無人機的電子秤讀數";
+Blockly.Msg.uav_get_shooting_value_TOOLTIP = "獲取指定編號無人機的射擊數據";
+Blockly.Msg.uav_get_msg_value_TOOLTIP = "獲取指定編號無人機的消息數據";
+
+/* expand */
+Blockly.Msg.esp32_expand_io_from_digital_pin_TOOLTIP = "獲取引腳 #%1的數字信號數值";
+Blockly.Msg.esp32_expand_io_set_digital_pin_TOOLTIP = "設定引腳 #%1為指定電平";
+Blockly.Msg.esp32_expand_io_set_analog_pin_TOOLTIP = "設定引腳 #%1 PWM 輸出指定的值";
+
+
+/* KUJU */
+Blockly.Msg.iot_service_KUJU_setup_TOOLTIP = "透過賬號和密碼連接KUJU";
+Blockly.Msg.iot_service_KUJU_controll_TOOLTIP = "傳送資料至KUJU控制智能插座";
+Blockly.Msg.iot_service_KUJU_get_temperature_humidity_data_TOOLTIP = "獲取溫度感應器的特定數值";
+Blockly.Msg.iot_service_KUJU_get_motion_data_TOOLTIP = "獲取移動感應器的特定数值";
+Blockly.Msg.iot_service_KUJU_get_sensor_data_TOOLTIP = "獲取特定感應器的特定数值";
+
+// Wetech
+Blockly.Msg.wifiServices_WeTech_setup_TOOLTIP = "連接WeTech下特定賬戶的特定網關";
+Blockly.Msg.wifiServices_WeTech_controll_derail_TOOLTIP = "發送數據至WeTech控制特定的3掣面掣開關的開與關";
+Blockly.Msg.wifiServices_WeTech_controll_derail_second_way_TOOLTIP = "發送數據至WeTech控制特定的2掣面掣開關的開與關";
+Blockly.Msg.wifiServices_WeTech_controll_derail_curtain_sensor_TOOLTIP = "發送數據至WeTech控制特定的Curtain Sensor (for projector Screen)的狀態";
+Blockly.Msg.wifiServices_WeTech_controll_derail_air_conditioning_mode_TOOLTIP = "發送數據至WeTech控制特定冷氣IR的模式";
+Blockly.Msg.wifiServices_WeTech_controll_derail_wind_speed_mode_TOOLTIP = "發送數據至WeTech控制特定冷氣IR的風速";
+Blockly.Msg.wifiServices_WeTech_controll_derail_temp_TOOLTIP = "發送數據至WeTech控制特定冷氣IR的溫度";
+Blockly.Msg.wifiServices_WeTech_controll_derail_all_mode_TOOLTIP = "發送數據至WeTech控制特定冷氣IR";
+Blockly.Msg.wifiServices_WeTech_controll_derail_IR_TOOLTIP = "發送數據至WeTech控制特定TV IR (for TV and Projector)";
+Blockly.Msg.wifiServices_WeTech_controll_derail_get_power_meter_TOOLTIP = "獲取Power Meter的值";
+Blockly.Msg.wifiServices_WeTech_controll_derail_get_sensor_number_TOOLTIP = "獲取%1的值";
+
+// tuya
+Blockly.Msg.iot_service_tuya_TOOLTIP = "透過Access ID和Access Secret連接塗鴉";
+Blockly.Msg.iot_service_tuya_setToken_TOOLTIP = "當連接塗鴉獲取到訪問令牌的時候,執行下列操作";
+Blockly.Msg.iot_service_tuya_controll_light_belt_TOOLTIP = "控制智能燈帶爲某一特定狀態";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_TOOLTIP = "控制智能燈帶顏色爲特定值";
+
+// turtle
+Blockly.Msg.TURTLE_CREATE_NE_TURTLE_TLTLE_TOOLTIP = "創建一個新的海龜";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_TOOLTIP = "讓海龜往前走指定的值";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_TOOLTIP = "讓海龜往後走指定的值";
+Blockly.Msg.TURTLE_MAKE_TURN_LEFT_TOOLTIP = "讓海龜向左轉指定的角度";
+Blockly.Msg.TURTLE_MAKE_TURN_RIGHT_TOOLTIP = "讓海龜向右轉指定的角度";
+Blockly.Msg.TURTLE_MAKE_TURRLE_COLOR_TOOLTIP = "設定海龜畫筆的顏色";
+Blockly.Msg.TURTLE_MAKE_TURRLE_PEN_TOOLTIP = "讓海龜畫筆%1";
+Blockly.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X_TOOLTIP = "讓海龜去指定的位置";
+Blockly.Msg.TURTLE_MAKE_TURTLE_SET_POSITION_TOOLTIP = "設定海龜畫筆的位置";
+Blockly.Msg.TURTLE_MAKE_SET_HEADING_TOOLTIP = "讓海龜旋轉至指定的角度";
+Blockly.Msg.TURTLE_RESET_TOOLTIP = "重置畫筆的位置";
+Blockly.Msg.TURTLE_CLEAR_TOOLTIP = "清除所有內容";
+
+Blockly.Msg.ADD_COMMENT = "加入註解";
+Blockly.Msg.ARD_ANALOGREAD = "讀模除擬接口#";
+Blockly.Msg.ARD_ANALOGREAD_TIP = "返回0到1024中的一個值";
+Blockly.Msg.ARD_ANALOGWRITE = "設定模擬接口#";
+Blockly.Msg.ARD_ANALOGWRITE_TIP = "將0到255之間的一個模擬值寫入到特定的脈寬調製端口";
+Blockly.Msg.ARD_BUILTIN_LED = "設定內置LED燈";
+Blockly.Msg.ARD_BUILTIN_LED_TIP = "設定Arduino版上的內置LED燈狀態爲開或者關";
+Blockly.Msg.ARD_COMPONENT_WARN1 = "A %1 configuration block with the same %2 name must be added to use this block!"; // untranslated
+Blockly.Msg.ARD_DEFINE = "Define"; // untranslated
+Blockly.Msg.ARD_DIGITALREAD = "讀取數字接口#";
+Blockly.Msg.ARD_DIGITALREAD_TIP = "從壹端口讀取數字值:高電平或低電平";
+Blockly.Msg.ARD_DIGITALWRITE = "設定數字接口#";
+Blockly.Msg.ARD_DIGITALWRITE_TIP = "將數字值高電平或低電平寫入特定端口";
+Blockly.Msg.ARD_FUN_RUN_LOOP = "CocoBlockly不斷執行:";
+Blockly.Msg.ARD_FUN_RUN_SETUP = "CocoBlockly先執行:";
+Blockly.Msg.ARD_FUN_RUN_TIP = "定義Arduino setup() 和 loop() 函數。";
+Blockly.Msg.ARD_HIGH = "高";
+Blockly.Msg.ARD_HIGHLOW_TIP = "Set a pin state logic High or Low."; // untranslated
+Blockly.Msg.ARD_LOW = "低";
+Blockly.Msg.ARD_MAP = "映射";
+Blockly.Msg.ARD_MAP_TIP = "Re-maps a number from [0-1024] to another."; // untranslated
+Blockly.Msg.ARD_MAP_VAL = "值從[0-";
+Blockly.Msg.ARD_NOTONE_PIN = "No tone"; // untranslated
+Blockly.Msg.ARD_NOTONE_PIN_TIP = "Stop generating a tone on a pin"; // untranslated
+Blockly.Msg.ARD_PIN_WARN1 = "Pin %1 is needed for %2 as pin %3. Already used as %4."; // untranslated
+Blockly.Msg.ARD_PULSEON = "脈衝從接口#";
+Blockly.Msg.ARD_PULSEREAD = "讀取";
+Blockly.Msg.ARD_PULSETIMEOUT = "超時時間:";
+Blockly.Msg.ARD_PULSETIMEOUT_MS = ""; // untranslated
+Blockly.Msg.ARD_PULSETIMEOUT_TIP = "測量所選接口上脈衝的持續時間,如果其在超時時間內";
+Blockly.Msg.ARD_PULSE_TIP = "測量所選接口上脈衝的持續時間";
+Blockly.Msg.ARD_PWMWRITE = "設定PWM接口#";
+Blockly.Msg.ARD_SERIAL_AVAILABLE = "avalible"; // untranslated
+Blockly.Msg.ARD_SERIAL_BPS = "比特/秒";
+Blockly.Msg.ARD_SERIAL_PRINT = "打印";
+Blockly.Msg.ARD_SERIAL_PRINT_NEWLINE = "添加新欄";
+Blockly.Msg.ARD_SERIAL_PRINT_TIP = "將數據以可讀的ASCII文本形式打印到控制檯或串行端口";
+Blockly.Msg.ARD_SERIAL_PRINT_WARN = "Serial相關的初始化積木需要被添加";
+Blockly.Msg.ARD_SERIAL_READ = "讀取";
+Blockly.Msg.ARD_SERIAL_SETUP = "設定";
+Blockly.Msg.ARD_SERIAL_SETUP_TIP = "選擇特定的串行外設的速度";
+Blockly.Msg.ARD_SERIAL_SPEED = "速度爲";
+Blockly.Msg.ARD_SERIAL_WRITE = "寫出";
+Blockly.Msg.ARD_SERVO_READ = "讀取伺服馬達訊息,設定接口爲PIN#";
+Blockly.Msg.ARD_SERVO_READ_TIP = "讀取伺服馬達的角度";
+Blockly.Msg.ARD_SERVO_SETUP = "伺服馬達初始化";
+Blockly.Msg.ARD_SERVO_WRITE = "定義伺服馬達接口爲";
+Blockly.Msg.ARD_SERVO_WRITE_DEG_180 = "度 (0~180)";
+Blockly.Msg.ARD_SERVO_WRITE_TIP = "設定伺服馬達轉動壹定的角度";
+Blockly.Msg.ARD_SERVO_WRITE_TO = "設定其轉動角度爲";
+Blockly.Msg.ARD_SPI_SETUP = "設定";
+Blockly.Msg.ARD_SPI_SETUP_CONF = "配置";
+Blockly.Msg.ARD_SPI_SETUP_DIVIDE = "時鐘分頻";
+Blockly.Msg.ARD_SPI_SETUP_LSBFIRST = "LSBFIRST"; // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE = "SPI模式(空 - 邊界)";
+Blockly.Msg.ARD_SPI_SETUP_MODE0 = "0 (Low - Falling)"; // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE1 = "1 (Low - Rising)"; // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE2 = "2 (High - Falling)"; // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MODE3 = "3 (High - Rising)"; // untranslated
+Blockly.Msg.ARD_SPI_SETUP_MSBFIRST = "MSBFIRST"; // untranslated
+Blockly.Msg.ARD_SPI_SETUP_SHIFT = "數據傳輸";
+Blockly.Msg.ARD_SPI_SETUP_TIP = "配置SPI外設";
+Blockly.Msg.ARD_SPI_TRANSRETURN_TIP = "Send a SPI message to an specified slave device and get data back."; // untranslated
+Blockly.Msg.ARD_SPI_TRANS_NONE = "none"; // untranslated
+Blockly.Msg.ARD_SPI_TRANS_SLAVE = "來控制接口";
+Blockly.Msg.ARD_SPI_TRANS_TIP = "Send a SPI message to an specified slave device."; // untranslated
+Blockly.Msg.ARD_SPI_TRANS_VAL = "轉換";
+Blockly.Msg.ARD_SPI_TRANS_WARN1 = "A setup block for %1 must be added to the workspace to use this block!"; // untranslated
+Blockly.Msg.ARD_SPI_TRANS_WARN2 = "Old pin value %1 is no longer available."; // untranslated
+Blockly.Msg.ARD_STEPPER_COMPONENT = "stepper"; // untranslated
+Blockly.Msg.ARD_STEPPER_DEFAULT_NAME = "MyStepper"; // untranslated
+Blockly.Msg.ARD_STEPPER_MOTOR = "步進馬達";
+Blockly.Msg.ARD_STEPPER_PIN1 = "接口1#':";
+Blockly.Msg.ARD_STEPPER_PIN2 = "接口2#':";
+Blockly.Msg.ARD_STEPPER_REVOLVS = "每轉有多少步:";
+Blockly.Msg.ARD_STEPPER_SETUP = "設定步進馬達名爲:";
+Blockly.Msg.ARD_STEPPER_SETUP_TIP = "配置步進馬達接口排列和其他設定";
+Blockly.Msg.ARD_STEPPER_SPEED = "設定轉速(轉/分)爲";
+Blockly.Msg.ARD_STEPPER_STEP = "移動步進馬達";
+Blockly.Msg.ARD_STEPPER_STEPS = "步";
+Blockly.Msg.ARD_STEPPER_STEP_TIP = "將步進馬達轉動壹定數量的步數";
+Blockly.Msg.ARD_TIME_CHRONO_CHECK = "當碼錶停至";
+Blockly.Msg.ARD_TIME_CHRONO_CHECK1 = "毫秒時";
+Blockly.Msg.ARD_TIME_CHRONO_ELAPSED = "碼錶已過去的時間";
+Blockly.Msg.ARD_TIME_CHRONO_RESET = "重置碼錶";
+Blockly.Msg.ARD_TIME_CHRONO_SETUP = "碼錶初始化";
+Blockly.Msg.ARD_TIME_DELAY = "等待";
+Blockly.Msg.ARD_TIME_DELAY_MICROS = "微秒";
+Blockly.Msg.ARD_TIME_DELAY_MICRO_TIP = "等待壹定的時間(以微秒爲單位)";
+Blockly.Msg.ARD_TIME_DELAY_TIP = "等待壹定的時間(以毫秒爲單位)";
+Blockly.Msg.ARD_TIME_DELAY_seconds_TIP = "等待壹定的時間(以秒爲單位)";
+Blockly.Msg.ARD_TIME_DELAY_seconds = "秒";
+Blockly.Msg.ARD_TIME_DO = "執行";
+Blockly.Msg.ARD_TIME_DO_MS = "執行";
+Blockly.Msg.ARD_TIME_EVERY = "每隔";
+Blockly.Msg.ARD_TIME_EVERY_MS = "每隔";
+Blockly.Msg.ARD_TIME_INF = "永久等待(結束程序)";
+Blockly.Msg.ARD_TIME_INF_TIP = "無限期等待,即停止程序";
+Blockly.Msg.ARD_TIME_MICROS = "當前已過時間(微秒)";
+Blockly.Msg.ARD_TIME_MICROS_TIP = "返回自Arduino版開始執行當前程序以來的微秒數,必須以長整數型儲存";
+Blockly.Msg.ARD_TIME_MILLIS = "當前已過時間(毫秒)";
+Blockly.Msg.ARD_TIME_MILLIS_TIP = "返回自Arduino版開始執行當前程序以來的毫秒數,必須以長整數型儲存";
+Blockly.Msg.ARD_TIME_MS = "毫秒";
+Blockly.Msg.ARD_TIME_SECOND = "秒";
+Blockly.Msg.ARD_TIME_SECOND_MS = "毫秒";
+Blockly.Msg.ARD_TONE_FREQ = "frequency"; // untranslated
+Blockly.Msg.ARD_TONE_PIN = "Tone PIN#"; // untranslated
+Blockly.Msg.ARD_TONE_PIN_TIP = "Generate audio tones on a pin"; // untranslated
+Blockly.Msg.ARD_TYPE_ARRAY = "Array"; // untranslated
+Blockly.Msg.ARD_TYPE_BOOL = "Boolean"; // untranslated
+Blockly.Msg.ARD_TYPE_CHAR = "Character"; // untranslated
+Blockly.Msg.ARD_TYPE_CHILDBLOCKMISSING = "ChildBlockMissing"; // untranslated
+Blockly.Msg.ARD_TYPE_DECIMAL = "Decimal"; // untranslated
+Blockly.Msg.ARD_TYPE_LONG = "Large Number"; // untranslated
+Blockly.Msg.ARD_TYPE_NULL = "Null"; // untranslated
+Blockly.Msg.ARD_TYPE_NUMBER = "Number"; // untranslated
+Blockly.Msg.ARD_TYPE_SHORT = "Short Number"; // untranslated
+Blockly.Msg.ARD_TYPE_TEXT = "Text"; // untranslated
+Blockly.Msg.ARD_TYPE_UNDEF = "Undefined"; // untranslated
+Blockly.Msg.ARD_VAR_AS = "爲";
+Blockly.Msg.ARD_VAR_AS_TIP = "Sets a value to a specific type"; // untranslated
+Blockly.Msg.ARD_WRITE_TO = "爲";
+Blockly.Msg.AUTH = "請授權這個應用程式以保存您的作品並共享。";
+Blockly.Msg.BASIC_AS = "as"; // untranslated
+Blockly.Msg.BASIC_BLACK_OUT = "Black out"; // untranslated
+Blockly.Msg.BASIC_BRTN = "Brightness"; // untranslated
+Blockly.Msg.BASIC_BUZZER_PLAY = "Buzzer plays "; // untranslated
+Blockly.Msg.BASIC_BUZZER_SETUP = "Buzzer Setup"; // untranslated
+Blockly.Msg.BASIC_COUNTER_SETTING = "按鈕為";
+Blockly.Msg.BASIC_COUNTER_SETUP = "設定一個計數器 ";
+Blockly.Msg.BASIC_FOR = "for"; // untranslated
+Blockly.Msg.BASIC_FROM = "from"; // untranslated
+Blockly.Msg.BASIC_HZ = "Hz"; // untranslated
+Blockly.Msg.BASIC_IF_SWITCH = "If switch "; // untranslated
+Blockly.Msg.BASIC_IS = " is "; // untranslated
+Blockly.Msg.BASIC_LIGHT_PIN = "Light Pin#"; // untranslated
+Blockly.Msg.BASIC_LIGHT_WARNING = "亮度值必須在0到255之間";
+Blockly.Msg.BASIC_MUTE = "Mute"; // untranslated
+Blockly.Msg.BASIC_NOLCD = "關閉在接口%1上的燈光";
+Blockly.Msg.BASIC_NOTONE = "關閉在接口%1上的音調";
+Blockly.Msg.BASIC_NOTONE_TIP = "關閉所選接口上的音調輸出";
+Blockly.Msg.BASIC_PIN_NUM = "Pin#"; // untranslated
+Blockly.Msg.BASIC_READBUTTON = "讀取在接口%1上開關的狀態";
+Blockly.Msg.BASIC_READCOUNTER = "讀取計數器的數值 計數按鈕為%1";
+Blockly.Msg.BASIC_READKNOB = "讀取在接口%1上電位器的數值";
+Blockly.Msg.BASIC_SET = "Set"; // untranslated
+Blockly.Msg.BASIC_SETANALOGLED = "設定在接口%1上的燈光亮度為%2";
+Blockly.Msg.BASIC_SETDIGITALLED = "打開在接口%1上的燈光";
+Blockly.Msg.BASIC_SETTONE = "設定在接口%1上的音調頻率為%2";
+Blockly.Msg.BASIC_SET_PIN = "Set Pin#"; // untranslated
+Blockly.Msg.BASIC_TO = "to"; // untranslated
+Blockly.Msg.BASIC_TONE_TIP = "設定接口上的音調頻率爲31到65535中某個特定頻率";
+Blockly.Msg.BASIC_TONE_WARNING = "頻率值必須在31到65535之間";
+Blockly.Msg.BLUE = "藍";
+Blockly.Msg.BLUETOOTH_INTERACTION_SET_CONTENT = "設定序列埠波特率為:";
+Blockly.Msg.BLUETOOTH_INTERACTION_TITLE = "藍芽模組進入 AT 配置模式";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_DATA = "data";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG = "接收數據";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVEMSG_ISSUCCESS = "接收數據成功";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2 = "獲取第";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE2_2 = "位的數據";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE3 = "位的數據,並設置類型為";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_RECEIVE_LINE3 = "長度為";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SENDMSG = "發送數據";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP = "藍牙對藍牙通信";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP1 = "對藍牙通信";
+Blockly.Msg.BLUETOOTH_INTERCOMMS_SETUP2 = "初始化";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED = "已接收到的陣列";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED1 = "中第";
+Blockly.Msg.BLUETOOTH_LIST_RECEIVED2 = "位的值";
+Blockly.Msg.BLUETOOTH_NUMBER_RECEIVED = "已接收到的數字";
+Blockly.Msg.BLUETOOTH_PAIRING_BIND_ADDR = "綁定從屬裝置地址:";
+Blockly.Msg.BLUETOOTH_PAIRING_MASTER = "藍芽配對: 主機裝置設定";
+Blockly.Msg.BLUETOOTH_PAIRING_SETTING_BAUDRATE = "設定波特率:";
+Blockly.Msg.BLUETOOTH_PAIRING_SETTING_TIMEOUT = "設定延時:";
+Blockly.Msg.BLUETOOTH_PAIRING_SLAVE = "藍芽配對: 從屬裝置設定";
+Blockly.Msg.BLUETOOTH_SETUP = "儅藍牙接收到";
+Blockly.Msg.BLUETOOTH_SETUP_DATA_SET = "設定";
+Blockly.Msg.BLUETOOTH_SETUP_DO = "並且做";
+Blockly.Msg.BLUETOOTH_SETUP_LIST_SETTING = "長度為";
+Blockly.Msg.BLUETOOTH_SETUP_OPT1 = "壹串字串";
+Blockly.Msg.BLUETOOTH_SETUP_OPT2 = "一個數字";
+Blockly.Msg.BLUETOOTH_SETUP_OPT3 = "一個陣列";
+Blockly.Msg.BLUETOOTH_SETUP_SET = "設定波特率";
+Blockly.Msg.BLUETOOTH_SETUP_TO = "為接收到的訊息";
+Blockly.Msg.BLUETOOTH_TEXT_RECEIVED = "已接收到的字串";
+Blockly.Msg.BLYNK_AUTH = "認證密匙: ";
+Blockly.Msg.BLYNK_CONNECT = "當Blynk連接成功";
+Blockly.Msg.BLYNK_CREATE_WITH_CONTAINER_TITLE_ADD = "Data";
+Blockly.Msg.BLYNK_CREATE_WITH_ITEM_TITLE = "item";
+Blockly.Msg.BLYNK_DATA = "data";
+Blockly.Msg.BLYNK_GET_DATANAME = "從";
+Blockly.Msg.BLYNK_GET_DATANAME1 = "獲得";
+Blockly.Msg.BLYNK_GET_DATANAME2 = "數據";
+Blockly.Msg.BLYNK_GET_INDEX = "第";
+Blockly.Msg.BLYNK_GET_INDEX1 = "位的數據";
+Blockly.Msg.BLYNK_GET_OF = "獲得數據";
+Blockly.Msg.BLYNK_GET_OF1 = "獲得";
+Blockly.Msg.BLYNK_GET_OF2 = "的數據";
+Blockly.Msg.BLYNK_GPS_ALTITUDE = "高度(海拔)";
+Blockly.Msg.BLYNK_GPS_LATITUDE = "緯度";
+Blockly.Msg.BLYNK_GPS_LONGITUDE = "經度";
+Blockly.Msg.BLYNK_GPS_SPEED = "速度";
+Blockly.Msg.BLYNK_LOG = "BLYNK_LOG";
+Blockly.Msg.BLYNK_PW = "WiFi密碼: ";
+Blockly.Msg.BLYNK_READ = "當Blynk請求";
+Blockly.Msg.BLYNK_READ1 = "數據";
+Blockly.Msg.BLYNK_SELECT = "選擇";
+Blockly.Msg.BLYNK_SETUP = "BLYNK初始化";
+Blockly.Msg.BLYNK_SSID = "WiFi名稱: ";
+Blockly.Msg.BLYNK_TIME_DO = "執行";
+Blockly.Msg.BLYNK_TIME_SECOND = "秒";
+Blockly.Msg.BLYNK_TIME_SETTING = "設置計時器: 每隔";
+Blockly.Msg.BLYNK_VIRTUALWRITE = "發送數據到";
+Blockly.Msg.BLYNK_VIRTUALWRITE_DATA = "Data:";
+Blockly.Msg.BLYNK_WIFI = "連接WiFi網絡";
+Blockly.Msg.BLYNK_WRITE = "從";
+Blockly.Msg.BLYNK_WRITE1 = "獲取數據";
+Blockly.Msg.BLYNK_WRITE_VARIABLE = "存到";
+Blockly.Msg.BLYNK_WRITE_VARLENGTH = "長度";
+Blockly.Msg.CHANGE_VALUE_TITLE = "修改值:";
+Blockly.Msg.CHAT = "與您的合作者洽談藉由在此框輸入!";
+Blockly.Msg.CLEAN_UP = "整理積木";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_CONTAINER_TITLE_ADD = "key[]";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_INPUT_WITH = "添加";
+Blockly.Msg.CLOUDDATA_CREATE_WITH_ITEM_TITLE = "value";
+Blockly.Msg.CLOUDDATA_GENERATOR_DATA = "生成數據";
+Blockly.Msg.CLOUDDATA_PARSE_JSON = "的數據從";
+Blockly.Msg.CLOUDDATA_PARSE_KEY = "解析得到名爲";
+Blockly.Msg.CLOUDDATA_PARSE_PRETTYPRINT_DISPLAY = "獲得生成的數據";
+Blockly.Msg.CLOUDDATA_PARSE_SETUP_INIT = "數據解析初始化為";
+Blockly.Msg.CLOUDDATA_PARSE_SETUP_PAYLOAD = "解析內容";
+Blockly.Msg.CLOUDDATA_PARSE_TYPE = "類型爲";
+Blockly.Msg.CO2SENSOR_GET_CO2 = "獲取二氧化碳濃度數值(單位:ppm)";
+Blockly.Msg.CO2SENSOR_GET_TVOC = "獲取 TVOC(揮發性有機物)數值";
+Blockly.Msg.CO2SENSOR_SETUP = "CCS811 空氣質量感應器初始化";
+Blockly.Msg.CO2SENSOR_SETUP_SCL = "SCL 引腳接在:";
+Blockly.Msg.CO2SENSOR_SETUP_SDA = "SDA 引腳接在:";
+Blockly.Msg.COCOCLOUD_CREATE_WITH_CONTAINER_TITLE_ADD = "LIST";
+Blockly.Msg.COCOCLOUD_CREATE_WITH_ITEM_TITLE = "Event";
+Blockly.Msg.COCOCLOUD_GET = "向項目";
+Blockly.Msg.COCOCLOUD_GET1 = "獲取數據";
+Blockly.Msg.COCOCLOUD_GETPAYLOAD = "從項目獲取到的數據";
+Blockly.Msg.COCOCLOUD_POST = "發送到項目";
+Blockly.Msg.COCOCLOUD_POST_DATA = "數據";
+Blockly.Msg.COCOCLOUD_TIME_DAY = "日";
+Blockly.Msg.COCOCLOUD_TIME_GETDATE = "獲取";
+Blockly.Msg.COCOCLOUD_TIME_GETTIME = "獲取";
+Blockly.Msg.COCOCLOUD_TIME_HOUR = "時";
+Blockly.Msg.COCOCLOUD_TIME_MINUTE = "分";
+Blockly.Msg.COCOCLOUD_TIME_MONTH = "月份";
+Blockly.Msg.COCOCLOUD_TIME_SECOND = "秒";
+Blockly.Msg.COCOCLOUD_TIME_SETUP = "世界時間";
+Blockly.Msg.COCOCLOUD_TIME_YEAR = "年份";
+Blockly.Msg.COCOCLOUD_TITLE = "Web服務 CocoCloud";
+Blockly.Msg.COLLAPSE_ALL = "收合積木";
+Blockly.Msg.COLLAPSE_BLOCK = "收合積木";
+Blockly.Msg.COLOR = "顔色";
+Blockly.Msg.COLORANALYZER_SETUP = "顔色分析設定";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "顏色 1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "顏色 2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; // untranslated
+Blockly.Msg.COLOUR_BLEND_RATIO = "比例";
+Blockly.Msg.COLOUR_BLEND_TITLE = "混合";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "透過一個比率 (0.0-1.0)來混合兩種顏色。";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://zh.wikipedia.org/wiki/顏色";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "從調色板中選擇壹種顏色。";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated
+Blockly.Msg.COLOUR_RANDOM_TITLE = "隨機顏色";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "隨機選擇壹種顏色。";
+Blockly.Msg.COLOUR_RGB_BLUE = "藍";
+Blockly.Msg.COLOUR_RGB_GREEN = "綠";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html"; // untranslated
+Blockly.Msg.COLOUR_RGB_RED = "紅";
+Blockly.Msg.COLOUR_RGB_TITLE = "顏色";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "透過指定紅、綠、 藍色的值來建立壹種顏色。所有的值必須介於 0 和 100 之間。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "停止 迴圈";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "繼續下一個 迴圈";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "離開當前的 迴圈";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "跳過這個迴圈的其餘步驟,並繼續下壹次的迴圈運算。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "警告: 此積木僅可用於迴圈內。";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "在陣列 %2 中以 %1 遍歷每個項目";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "遍歷每個陣列中的項目,將變量 '%1' 設定到該項目中,然後執行某些語句";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated
+Blockly.Msg.CONTROLS_FOR_TITLE = "使用 %1 從範圍 %2 到 %3 每隔 %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "從起始數到結尾數中取出變量 \"%1\" 的值,按指定的時間間隔,執行指定的積木。";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "將條件添加到'如果'積木。";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "加入一個最終,所有條件下都都執行的區塊到'如果'積木中";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse"; // untranslated
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "添加、 刪除或重新排列各區塊來此重新配置這個'如果'積木。";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "否則";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "否則如果";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "如果";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "當值為真時,執行壹些語句";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "當值為真時,執行首個語句,否則則執行第二個語句";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句。如果前幾個敘述都不為真,則執行最後一個語句";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://zh.wikipedia.org/wiki/For迴圈";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "執行";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "重複 %1 次";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "多次執行壹些語句";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "重複 直到";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "重複 當";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "當值為否時,執行壹些語句";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "當值為真時,執行壹些語句";
+Blockly.Msg.DELETE_ALL_BLOCKS = "刪除共 %1 塊積木?";
+Blockly.Msg.DELETE_BLOCK = "刪除積木";
+Blockly.Msg.DELETE_X_BLOCKS = "刪除 %1 塊積木";
+Blockly.Msg.DISABLE_BLOCK = "停用積木";
+Blockly.Msg.DUPLICATE_BLOCK = "複製";
+Blockly.Msg.ENABLE_BLOCK = "啟用積木";
+Blockly.Msg.ENCODER_GETROTATIONSPEED = "讀取碼盤數值";
+Blockly.Msg.ENCODER_SETUP = "碼盤初始化·";
+Blockly.Msg.ENCODER_SETUP_1 = "設定中斷引腳";
+Blockly.Msg.ENV_AS = "as"; // untranslated
+Blockly.Msg.ENV_BLUE_PIN = "藍 從接口";
+Blockly.Msg.ENV_BUZZER_ALARM = "Buzzer Alarm"; // untranslated
+Blockly.Msg.ENV_CRITICAL_VAL = "When the critical value of"; // untranslated
+Blockly.Msg.ENV_DO = "Do"; // untranslated
+Blockly.Msg.ENV_GREEN_PIN = "綠 從接口";
+Blockly.Msg.ENV_REACHES = "reaches"; // untranslated
+Blockly.Msg.ENV_RED_PIN = "紅 從接口 ";
+Blockly.Msg.ENV_SENSOR_HUMID = "讀取濕度的數值從接口 ";
+Blockly.Msg.ENV_SENSOR_HUMIDITY = "濕度";
+Blockly.Msg.ENV_SENSOR_LIGHT = "讀取光照的數值從接口 ";
+Blockly.Msg.ENV_SENSOR_MIC = "讀取聲音的數值從接口 ";
+Blockly.Msg.ENV_SENSOR_READ = "讀取數值從";
+Blockly.Msg.ENV_SENSOR_READTEMP = "讀取溫度的數值從接口 ";
+Blockly.Msg.ENV_SENSOR_SET_RGB = "設定RGB燈光";
+Blockly.Msg.ENV_SENSOR_SOUND = "聲音";
+Blockly.Msg.ENV_SENSOR_TEMPUNIT = "設定單位為";
+Blockly.Msg.ENV_SENSOR_UNITC = "攝氏度";
+Blockly.Msg.ENV_SENSOR_UNITF = "華氏度";
+Blockly.Msg.ENV_SET = "Set"; // untranslated
+Blockly.Msg.ENV_SETRGB_B = "藍 從接口";
+Blockly.Msg.ENV_SETRGB_G = "綠 從接口";
+Blockly.Msg.ENV_SETRGB_R = "紅 從接口 ";
+Blockly.Msg.ENV_SETUP = "環境感應設定";
+Blockly.Msg.ENV_SET_TEMP = "Set temperature as "; // untranslated
+Blockly.Msg.ENV_SET_TEMP_UNIT = "Set unit as "; // untranslated
+Blockly.Msg.EXPAND_ALL = "展開積木";
+Blockly.Msg.EXPAND_BLOCK = "展開積木";
+Blockly.Msg.EXPORTPNG = "匯出PNG快照";
+Blockly.Msg.EXPORTXML = "匯出XML文件";
+Blockly.Msg.EXTERNAL_INPUTS = "多欄輸入";
+Blockly.Msg.Friday = "周五";
+Blockly.Msg.GPS_LATITUDE = "獲取緯度";
+Blockly.Msg.GPS_LONGITUDE = "獲取經度";
+Blockly.Msg.GPS_SETUP = "GPS 初始化";
+Blockly.Msg.GREEN = "綠";
+Blockly.Msg.HELP = "說明";
+Blockly.Msg.HID_KEYBOARD_PRESS = "設定鍵盤: 按下";
+Blockly.Msg.HID_KEYBOARD_RELEASE = "設定鍵盤: 釋放";
+Blockly.Msg.HID_KEYBOARD_RELEASEALL = "設定鍵盤: 釋放全部";
+Blockly.Msg.HID_MOUSE_CLICK = "設定鼠標: 點擊";
+Blockly.Msg.HID_MOUSE_CLICK_LEFT = "左鍵";
+Blockly.Msg.HID_MOUSE_CLICK_RIGHT = "右鍵";
+Blockly.Msg.HID_MOUSE_MOVE = "設定鼠標: 向";
+Blockly.Msg.HID_MOUSE_MOVE_DISTANCE = "px";
+Blockly.Msg.HID_MOUSE_MOVE_FOR = "移動";
+Blockly.Msg.HID_MOUSE_PRESS = "設定鼠標: 按下";
+Blockly.Msg.HID_MOUSE_RELEASE = "設定鼠標: 鬆開";
+Blockly.Msg.HID_SETUP = "HID初始化";
+Blockly.Msg.INFRAREDRAY_RECVAL = "接收值";
+Blockly.Msg.INFRAREDRAY_SETUP = "紅外綫接收器設定";
+Blockly.Msg.INLINE_INPUTS = "單欄輸入";
+Blockly.Msg.ISCOLOR = "是否顏色";
+Blockly.Msg.JSONOBJECT_CREATE = "JSON Object"; // untranslated
+Blockly.Msg.JSONTOOL_ARRAY_SIZE = "陣列大小";
+Blockly.Msg.JSONTOOL_GENERATOR = "JSON構造器 ";
+Blockly.Msg.JSONTOOL_GENERATOR_ARRAY_VALUE = "JSON陣列加入: value";
+Blockly.Msg.JSONTOOL_GENERATOR_JSONOBJECT = "Object";
+Blockly.Msg.JSONTOOL_GENERATOR_KEY = "JSON對象加入:Key ";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME = "JSONVar";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE = "生成JSON";
+Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE_NAME = "命名為";
+Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE = "嵌套JSON";
+Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE_NAME = "命名為";
+Blockly.Msg.JSONTOOL_GENERATOR_SETUP = "JSON構造器初始化";
+Blockly.Msg.JSONTOOL_GENERATOR_VALUE = "Value";
+Blockly.Msg.JSONTOOL_OBJECT_SIZE = "對象大小";
+Blockly.Msg.JSONTOOL_PARSE_ARRAY = "(JSON陣列)";
+Blockly.Msg.JSONTOOL_PARSE_BY = "獲取";
+Blockly.Msg.JSONTOOL_PARSE_EACH = "從JSON對象";
+Blockly.Msg.JSONTOOL_PARSE_INDEX = "下標為";
+Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS = "是否成功解析";
+Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS_NAME = "對於JSON對象";
+Blockly.Msg.JSONTOOL_PARSE_JSONOBJECT = "Object";
+Blockly.Msg.JSONTOOL_PARSE_KEY = "(JSON對象)key";
+Blockly.Msg.JSONTOOL_PARSE_KEYVALUE = "從JSON Object %1 獲得key %2 的值";
+Blockly.Msg.JSONTOOL_PARSE_NEST = "內嵌";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT = "打印 JSON ";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_DISPLAY = "規範化數據r";
+Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_WAY = "按規範方式";
+Blockly.Msg.JSONTOOL_PARSE_RESPONSE = "數據內容";
+Blockly.Msg.JSONTOOL_PARSE_SETUP = "JSON解析器初始化";
+Blockly.Msg.JSONTOOL_PARSE_TOVAR = "獲取數據到";
+Blockly.Msg.JSONTOOL_PARSE_VARTYPE = "";
+Blockly.Msg.LED_BACKCOLOR = "背景";
+Blockly.Msg.LED_BRIGHTNESS_WARNING = "亮度應該在範圍 0 - 255 之間";
+Blockly.Msg.LED_BRTN = "亮度";
+Blockly.Msg.LED_CLEAR = "清除";
+Blockly.Msg.LED_COLOR = "顔色";
+Blockly.Msg.LED_COORDINATE = "座標";
+Blockly.Msg.LED_DRAW = "畫";
+Blockly.Msg.LED_FONT = "字體";
+Blockly.Msg.LCD_FONT = "字體:";
+Blockly.Msg.SUPER_LARGE = "超大";
+Blockly.Msg.LARGE = "大";
+Blockly.Msg.MIDDLE = "中";
+Blockly.Msg.SMALL = "小";
+Blockly.Msg.LED_FULL = "實心";
+Blockly.Msg.LED_HEIGHT = "高";
+Blockly.Msg.LED_LINE = "線";
+Blockly.Msg.LED_LINE_END = "終點";
+Blockly.Msg.LED_LINE_START = "起點";
+Blockly.Msg.LED_MULTICOM = "H"; // untranslated
+Blockly.Msg.LED_PANELHEIGHT = "高(拼接個數)";
+Blockly.Msg.LED_PANELWIDTH = "寬(拼接個數)";
+Blockly.Msg.LED_PATTERN = "圖形";
+Blockly.Msg.LED_PIN = "接口";
+Blockly.Msg.LED_PIXEL = "點";
+Blockly.Msg.LED_POSITION = "位置";
+Blockly.Msg.LED_RECTANGLE = "矩形";
+Blockly.Msg.LED_SCROLL = "滾動";
+Blockly.Msg.LED_SCROLL_NO = "否";
+Blockly.Msg.LED_SCROLL_SPEED = "速度";
+Blockly.Msg.LED_SCROLL_YES = "是";
+Blockly.Msg.LED_SETUP = "LED燈組設定";
+Blockly.Msg.LED_SET_BRIGHTNESS = "設定亮度為";
+Blockly.Msg.LED_SET_ROTATION = "設定 LCD 方向旋轉";
+Blockly.Msg.LED_SET_ROTATION_DEGREE = "度";
+Blockly.Msg.LED_SHOW_ALL = "顯示圖案";
+Blockly.Msg.LED_SINGLE_SETUP = "單個LED燈組設定";
+Blockly.Msg.LED_SIZE = "大小";
+Blockly.Msg.LED_STRIP_LOCATION = "位置";
+Blockly.Msg.LED_STRIP_PIXEL = "繪製畫素";
+Blockly.Msg.LED_STROKED = "空心";
+Blockly.Msg.LED_TEXT = "文本";
+Blockly.Msg.LED_WIDTH = "寬";
+Blockly.Msg.LED_WORD = "單字";
+Blockly.Msg.LIGHT_BRIGHTNESS = "上的燈光亮度為:";
+Blockly.Msg.LIGHT_PIN = "設定";
+Blockly.Msg.LIGHT_TURNOFF = "關閉燈光輸出在";
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "建立空陣列";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "返回一個長度為 0 的陣列,不包含任何數據記錄";
+Blockly.Msg.LISTS_CREATE_LIST_WITH = "創建陣列";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "陣列";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "添加、 刪除或重新排列各區塊來此重新配置這個 陣列 積木。";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "將一個項目加入到陣列中。";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "建立一個具備任意數量項目的陣列。";
+Blockly.Msg.LISTS_GETINDEX = "從陣列 %1 中獲取第 %2 位的值";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "首個筆";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒數第#筆";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#"; // untranslated
+Blockly.Msg.LISTS_GET_INDEX_GET = "取值";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "取出並移除";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "最後壹筆";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "隨機";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "移除";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "返回陣列中的首個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_END = "返回在陣列中的指定位置的項目。#1 是最後一個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM_START = "返回在陣列中的指定位置的項目。#1 是首個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "返回陣列中的最後一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "返回陣列中隨機的一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "移除並返回陣列中的首個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END = "移除並返回陣列中的指定位置的項目。#1 是最後一個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START = "移除並返回陣列中的指定位置的項目。#1 是首個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "移除並返回陣列中的最後一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "移除並返回陣列中的隨機一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "移除陣列中的首個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END = "移除在陣列中的指定位置的項目。#1 是最後一個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START = "移除在陣列中的指定位置的項目。#1 是首個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "移除陣列中的最後一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "移除陣列中隨機的一個項目";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "到 倒數 # 位";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "到 #";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "到 最後";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "從 頭 取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "從倒數 # 取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "從 # 取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "複製陣列中指定的部分。";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "找出 首個 項目出現";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated
+Blockly.Msg.LISTS_INDEX_OF_LAST = "找出 最後一個 項目出現";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在陣列中的首個/最後一個匹配項目的索引值。如果未找到則返回 0。";
+Blockly.Msg.LISTS_INLIST = "自陣列";
+Blockly.Msg.LISTS_INT_CREATE_WITH_INPUT_WITH = "使用這些值建立陣列";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 值為空";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "如果該陣列為空,則返回 真。";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated
+Blockly.Msg.LISTS_LENGTH_TITLE = "長度 %1";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "返回陣列的長度。";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
+Blockly.Msg.LISTS_REPEAT_TITLE = "建立陣列使用項目 %1 重複 %2 次數";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "建立包含指定重複次數的 值 的陣列。";
+Blockly.Msg.LISTS_SETINDEX = "賦值 %1 中第 %2 位的值到 %3";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "為";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "插入在";
+Blockly.Msg.LISTS_SET_INDEX_SET = "設定";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "在陣列的起始處添加一個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END = "插入在陣列中的指定位置的項目。#1 是最後一個項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START = "插入在陣列中的指定位置的項目。#1 是首個項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "在陣列的尾端加入一個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "在陣列中隨機插入項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "設定陣列中的首個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_END = "設定在陣列中的指定位置的項目。#1 是最後一個項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM_START = "設定在陣列中的指定位置的項目。#1 是首個項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "設定陣列中的最後一個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "設定陣列中隨機的一個項目";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "升冪排序";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "降冪排序";
+Blockly.Msg.LISTS_SORT_TITLE = "依%1%2%3排序";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "排序字典的複製內容";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "依字母排序並忽略大小寫";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "依數字排序";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "依字母排序";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "從文本製作陣列";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "從陣列拆出文本";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "串起文本陣列成一個文本,由分隔符分隔。";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "拆分文本到文本陣列,按每個分隔符拆分。";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "用分隔符";
+Blockly.Msg.LISTS_STRING_CREATE_WITH_INPUT_WITH = "使用這些值建立陣列";
+Blockly.Msg.LISTS_THE_LENGTH_OF = "%1的長度";
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "否";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "返回 真 或 否。";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "真";
+Blockly.Msg.LOGIC_CASE = "情況";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "如果這兩個輸入區塊內容相等,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "如果首個輸入大於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "如果首個輸入大於或等於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "如果首個輸入小於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "如果首個輸入是小於或等於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "如果這兩個輸入區塊內容不相等,返回 真。";
+Blockly.Msg.LOGIC_DEFAULT = "默認";
+Blockly.Msg.LOGIC_DO = "做";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated
+Blockly.Msg.LOGIC_NEGATE_TITLE = "非 %1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "如果輸入的值是 否,則返回 真。如果輸入的值是 真 返回 否。";
+Blockly.Msg.LOGIC_NULL = "空";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "返回 空。";
+Blockly.Msg.LOGIC_OPERATION_AND = "且";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated
+Blockly.Msg.LOGIC_OPERATION_OR = "或";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "如果這兩個輸入值都為 真,則返回 真。";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "如果至少一個輸入的值為 真,返回 真。";
+Blockly.Msg.LOGIC_SWITCH = "切換";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "測試";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://zh.wikipedia.org/wiki/條件運算符";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "如果為非";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "如果為真";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "檢查 'test' 中的條件。如果條件為 真,將返回 '如果為 真' 值 ;否則,返回 '如果為 否' 的值。";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE = "從AI模組獲取數據";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET = "從 ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE2 = "獲取第";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE3 = "位的數據,並設定類型為";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE2 = "並存到 ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_RECEIVE_LINE3 = "長度爲 ";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND = "創建陣列";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND_LINE2 = "傳輸數據到AI上";
+Blockly.Msg.MAINEASYMODE_TRANSFER_SEND_VALUE = "Data";
+Blockly.Msg.MAINWIFI_RECEIVEMSG = "接收數據到";
+Blockly.Msg.MAINWIFI_RECEIVEMSG_ISSUCCESS = "接收數據成功";
+Blockly.Msg.MAINWIFI_RECEIVEMSG_LENGTH = ",數據長度為";
+Blockly.Msg.MAINWIFI_SENDMSG = "發送數據";
+Blockly.Msg.MAINWIFI_SENDMSG_LENGTH = ",數據長度為";
+Blockly.Msg.MAINWIFI_SETUP = "無線數據傳輸初始化";
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+"; // untranslated
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://zh.wikipedia.org/wiki/算術";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "返回兩個數字的總和。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "返回兩個數字的商。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "返回兩個數字的差。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "返回兩個數字的乘積。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "返回第二個數字的指數的首個數字。";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://zh.wikipedia.org/wiki/加法";
+Blockly.Msg.MATH_CHANGE_TITLE = "將 %1 增加 %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "將數字添加到變量 '%1'。";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://zh.wikipedia.org/wiki/數學常數";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "限制數字 %1 介於 (低) %2 到 (高) %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "限制數字介於兩個指定的數字之間";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷"; // untranslated
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "可被整除";
+Blockly.Msg.MATH_IS_EVEN = "是偶數";
+Blockly.Msg.MATH_IS_NEGATIVE = "是負值";
+Blockly.Msg.MATH_IS_ODD = "是奇數";
+Blockly.Msg.MATH_IS_POSITIVE = "是正值";
+Blockly.Msg.MATH_IS_PRIME = "是質數";
+Blockly.Msg.MATH_IS_TOOLTIP = "如果數字是偶數,奇數,非負整數,正數、 負數或如果它是可被某數字整除,則返回 真 或 否。";
+Blockly.Msg.MATH_IS_WHOLE = "是非負整數";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg.MATH_MODULO_TITLE = "取餘數自 %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "回傳兩個數字相除的餘數";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; // untranslated
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://zh.wikipedia.org/wiki/數";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "一個數字。";
+Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "平均值 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "最大值 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "中位數 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "最小值 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "比較眾數 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "隨機抽取 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "標準差 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "總和 自陣列";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "返回陣列中數值的平均值 (算術平均值)。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "返回陣列中的最大數字。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "返回陣列中數值的中位數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "返回陣列中的最小數字。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "返回一個陣列中的最常見項目的陣列。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "從陣列中返回一個隨機的項目。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "返回陣列中數字的標準差。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "返回陣列中的所有數字的總和。";
+Blockly.Msg.MATH_POWER_SYMBOL = "^"; // untranslated
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "取隨機分數";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "返回介於 (包含) 0.0 到 1.0 之間的隨機數。";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "取隨機整數介於 (低) %1 到 %2";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "回傳限制的數字區間內的隨機數字";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://zh.wikipedia.org/wiki/數值簡化";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "四捨五入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "無條件捨去";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "無條件進位";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "將數字向上或向下舍入。";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "絕對值";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "開根號";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "返回指定數字的絕對值。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "返回指定數字指數的 e";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "返回指定數字的自然對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "返回指定數字的對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "返回指定數字的 negation。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "返回指定數字指數的10的冪次。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "返回指定數字的平方根。";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-"; // untranslated
+Blockly.Msg.MATH_TRIG_ACOS = "acos"; // untranslated
+Blockly.Msg.MATH_TRIG_ASIN = "asin"; // untranslated
+Blockly.Msg.MATH_TRIG_ATAN = "atan"; // untranslated
+Blockly.Msg.MATH_TRIG_COS = "cos"; // untranslated
+Blockly.Msg.MATH_TRIG_HELPURL = "https://zh.wikipedia.org/wiki/三角函數";
+Blockly.Msg.MATH_TRIG_SIN = "sin"; // untranslated
+Blockly.Msg.MATH_TRIG_TAN = "tan"; // untranslated
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "返回指定角度的反餘弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "返回指定角度的反正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "返回指定角度的反正切值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "返回指定角度的餘弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL = '';
+Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP = '返回指定值保留小數點的結果';
+Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0 = '%1 保留 %2 位小數';
+Blockly.Msg.MATH_DIVISION_CONSULT_TITLE = "%1 ÷ %2 商的整數部分";
+Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP = "返回兩數商的整數部分";
+//映射數字範圍,放在math目錄裏
+Blockly.Msg.labplus_mapping_MESSAGE0 = '映射%1 從%2 , %3到%4 , %5'
+Blockly.Msg.labplus_mapping_TOOLTIP = '將0~100中的10映射到0~200中並返回映射值'
+Blockly.Msg.labplus_mapping_HELPURL = ''
+Blockly.Msg.ME = "我";
+Blockly.Msg.MOTION_GETACC = "獲取";
+Blockly.Msg.MOTION_GETACC1 = "方向的加速度";
+Blockly.Msg.MOTION_GETRAWDATA = "獲得數據";
+Blockly.Msg.MOTION_GETYPR = "獲取";
+Blockly.Msg.MOTION_GETYPR1 = "的旋轉度";
+Blockly.Msg.MOTION_ONDIRECTION = "正在向";
+Blockly.Msg.MOTION_ONDIRECTION1 = "偏轉";
+Blockly.Msg.MOTION_ONDIRECTION_BACK = "後";
+Blockly.Msg.MOTION_ONDIRECTION_CLOCKWISE = "順時針";
+Blockly.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE = "逆時針";
+Blockly.Msg.MOTION_ONDIRECTION_FRONT = "前";
+Blockly.Msg.MOTION_ONDIRECTION_LEFT = "左";
+Blockly.Msg.MOTION_ONDIRECTION_RIGHT = "右";
+Blockly.Msg.MOTION_ONSHAKE = "正在搖晃";
+Blockly.Msg.MOTION_SETUP = "運動初始化";
+Blockly.Msg.MOTION_TRENDENCY = "獲得運動趨勢";
+Blockly.Msg.MOTOR_MOVE_DIRECTION1 = "順時針";
+Blockly.Msg.MOTOR_MOVE_DIRECTION2 = "逆時針";
+Blockly.Msg.MOTOR_MOVE_MOTOR = "設定馬達";
+Blockly.Msg.MOTOR_MOVE_MSG = "和";
+Blockly.Msg.MOTOR_SETUP = "馬達驅動車設定";
+Blockly.Msg.MOTOR_SPEED = "速度";
+Blockly.Msg.MOTOR_STOP = "設定馬達停止";
+Blockly.Msg.MUSIC_BEAT = "拍";
+Blockly.Msg.MUSIC_DURATION = "持續";
+Blockly.Msg.MUSIC_INSTRUMENT = "設定樂器";
+Blockly.Msg.MUSIC_INSTRUMENT_ACCORION = "手風琴";
+Blockly.Msg.MUSIC_INSTRUMENT_BASS = "貝斯";
+Blockly.Msg.MUSIC_INSTRUMENT_CELLO = "大提琴";
+Blockly.Msg.MUSIC_INSTRUMENT_DRAWBARORGAN = "爵士風琴";
+Blockly.Msg.MUSIC_INSTRUMENT_DRUM = "太鼓";
+Blockly.Msg.MUSIC_INSTRUMENT_EGUITAR = "電吉他";
+Blockly.Msg.MUSIC_INSTRUMENT_EPIANO = "電子琴";
+Blockly.Msg.MUSIC_INSTRUMENT_FLUTE = "長笛";
+Blockly.Msg.MUSIC_INSTRUMENT_GPIANO = "經典鋼琴";
+Blockly.Msg.MUSIC_INSTRUMENT_GUITAR = "吉他";
+Blockly.Msg.MUSIC_INSTRUMENT_MUSICBOX = "八音盒";
+Blockly.Msg.MUSIC_INSTRUMENT_PICCOLO = "短笛";
+Blockly.Msg.MUSIC_INSTRUMENT_SAX = "薩克斯";
+Blockly.Msg.MUSIC_INSTRUMENT_SITAR = "西塔琴";
+Blockly.Msg.MUSIC_INSTRUMENT_TRUMPET = "喇叭";
+Blockly.Msg.MUSIC_INSTRUMENT_VIOLA = "中提琴";
+Blockly.Msg.MUSIC_INSTRUMENT_VIOLIN = "小提琴";
+Blockly.Msg.MUSIC_INSTRUMENT_WHISTLE = "汽笛";
+Blockly.Msg.MUSIC_INSTRUMENT_WOODBLOCK = "木魚";
+Blockly.Msg.MUSIC_INSTRUMENT_XYLOPHONE = "木琴";
+Blockly.Msg.MUSIC_MP3_CURRENTVOLUME = "獲得當前音量";
+Blockly.Msg.MUSIC_MP3_PLAYALL = "播放陣列";
+Blockly.Msg.MUSIC_MP3_PLAYALL_NAME = "播放模式";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_LISTREPEAT = "陣列循環";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_NORMAL = "單次";
+Blockly.Msg.MUSIC_MP3_PLAYMODE_REPEAT = "單曲循環";
+Blockly.Msg.MUSIC_MP3_PLAYONE = "播放音樂文件";
+Blockly.Msg.MUSIC_MP3_PLAYONE_NAME = "音樂:";
+Blockly.Msg.MUSIC_MP3_PLAYONE_NORMAL = "單次";
+Blockly.Msg.MUSIC_MP3_PLAYONE_REPEAT = "循環";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING = "播放器設定:";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_NEXTSONG = "下壹曲";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PAUSE = "暫停";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PLAYALL = "播放所有樂曲";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_PRESONG = "上壹曲";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_RESUME = "播放";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_STOP = "停止";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_VOLDOWN = "調小音量";
+Blockly.Msg.MUSIC_MP3_PLAYSETTING_VOLUP = "調大音量";
+Blockly.Msg.MUSIC_MP3_PLAY_NORMAL = "順序播放";
+Blockly.Msg.MUSIC_MP3_PLAY_REPEAT = "陣列循環";
+Blockly.Msg.MUSIC_MP3_SETUP = "MP3播放器初始化";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME = "設定音量";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_HIGH = "高";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_LOW = "低";
+Blockly.Msg.MUSIC_MP3_SETUP_SETVOLUME_MID = "中";
+Blockly.Msg.MUSIC_MP3_SETVOLUME = "設定音量為";
+Blockly.Msg.MUSIC_NOTE = "音階";
+Blockly.Msg.MUSIC_PLAY_NOTE = "播放";
+Blockly.Msg.MUSIC_PLAY_NOTE_TOOLTIP = "right click this block and check the help page to see the corresponding music note."; // untranslated
+Blockly.Msg.MUSIC_REST = "音符間隔";
+Blockly.Msg.MUSIC_VOLUME = "設定音量";
+Blockly.Msg.MUSIC_VOL_MAX = "最大";
+Blockly.Msg.MUSIC_VOL_MIN = "最小";
+Blockly.Msg.Monday = "周壹";
+Blockly.Msg.Motion_Accelerate = "加速度";
+Blockly.Msg.Motion_Gyroscope = "陀螺儀";
+Blockly.Msg.NBIOT_ENABLE = "啟用 NB-IoT 序列埠交互指令";
+Blockly.Msg.NBIOT_HTTP_APIKEY = "雲端事件API密匙";
+Blockly.Msg.NBIOT_HTTP_CLOUD_GET = "NB-IoT CocoCloud: Receive Data"; // untranslated
+Blockly.Msg.NBIOT_HTTP_CONTENTTYPE = "Content Type"; // untranslated
+Blockly.Msg.NBIOT_HTTP_DATA = "數據名稱";
+Blockly.Msg.NBIOT_HTTP_IFTTT_APIKEY = "IFTTT API Key";
+Blockly.Msg.NBIOT_HTTP_IFTTT_EVENT = "IFTTT項目名稱";
+Blockly.Msg.NBIOT_HTTP_IFTTT_TITLE = "NB-IoT 連接IFTTT:發送數據";
+Blockly.Msg.NBIOT_HTTP_THINGSPEAK_APIKEY = "事件API密匙";
+Blockly.Msg.NBIOT_HTTP_THINGSPEAK_TITLE = "NB-IoT 連接Thingspeak:發送數據";
+Blockly.Msg.NBIOT_HTTP_TITLE = "NB-IoT 連接CocoCloud:發送數據";
+Blockly.Msg.NBIOT_IS_POWERON = "NB-IoT 模組啓動成功";
+Blockly.Msg.NBIOT_NETWORK_CONNECTED = "網絡連接成功";
+Blockly.Msg.NBIOT_NETWORK_IP = "獲取 NB-IoT 模組 IP 地址";
+Blockly.Msg.NBIOT_SETUP = "NB-IoT 通訊初始化";
+Blockly.Msg.NEW_INSTANCE = "New instance..."; // untranslated
+Blockly.Msg.NEW_INSTANCE_TITLE = "New instance name:"; // untranslated
+Blockly.Msg.NEW_VARIABLE = "新變量...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "新變量名稱:";
+Blockly.Msg.NRFMODULE_GET_RECEIVED_DATA = "獲取 nRF 模組收到的數據";
+Blockly.Msg.NRFMODULE_RECEIVING_DATA_TEXT = "nRF 模組開始接收數據";
+Blockly.Msg.NRFMODULE_SEND_DATA_DATA_TEXT = "數據內容:";
+Blockly.Msg.NRFMODULE_SEND_DATA_TITLE = "nRF 模組傳送數據";
+Blockly.Msg.NRFMODULE_SETUP_CE_TEXT = "CE 引腳連線:";
+Blockly.Msg.NRFMODULE_SETUP_CSN_TEXT = "CSN 引腳連線:";
+Blockly.Msg.NRFMODULE_SETUP_SET_ADDRESS = "設定通訊地址";
+Blockly.Msg.NRFMODULE_SETUP_TITLE = "nRF24L01 通訊模組初始化";
+Blockly.Msg.OLCD_CENTER_POS = "圓心座標";
+Blockly.Msg.OLCD_SCALE = "尺寸";
+Blockly.Msg.OLCD_WT = "字串換欄";
+Blockly.Msg.OLCD_BW = "邊框寬度";
+Blockly.Msg.OLCD_SET_POS = "設定座標";
+Blockly.Msg.OLCD_CIRCLE = "圓形";
+Blockly.Msg.OLCD_CLEAR = "清除";
+Blockly.Msg.OLCD_COLOR = "顔色";
+Blockly.Msg.OLCD_COORDINATE = "起始點座標";
+Blockly.Msg.OLCD_DRAW = "LCD 螢幕繪製";
+Blockly.Msg.OLCD_FALSE = "否";
+Blockly.Msg.OLCD_VLINE = "垂直";
+Blockly.Msg.OLCD_HLINE = "水平";
+Blockly.Msg.OLCD_FULLCIRCLE = "全圓";
+Blockly.Msg.OLCD_CIRCLE = "圓圈";
+Blockly.Msg.OLCD_LENGTHIS = "長度是";
+Blockly.Msg.OLCD_FULL = "實心";
+Blockly.Msg.OLCD_STROKED = "空心";
+Blockly.Msg.OLCD_HEIGHT = "高";
+Blockly.Msg.OLCD_SCREEN = "螢幕";
+Blockly.Msg.OLCD_LINE = "直線";
+Blockly.Msg.OLCD_LINE_END = "到";
+Blockly.Msg.OLCD_LINE_START = "從";
+Blockly.Msg.OLCD_POINT = "點";
+Blockly.Msg.OLCD_POSITION = "位置";
+Blockly.Msg.OLCD_RADIUS = "設定半徑為";
+Blockly.Msg.OLCD_RECTANGLE = "矩形";
+Blockly.Msg.OLCD_SETROTATION = "將 LCD 螢幕旋轉至";
+Blockly.Msg.OLCD_SETROTATION_DEGREE = "度";
+Blockly.Msg.OLCD_SETUP = "OLCD螢幕設定";
+Blockly.Msg.OLCD_SIZE = "尺寸";
+Blockly.Msg.OLCD_STROKED = "空心";
+Blockly.Msg.OLCD_TEXT = "文本";
+Blockly.Msg.OLCD_TEXTNEWLINE = "換欄";
+Blockly.Msg.OLCD_TRIANGLE = "三角形";
+Blockly.Msg.OLCD_TRUE = "是";
+Blockly.Msg.OLCD_WIDTH = "寬";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "允許語句";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "與:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程式";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "執行使用者定義的函數 '%1'。";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程式";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "執行使用者定義的函數 '%1' 並使用它的回傳值";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "與:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "建立 '%1'";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "描述此函數...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "func1";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "自定義函數";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE_CALLBACK = "回調函數";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "創建一個無回傳值的函數。";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "回傳";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "創建一個有回傳值的函數。";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "警告: 此函數中有重複的參數。";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "反白顯示函式定義";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause"; // untranslated
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "如果值為 真,則返回第二個值。";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "警告: 此積木僅可在定義函式時使用。";
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "變量:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "添加函數輸入。";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "參數";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "添加、刪除或重新排列此函數的輸入。";
+Blockly.Msg.PULSESENSOR_GETBPM = "讀取心率的值為";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_PRINT = "在串口相機打印心率原始數據";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_WHEN = "當心率跳動時";
+Blockly.Msg.PULSESENSOR_HEARTBEAT_WHENNO = "當心率未跳動時";
+Blockly.Msg.PULSESENSOR_SETUP = "心率傳感設定";
+Blockly.Msg.PULSESENSOR_SETUP_1 = "設定感應器的接口為";
+Blockly.Msg.READ_B = "讀取藍";
+Blockly.Msg.READ_G = "讀取綠";
+Blockly.Msg.READ_R = "讀取紅";
+Blockly.Msg.RED = "紅";
+Blockly.Msg.REDO = "重試";
+Blockly.Msg.REMOVE_COMMENT = "移除註解";
+Blockly.Msg.RENAME_INSTANCE = "Rename instance..."; // untranslated
+Blockly.Msg.RENAME_INSTANCE_TITLE = "Rename all '%1' instances to:"; // untranslated
+Blockly.Msg.RENAME_VARIABLE = "重新命名變量...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "將所有 \"%1\" 變量重新命名為:";
+Blockly.Msg.REQUEST_DATA_CLOUD = "雲端數據";
+Blockly.Msg.REQUEST_DATA_STRING = "字串";
+Blockly.Msg.RFID_READID = "讀取卡片ID";
+Blockly.Msg.RFID_SETUP = "RFID初始化";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT = "設定雙足的動作";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_BACKYARD = "向後退";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_GOINGUP = "上下蹲";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_KICKLEFT = "左踢腳";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_KICKRIGHT = "右踢腳";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKLEFT = "往左月球漫步";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_MOONWALKRIGHT = "往右月球漫步";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_RUN = "向前跑";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_SWING = "搖擺舞";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_TURNLEFT = "原地左轉";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_TURNRIGHT = "原地右轉";
+Blockly.Msg.ROBOT_SETMOVE_MOVEMENT_WALK = "向前走";
+Blockly.Msg.ROBOT_SETMOVE_TEMPO = "在速度為";
+Blockly.Msg.ROBOT_SETUP = "雙足行走機器人設定";
+Blockly.Msg.ROBOT_SETUP_SETRLPIN = "和左腳接口";
+Blockly.Msg.ROBOT_SETUP_SETRRPIN = "設定右腳接口";
+Blockly.Msg.ROBOT_SETUP_SETYLPIN = "和左膝接口";
+Blockly.Msg.ROBOT_SETUP_SETYRPIN = "設定右膝接口";
+Blockly.Msg.RTC_DAY = "日";
+Blockly.Msg.RTC_GETDATE = "獲取當前日期";
+Blockly.Msg.RTC_GETTIME = "獲取當前時間";
+Blockly.Msg.RTC_GETWEEK = "獲取當前周幾";
+Blockly.Msg.RTC_setDATE = "設定當前日期";
+Blockly.Msg.RTC_setTIME = "設定當前時間";
+Blockly.Msg.RTC_setWEEK = "設定當前爲周";
+Blockly.Msg.RTC_WEI = "爲";
+Blockly.Msg.RTC_getDateTime = "獲取時間(年,月,日,星期,時,分,秒)";
+Blockly.Msg.RTC_HOUR = "時";
+Blockly.Msg.RTC_MINUTE = "分";
+Blockly.Msg.RTC_MONTH = "月";
+Blockly.Msg.RTC_SECOND = "秒";
+Blockly.Msg.RTC_SETDATE = "日期";
+Blockly.Msg.RTC_SETDATETIME = "設定日期時間周幾";
+Blockly.Msg.RTC_SETTIME = "時鐘";
+Blockly.Msg.RTC_SETUP = "RTC初始化設定";
+Blockly.Msg.RTC_SETWEEK = "周幾";
+Blockly.Msg.RTC_WEEK = "周";
+Blockly.Msg.RTC_YEAR = "年";
+Blockly.Msg.SONAR = "超聲波";
+Blockly.Msg.SONAR_READ_DIST = "讀取距離從";
+Blockly.Msg.SONAR_SETUP = "設定";
+Blockly.Msg.SONAR_SETUP_ECHOPIN = "和 Echo";
+Blockly.Msg.SONAR_SETUP_MAXDIST = "設定最大距離";
+Blockly.Msg.SONAR_SETUP_TRIGPIN = "設定 Trig";
+Blockly.Msg.Saturday = "周六";
+Blockly.Msg.Sunday = "周日";
+Blockly.Msg.DEEP_LEARING = "深度学习机器";
+Blockly.Msg.Emotion_recognition = "情绪识别";
+Blockly.Msg.Gesture_recognition = "手势识别";
+Blockly.Msg.Object_recognition = "物体识别";
+Blockly.Msg.guesswork_recognition = "猜拳手勢識別";
+Blockly.Msg.Posture_recognition = "姿态识别";
+Blockly.Msg.Course_people = "慧眼识人";
+Blockly.Msg.Voice_recognition = "语音识别";
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "後加入字串";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
+Blockly.Msg.TEXT_APPEND_TO = "在";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "將壹些字串追加到變量 '%1'。";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "轉成 小寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "轉成 首字母大寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "轉成 大寫";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "使用不同的大小寫複製這段字串。";
+Blockly.Msg.TEXT_CHARAT_FIRST = "取首個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "取得 倒數第 # 個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "取得 字元 #";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "的字元在字串";
+Blockly.Msg.TEXT_CHARAT_LAST = "取最後一個字元";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "取隨機一個字元";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "返回位於指定位置的字元。";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "將一個項目加入到字串中。";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "加入";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "添加、 刪除或重新排列各區塊來此重新配置這個字串積木。";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "到 倒數第 # 個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "到 字元 #";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "到 最後一個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "自字串";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "取得段落字串 自 首個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "取得段落字串自 #";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "取得段落字串自 #";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "返回指定的部分字串。";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "在字串";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "尋找 首個 出現的字串";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "尋找 最後一個 出現的字串";
+Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "返回在第二個字串中的首個/最後一個匹配項目的索引值。如果未找到則返回 0。";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 為空";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "如果提供的字串為空,則返回 真。";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "建立字串使用";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "透過串起任意數量的項目來建立壹段字串。";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
+Blockly.Msg.TEXT_LENGTH_TITLE = "長度 %1";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "返回這串字串的字元數(含空格) 。";
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated
+Blockly.Msg.TEXT_PRINT_TITLE = "序列埠印出 %1";
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "序列埠印出指定的字串、 數字或其他值。";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "輸入數字";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "輸入字串";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "輸入 數字 並顯示提示訊息";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "輸入 字串 並顯示提示訊息";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://zh.wikipedia.org/wiki/字串";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "字元、 單詞或壹欄字串。";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "消除兩側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "消除左側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "消除右側空格";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "複製這段字串的同時刪除兩端多餘的空格。";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD = "Field";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_INPUT_WITH = "FIELD";
+Blockly.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE = "value";
+Blockly.Msg.TODAY = "今天";
+Blockly.Msg.TOUCH_AT = "觸摸傳感接口 ";
+Blockly.Msg.TOUCH_CASE = "按鍵";
+Blockly.Msg.TOUCH_DEFAULT = "默認";
+Blockly.Msg.TOUCH_DO = "執行";
+Blockly.Msg.TOUCH_LOOSE = "儅鬆開時";
+Blockly.Msg.TOUCH_SETUP = "觸摸感應設定";
+Blockly.Msg.TOUCH_SWITCH = "⌘ 當觸碰傳感接口";
+Blockly.Msg.TOUCH_THEN_LOOSE_SWITCH = "⌘ 儅鬆開被觸碰的接口";
+Blockly.Msg.Thursday = "周四";
+Blockly.Msg.Tuesday = "周二";
+Blockly.Msg.UNDO = "還原";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "item"; // untranslated
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "建立 '設定 %1'";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "返回此變量的值。";
+Blockly.Msg.VARIABLES_SET = "設定 %1 為 %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "建立 '取得 %1'";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "設定此變量,好和輸入值相等。";
+Blockly.Msg.WATERTEMP_GET_TEMP = "獲取水溫數據 (ºC)";
+Blockly.Msg.WATERTEMP_SETUP_ATTACHED_PIN = "數字引腳設定:";
+Blockly.Msg.WATERTEMP_SETUP_BLOCKNAME = "水溫感應器";
+Blockly.Msg.WATERTEMP_SETUP_SENSORTYPE = "感應器型號:";
+Blockly.Msg.WATERTEMP_SETUP_SETUP = "初始化";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_SETPATH = " set path to:"; // untranslated
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_BOTTOM = "設定底部按鈕為:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_CENTER = "設定中間按鈕為:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_LEFT = "設定左側按鈕為:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_RIGHT = "設定右側按鈕為:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TEXT_TOP = "設定頂部按鈕為:";
+Blockly.Msg.WEBPAGE_BUTTONCTRL_TITLE = "網頁控制面板: 按鍵控制器";
+Blockly.Msg.WEBPAGE_BUTTON_NAME = "按鈕名稱";
+Blockly.Msg.WEBPAGE_BUTTON_ROUTER = "設定請求路徑為:";
+Blockly.Msg.WEBPAGE_BUTTON_TITLE = "網頁控制面板: 按鈕";
+Blockly.Msg.WEBPAGE_COLORPICKER_PATH = "設定請求路徑為:";
+Blockly.Msg.WEBPAGE_COLORPICKER_SUBTITLE = "*註意: 傳輸的顏數據為 RGB 顏色制式";
+Blockly.Msg.WEBPAGE_COLORPICKER_TITLE = "網頁控制面板: 取色器控制元件";
+Blockly.Msg.WEBPAGE_LABLE = "標籤名稱";
+Blockly.Msg.WEBPAGE_LABLE_TITLE = "網頁控制面板: 字串";
+Blockly.Msg.WIFICLIENT_HTTP_GET_DATA = "獲取數據並存到";
+Blockly.Msg.WIFICLIENT_HTTP_GET_URL = "發送GET請求到";
+Blockly.Msg.WIFICLIENT_HTTP_POST_DATA = "數據";
+Blockly.Msg.WIFICLIENT_HTTP_POST_TYPE = "類型爲";
+Blockly.Msg.WIFICLIENT_HTTP_POST_URL = "發送POST請求到";
+Blockly.Msg.WIFICLIENT_HTTP_POST_VAR = "創建陣列";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_DATA = "要發送內容";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_TYPE = "類型爲";
+Blockly.Msg.WIFICLIENT_HTTP_PUT_URL = "發送PUT請求到";
+Blockly.Msg.WIFICLIENT_HTTP_RESPONSE = "獲得HTTP響應";
+Blockly.Msg.WIFICLIENT_HTTP_SETUP = "客戶端初始化";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET = "從";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE2 = "獲取第";
+Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE3 = "位的數據,類型爲";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_END = "值";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA = "獲取數據並將其存到";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY = "從";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY1 = "獲取雲端項目中";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY2 = "屬性名爲";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA = "發送數據:";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR = "變量";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM = "";
+Blockly.Msg.WIFIEASYMODE_COCOCLOUD_TYPE = "的";
+Blockly.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME = "數據名:";
+Blockly.Msg.WIFIEASYMODE_COCOClOUD_EVENT = "Cloud Event API Key :";
+Blockly.Msg.WIFIEASYMODE_IFTTT_EVENT = "IFTTT項目名稱:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_FETCH = "獲取數據";
+Blockly.Msg.WIFIEASYMODE_IFTTT_KEY = "IFTTT Key:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_POST = "發送數據";
+Blockly.Msg.WIFIEASYMODE_IFTTT_SENDDATA = "發送數據:";
+Blockly.Msg.WIFIEASYMODE_IFTTT_TYPE = "Webhook類型:";
+Blockly.Msg.WIFIEASYMODE_NETWORK_PW = "密碼:";
+Blockly.Msg.WIFIEASYMODE_NETWORK_SSID = "SSID:";
+Blockly.Msg.WIFIEASYMODE_NETWORK_TITLE = "連接Wi-Fi";
+Blockly.Msg.WIFIEASYMODE_THINGSPEAK_APIKEY = "Channel API Key:";
+Blockly.Msg.WIFIEASYMODE_THINGSPEAK_SENDDATA = "發送數據:";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE = "從主機板獲取數據";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET = "從";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE2 = "獲取第";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE3 = "位的數據,並設定類型為";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE4 = "";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2 = "並存到";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE3 = "長度爲 ";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND = "創建陣列";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2 = "傳輸數據到主機板上";
+Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE = "Data";
+Blockly.Msg.WIFINETWORK_AP_PW = "密碼:";
+Blockly.Msg.WIFINETWORK_AP_SETUP = "建立Wi-Fi熱點";
+Blockly.Msg.WIFINETWORK_AP_SSID = "SSID:";
+Blockly.Msg.WIFINETWORK_CONNECT = "連接Wi-Fi";
+Blockly.Msg.WIFINETWORK_CONNECT_PW = "密碼:";
+Blockly.Msg.WIFINETWORK_CONNECT_SSID = "SSID:";
+Blockly.Msg.WIFINETWORK_GETGATEWAYIP = "獲取網關IP";
+Blockly.Msg.WIFINETWORK_GETLOCALIP = "獲取本地IP";
+Blockly.Msg.WIFINETWORK_GETMACADDR = "獲取MAC地址";
+Blockly.Msg.WIFINETWORK_GETSTATIONNUM = "獲取連接設備數量";
+Blockly.Msg.WIFINETWORK_ISCONNECTED = "是否連接成功";
+Blockly.Msg.WIFINETWORK_PW_WARN = "密碼設定應該超過8位";
+Blockly.Msg.WIFISERVER_HANDLECLIENT = "handleclient";
+Blockly.Msg.WIFISERVER_LIST = "創建陣列";
+Blockly.Msg.WIFISERVER_RECEIVE = "服務器接收數據";
+Blockly.Msg.WIFISERVER_RECEIVE_GET = "從";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_INT = "數字";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_LINE2 = "獲取第";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_LINE3 = "位的值,類型爲";
+Blockly.Msg.WIFISERVER_RECEIVE_GET_STRING = "字串";
+Blockly.Msg.WIFISERVER_RECEIVE_LENGTH = "長度爲";
+Blockly.Msg.WIFISERVER_RECEIVE_TO = "並存儲到";
+Blockly.Msg.WIFISERVER_SEND = "服務器發送數據";
+Blockly.Msg.WIFISERVER_SERVERSEND = "服務器 推送 ";
+Blockly.Msg.WIFISERVER_SERVERSEND_CODE = "HTTP 狀態碼";
+Blockly.Msg.WIFISERVER_SERVERSEND_CONTENT = "內容";
+Blockly.Msg.WIFISERVER_SERVERSEND_TYPE = "類型";
+Blockly.Msg.WIFISERVER_SETROOTPAGE = "設定主頁";
+Blockly.Msg.WIFISERVER_SETROUTER = "服務器路由";
+Blockly.Msg.WIFISERVER_SETROUTER_ONNOTFOUND = "設定服務器路由當不存在URL時, 處理";
+Blockly.Msg.WIFISERVER_SETROUTER_SET = "設定路由";
+Blockly.Msg.WIFISERVER_SETROUTER_WITH = "響應";
+Blockly.Msg.WIFISERVER_SETUP = "服務器初始化";
+Blockly.Msg.WIFISERVER_WAIT_CONNECTION = "等待連接";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT = "Web服務 IFTTT";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_EVENT = "Event";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY = "Api-Key ";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY1 = "Key1";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY2 = "Key2";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_KEY3 = "Key3";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE1 = "Value1";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE2 = "Value2";
+Blockly.Msg.WIFIWEBSERVICES_IFTTT_SET_VALUE3 = "Value3";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK = "Web服務 Thinkspeak";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_FIELD1 = "Field";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_KEY = "Api-key";
+Blockly.Msg.WIFIWEBSERVICES_THINKSPEAK_SET_VALUE = "Value";
+Blockly.Msg.WIFI_RECEIVEMSG = "接收數據至";
+Blockly.Msg.WIFI_RECEIVEMSG_ISSUCCESS = "接收數據成功";
+Blockly.Msg.WIFI_RECEIVEMSG_LENGTH = ", 數據長度 ";
+Blockly.Msg.WIFI_SENDMSG = "發送數據 ";
+Blockly.Msg.WIFI_SENDMSG_LENGTH = ", 數據長度 ";
+Blockly.Msg.WIFI_SETUP = "輸出傳輸初始化";
+Blockly.Msg.Wednesday = "周三";
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+
+
+Blockly.Msg.ADD_COMMENT = "加入註解";
+Blockly.Msg.AIYBOARD_AIY_BOARD = "AIY Board"; // untranslated
+Blockly.Msg.AIYBOARD_BUTTON_FROM = "from"; // untranslated
+Blockly.Msg.AIYBOARD_BUTTON_WHEN = "when button"; // untranslated
+Blockly.Msg.AIYBOARD_FROM = "from aiy.board"; // untranslated
+Blockly.Msg.AIYBOARD_IMPORT = "import"; // untranslated
+Blockly.Msg.AIYBOARD_LED_STATE = "get LED state of"; // untranslated
+Blockly.Msg.AIYBOARD_LED_STATUS = "get LED status of"; // untranslated
+Blockly.Msg.CAMERA_CAMERA = "camera"; // untranslated
+Blockly.Msg.CAMERA_DO = "Do"; // untranslated
+Blockly.Msg.CAMERA_FPS = "fps"; // untranslated
+Blockly.Msg.CAMERA_FRAME_RATE = "Frame Rete:"; // untranslated
+Blockly.Msg.CAMERA_IMPORT = "import piCamera"; // untranslated
+Blockly.Msg.CAMERA_RESOLUTION = "Resolution"; // untranslated
+Blockly.Msg.CAMERA_SENSOR_MODE = "Sensor Mode:"; // untranslated
+Blockly.Msg.CAMERA_SET_BOUNDING = "Set bounding box:"; // untranslated
+Blockly.Msg.CAMERA_USE_AS = "Use PiCamera as"; // untranslated
+Blockly.Msg.CHANGE_VALUE_TITLE = "修改值:";
+Blockly.Msg.CLEAN_UP = "清理積木";
+Blockly.Msg.COLLAPSE_ALL = "收合積木";
+Blockly.Msg.COLLAPSE_BLOCK = "收合積木";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "顏色 1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "顏色 2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; // untranslated
+Blockly.Msg.COLOUR_BLEND_RATIO = "比例";
+Blockly.Msg.COLOUR_BLEND_TITLE = "混合";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "透過一個比率 (0.0-1.0)來混合兩種顏色。";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://zh.wikipedia.org/wiki/顏色";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "從調色板中選擇壹種顏色。";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated
+Blockly.Msg.COLOUR_RANDOM_TITLE = "隨機顏色";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "隨機選擇壹種顏色。";
+Blockly.Msg.COLOUR_RGB_BLUE = "藍";
+Blockly.Msg.COLOUR_RGB_GREEN = "綠";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html"; // untranslated
+Blockly.Msg.COLOUR_RGB_RED = "紅";
+Blockly.Msg.COLOUR_RGB_TITLE = "顏色";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "透過指定紅、綠、 藍色的值來建立壹種顏色。所有的值必須介於 0 和 100 之間。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "停止 迴圈";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "繼續下一個 迴圈";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "離開當前的 迴圈";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "跳過這個迴圈的其餘步驟,並繼續下壹次的迴圈運算。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "警告: 此積木僅可用於迴圈內。";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "在陣列 %2 中以 %1 遍歷每個項目";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "遍歷每個陣列中的項目,將變量 '%1' 設定到該項目中,然後執行某些語句";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated
+Blockly.Msg.CONTROLS_FOR_TITLE = "使用 %1 從範圍 %2 到 %3 每隔 %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "從起始數到結尾數中取出變量 \"%1\" 的值,按指定的時間間隔,執行指定的積木。";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "將條件添加到'如果'積木。";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "加入一個最終,所有條件下都都執行的區塊到'如果'積木中";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse"; // untranslated
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "添加、 刪除或重新排列各區塊來此重新配置這個'如果'積木。";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "否則";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "否則如果";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "如果";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "當值為真時,執行壹些語句";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "當值為真時,執行首個語句,否則則執行第二個語句";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "如果首個值為真,則執行首個語句。否則當第二個值為真時,則執行第二個語句。如果前幾個敘述都不為真,則執行最後一個語句";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://zh.wikipedia.org/wiki/For迴圈";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "執行";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "重複 %1 次";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "多次執行壹些語句";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "重複 直到";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "重複 當";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "當值為否時,執行壹些語句";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "當值為真時,執行壹些語句";
+Blockly.Msg.DELETE_ALL_BLOCKS = "刪除共 %1 塊積木?";
+Blockly.Msg.DELETE_BLOCK = "刪除積木";
+Blockly.Msg.DELETE_VARIABLE = "刪除%1變量";
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "刪除%1使用的%2變量?";
+Blockly.Msg.DELETE_X_BLOCKS = "刪除 %1 塊積木";
+Blockly.Msg.DICTS_CREATE_EMPTY_TITLE = "empty dictionary"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD = "Create Dictionary"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP = ""; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_INPUT_WITH = "create dict with"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_KEY = "key"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_MAPPING = ":"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE = "key/value"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP = ""; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_TOOLTIP = ""; // untranslated
+Blockly.Msg.DICT_GET = "get key"; // untranslated
+Blockly.Msg.DICT_GET_TO = "of"; // untranslated
+// Blockly.Msg.DICT_KEYS = "get all keys from"; // untranslated
+Blockly.Msg.DISABLE_BLOCK = "停用積木";
+Blockly.Msg.DUPLICATE_BLOCK = "複製";
+Blockly.Msg.ENABLE_BLOCK = "啟用積木";
+Blockly.Msg.EXPAND_ALL = "展開積木";
+Blockly.Msg.EXPAND_BLOCK = "展開積木";
+Blockly.Msg.EXTERNAL_INPUTS = "多欄輸入";
+Blockly.Msg.HELP = "說明";
+Blockly.Msg.INLINE_INPUTS = "單欄輸入";
+Blockly.Msg.LISTS_APPEND = "append item"; // untranslated
+Blockly.Msg.LISTS_APPEND_HELPURL = "http://google.com"; // untranslated
+Blockly.Msg.LISTS_APPEND_TO = "to list"; // untranslated
+Blockly.Msg.LISTS_APPEND_TOOLTIP = "Append an element to a list"; // untranslated
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "建立空陣列";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "返回一個長度為 0 的陣列,不包含任何數據記錄";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "陣列";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "添加、 刪除或重新排列各區塊來此重新配置這個 陣列 積木。";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
+Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "使用這些值建立陣列";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "將一個項目加入到陣列中。";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "建立一個具備任意數量項目的陣列。";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "首個筆";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒數第#筆";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#"; // untranslated
+Blockly.Msg.LISTS_GET_INDEX_GET = "取值";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "取出並移除";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "最後壹筆";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "隨機";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "移除";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "返回陣列中的首個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "返回在陣列中的指定位置的項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "返回陣列中的最後一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "返回陣列中隨機的一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "移除並返回陣列中的首個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "移除並返回陣列中的指定位置的項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "移除並返回陣列中的最後一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "移除並返回陣列中的隨機一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "移除陣列中的首個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "移除在陣列中的指定位置的項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "移除陣列中的最後一個項目";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "移除陣列中隨機的一個項目";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "到 倒數 # 位";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "到 #";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "到 最後";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "從 頭 取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "從倒數 # 取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "從 # 取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "複製陣列中指定的部分。";
+Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 是最後一個項目。";
+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 是首個項目。";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "找出 首個 項目出現";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated
+Blockly.Msg.LISTS_INDEX_OF_LAST = "找出 最後一個 項目出現";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在陣列中的首個/最後一個匹配項目的索引值。如果未找到則返回 %1。";
+Blockly.Msg.LISTS_INLIST = "自陣列";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 值為空";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "如果該陣列為空,則返回 真。";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated
+Blockly.Msg.LISTS_LENGTH_TITLE = "長度 %1";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "返回陣列的長度。";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
+Blockly.Msg.LISTS_REPEAT_TITLE = "建立陣列使用項目 %1 重複 %2 次數";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "建立包含指定重複次數的 值 的陣列。";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "為";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "插入在";
+Blockly.Msg.LISTS_SET_INDEX_SET = "設定";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "在陣列的起始處添加一個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "插入在陣列中的指定位置的項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "在陣列的尾端加入一個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "在陣列中隨機插入項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "設定陣列中的首個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "設定在陣列中的指定位置的項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "設定陣列中的最後一個項目";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "設定陣列中隨機的一個項目";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "升冪排序";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "降冪排序";
+Blockly.Msg.LISTS_SORT_TITLE = "依%1%2%3排序";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "排序字典的複製內容";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "依字母排序並忽略大小寫";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "依數字排序";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "依字母排序";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "從文本製作陣列";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "從陣列拆出文本";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "串起文本陣列成一個文本,由分隔符分隔。";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "拆分文本到文本陣列,按每個分隔符拆分。";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "用分隔符";
+Blockly.Msg.LOGGING_CONF = "Logging Basic config"; // untranslated
+Blockly.Msg.LOGGING_CONFIG = "logging config"; // untranslated
+Blockly.Msg.LOGGING_CONFIG_LEVEL = "level ="; // untranslated
+Blockly.Msg.LOGGING_IMPORT = "import logging"; // untranslated
+Blockly.Msg.LOGGING_INFO = "Logging info"; // untranslated
+Blockly.Msg.LOGGING_SETUP = "Logging Setup"; // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "否";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "返回 真 或 否。";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "真";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "如果這兩個輸入區塊內容相等,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "如果首個輸入大於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "如果首個輸入大於或等於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "如果首個輸入小於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "如果首個輸入是小於或等於第二個輸入,返回 真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "如果這兩個輸入區塊內容不相等,返回 真。";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated
+Blockly.Msg.LOGIC_NEGATE_TITLE = "非 %1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "如果輸入的值是 否,則返回 真。如果輸入的值是 真 返回 否。";
+Blockly.Msg.LOGIC_NULL = "空";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "返回 空。";
+Blockly.Msg.LOGIC_OPERATION_AND = "且";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated
+Blockly.Msg.LOGIC_OPERATION_OR = "或";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "如果這兩個輸入值都為 真,則返回 真。";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "如果至少一個輸入的值為 真,返回 真。";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "測試";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://zh.wikipedia.org/wiki/條件運算符";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "如果為非";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "如果為真";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "檢查 'test' 中的條件。如果條件為 真,將返回 '如果為 真' 值 ;否則,返回 '如果為 否' 的值。";
+Blockly.Msg.LOOP_FOREACH_ITEM = "for each item"; // untranslated
+Blockly.Msg.LOOP_FOREACH_LIST = "in list"; // untranslated
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+"; // untranslated
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://zh.wikipedia.org/wiki/算術";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "返回兩個數字的總和。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "返回兩個數字的商。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "返回兩個數字的差。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "返回兩個數字的乘積。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "返回第二個數字的指數的首個數字。";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://zh.wikipedia.org/wiki/加法";
+Blockly.Msg.MATH_CHANGE_TITLE = "將 %1 增加 %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "將數字添加到變量 '%1'。";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://zh.wikipedia.org/wiki/數學常數";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "限制數字 %1 介於 (低) %2 到 (高) %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "限制數字介於兩個指定的數字之間";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷"; // untranslated
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "可被整除";
+Blockly.Msg.MATH_IS_EVEN = "是偶數";
+Blockly.Msg.MATH_IS_NEGATIVE = "是負值";
+Blockly.Msg.MATH_IS_ODD = "是奇數";
+Blockly.Msg.MATH_IS_POSITIVE = "是正值";
+Blockly.Msg.MATH_IS_PRIME = "是質數";
+Blockly.Msg.MATH_IS_TOOLTIP = "如果數字是偶數,奇數,非負整數,正數、 負數或如果它是可被某數字整除,則返回 真 或 否。";
+Blockly.Msg.MATH_IS_WHOLE = "是非負整數";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg.MATH_MODULO_TITLE = "取餘數自 %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "回傳兩個數字相除的餘數";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; // untranslated
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://zh.wikipedia.org/wiki/數";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "一個數字。";
+Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "平均值 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "最大值 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "中位數 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "最小值 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "比較眾數 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "隨機抽取 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "標準差 自陣列";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "總和 自陣列";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "返回陣列中數值的平均值 (算術平均值)。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "返回陣列中的最大數字。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "返回陣列中數值的中位數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "返回陣列中的最小數字。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "返回一個陣列中的最常見項目的陣列。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "從陣列中返回一個隨機的項目。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "返回陣列中數字的標準差。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "返回陣列中的所有數字的總和。";
+Blockly.Msg.MATH_POWER_SYMBOL = "^"; // untranslated
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "取隨機分數";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "返回介於 (包含) 0.0 到 1.0 之間的隨機數。";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "取隨機整數介於 (低) %1 到 %2";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "回傳限制的數字區間內的隨機數字";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://zh.wikipedia.org/wiki/數值簡化";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "四捨五入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "無條件捨去";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "無條件進位";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "將數字向上或向下舍入。";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "絕對值";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "開根號";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "返回指定數字的絕對值。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "返回指定數字指數的 e";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "返回指定數字的自然對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "返回指定數字的對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "返回指定數字的 negation。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "返回指定數字指數的10的冪次。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "返回指定數字的平方根。";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-"; // untranslated
+Blockly.Msg.MATH_SUM = "Sum"; // untranslated
+Blockly.Msg.MATH_TRIG_ACOS = "acos"; // untranslated
+Blockly.Msg.MATH_TRIG_ASIN = "asin"; // untranslated
+Blockly.Msg.MATH_TRIG_ATAN = "atan"; // untranslated
+Blockly.Msg.MATH_TRIG_COS = "cos"; // untranslated
+Blockly.Msg.MATH_TRIG_HELPURL = "https://zh.wikipedia.org/wiki/三角函數";
+Blockly.Msg.MATH_TRIG_SIN = "sin"; // untranslated
+Blockly.Msg.MATH_TRIG_TAN = "tan"; // untranslated
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "返回指定角度的反餘弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "返回指定角度的反正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "返回指定角度的反正切值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "返回指定角度的餘弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg.NEW_VARIABLE = "建立變量...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "新變量名稱:";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated
+Blockly.Msg.PLATFORM_IMPORT = "import platform"; // untranslated
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "允許語句";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "與:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程式";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "執行使用者定義的函數 '%1'。";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程式";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "執行使用者定義的函數 '%1' 並使用它的回傳值";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "與:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "建立 '%1'";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "描述此函數...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "流程";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "到";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "創建一個無回傳值的函數。";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "回傳";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "創建一個有回傳值的函數。";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "警告: 此函數中有重複的參數。";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "反白顯示函式定義";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause"; // untranslated
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "如果值為 真,則返回第二個值。";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "警告: 此積木僅可在定義函式時使用。";
+Blockly.Msg.PROCEDURES_MAINFUNCTION = "Define Main function"; // untranslated
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "變量:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "添加函數輸入。";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "參數";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "添加、刪除或重新排列此函數的輸入。";
+Blockly.Msg.REDO = "重試";
+Blockly.Msg.REMOVE_COMMENT = "移除註解";
+Blockly.Msg.RENAME_VARIABLE = "重新命名變量...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "將所有 \"%1\" 變量重新命名為:";
+Blockly.Msg.REQUEST_DATA = "data"; // untranslated
+Blockly.Msg.REQUEST_IMPORT = "import requests"; // untranslated
+Blockly.Msg.REQUEST_POST_DATATYPE = "Request Post Data: JSON"; // untranslated
+Blockly.Msg.REQUEST_SET_URL = "Set URL:"; // untranslated
+Blockly.Msg.SYSTEM_EXIT = "Sys.exit"; // untranslated
+Blockly.Msg.SYSTEM_IMPORT = "import sys"; // untranslated
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "後加入字串";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
+Blockly.Msg.TEXT_APPEND_TO = "在";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "將壹些字串追加到變量 '%1'。";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "轉成 小寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "轉成 首字母大寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "轉成 大寫";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "使用不同的大小寫複製這段字串。";
+Blockly.Msg.TEXT_CHARAT_FIRST = "取首個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "取得 倒數第 # 個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "取得 字元 #";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "的字元在字串";
+Blockly.Msg.TEXT_CHARAT_LAST = "取最後一個字元";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "取隨機一個字元";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "返回位於指定位置的字元。";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "將一個項目加入到字串中。";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "加入";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "添加、 刪除或重新排列各區塊來此重新配置這個字串積木。";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "到 倒數第 # 個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "到 字元 #";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "到 最後一個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "自字串";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "取得段落字串 自 首個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "取得段落字串自 #";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "取得段落字串自 #";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "返回指定的部分字串。";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "在字串";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "尋找 首個 出現的字串";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "尋找 最後一個 出現的字串";
+Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "返回在第二個字串中的首個/最後一個匹配項目的索引值。如果未找到則返回 %1。";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 為空";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "如果提供的字串為空,則返回 真。";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "建立字串使用";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "透過串起任意數量的項目來建立壹段字串。";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
+Blockly.Msg.TEXT_LENGTH_TITLE = "長度 %1";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "返回這串字串的字元數(含空格) 。";
+Blockly.Msg.TEXT_LOWER = "set lower case"; // untranslated
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated
+Blockly.Msg.TEXT_PRINT_TITLE = "印出 %1";
+Blockly.Msg.TEXT_PRINT_TITLE_PRINT = "print"; // untranslated
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "印出指定的字串、 數字或其他值。";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "輸入數字";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "輸入字串";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "輸入 數字 並顯示提示訊息";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "輸入 字串 並顯示提示訊息";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://zh.wikipedia.org/wiki/字串";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "字元、 單詞或壹欄字串。";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "消除兩側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "消除左側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "消除右側空格";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "複製這段字串的同時刪除兩端多餘的空格。";
+Blockly.Msg.THREAD_IMPORT = "import threading"; // untranslated
+Blockly.Msg.THREAD_SET_TARGET = "threading set target"; // untranslated
+Blockly.Msg.THREAD_START = "start"; // untranslated
+Blockly.Msg.THREAD_THREADING = "threading"; // untranslated
+Blockly.Msg.TODAY = "今天";
+Blockly.Msg.TYPE_CHECK = "type of"; // untranslated
+Blockly.Msg.UNDO = "還原";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "變量";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "建立 '設定 %1'";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
+Blockly.Msg.VARIABLES_GET_SELF = "get self"; // untranslated
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "返回此變量的值。";
+Blockly.Msg.VARIABLES_SET = "設定 %1 爲 %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "建立 '取得 %1'";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated
+Blockly.Msg.VARIABLES_SET_SELF = "set self"; // untranslated
+Blockly.Msg.VARIABLES_SET_SELF_TO = "to"; // untranslated
+Blockly.Msg.VARIABLES_SET_TAIL = "="; // untranslated
+Blockly.Msg.VARIABLES_SET_TITLE = "set"; // untranslated
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "設定此變量,好和輸入值相等。";
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "一個名為%1的變量已存在。";
+Blockly.Msg.VISIONKIT_AIY_VISION_INFERENCE = "AIY Vision Inference"; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR = "Annotator"; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_BOUNDING = "Annotator Bounding Box"; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_FILL = "fill="; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_SETTING = "set dimensions:"; // untranslated
+Blockly.Msg.VISIONKIT_CAMERA_INFERENCE = "Camera Inference as"; // untranslated
+Blockly.Msg.VISIONKIT_CLOUDEVENT_API = "Cloud Event API:"; // untranslated
+Blockly.Msg.VISIONKIT_DO = "Do"; // untranslated
+Blockly.Msg.VISIONKIT_GETINFERENCE = "Get Inference"; // untranslated
+Blockly.Msg.VISIONKIT_GETMODEL_MODEL = "model"; // untranslated
+Blockly.Msg.VISIONKIT_GETMODEL_Of = "of"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT = "from"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_ANNOTATOR = "annotator import"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_INFERENCE = "inference import"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_MODELS = "models import"; // untranslated
+Blockly.Msg.VISIONKIT_JOY_DETECT = "Detect Joy Score and stored it to Core Cloud"; // untranslated
+Blockly.Msg.VISIONKIT_MODEL = "Model"; // untranslated
+Blockly.Msg.VISIONKIT_RUN_INFERENCE = "Run inference"; // untranslated
+Blockly.Msg.VISIONKIT_SETUP = "Google AIY Vision Kit Setup"; // untranslated
+Blockly.Msg.VISIONKIT_USE_MODEL = "Use model"; // untranslated
+Blockly.Msg.VOICEKIT_ASSISTANT = "Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_DEMO_1 = "Command Control Demo"; // untranslated
+Blockly.Msg.VOICEKIT_DEMO_2 = "Via Google Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_EVENTTYPE_ASSISTANT = "Assistant Event Type:"; // untranslated
+Blockly.Msg.VOICEKIT_EVENTTYPE_IMPORT = "import EventType"; // untranslated
+Blockly.Msg.VOICEKIT_EVENT_ARGS = "event args"; // untranslated
+Blockly.Msg.VOICEKIT_EVENT_OF = "of"; // untranslated
+Blockly.Msg.VOICEKIT_EVENT_TYPE_OF = "event type of"; // untranslated
+Blockly.Msg.VOICEKIT_FROM = "from"; // untranslated
+Blockly.Msg.VOICEKIT_GET_CREDENTIAL = "Get Assistant Credential"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_ASSISTANT = "import Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_AUTH = "import auth_helpers"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_TTS = "import TTS"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_TTS_SAY = "aiy.voice.tts.say"; // untranslated
+Blockly.Msg.VOICEKIT_SETUP = "Google AIY Voice Kit Setup"; // untranslated
+Blockly.Msg.VOICEKIT_SET_CREDENTIAL = "set credential for Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_SET_DO = "do"; // untranslated
+Blockly.Msg.VOICEKIT_SET_FROM = "from"; // untranslated
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.VARIABLES_SET_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.P
+
+
+
+
+Blockly.Msg.ADD_COMMENT = "添加註釋";
+Blockly.Msg.AIYBOARD_AIY_BOARD = "AIY Board"; // untranslated
+Blockly.Msg.AIYBOARD_BUTTON_FROM = "from"; // untranslated
+Blockly.Msg.AIYBOARD_BUTTON_WHEN = "when button"; // untranslated
+Blockly.Msg.AIYBOARD_FROM = "from aiy.board"; // untranslated
+Blockly.Msg.AIYBOARD_IMPORT = "import"; // untranslated
+Blockly.Msg.AIYBOARD_LED_STATE = "get LED state of"; // untranslated
+Blockly.Msg.AIYBOARD_LED_STATUS = "get LED status of"; // untranslated
+Blockly.Msg.CAMERA_CAMERA = "camera"; // untranslated
+Blockly.Msg.CAMERA_DO = "Do"; // untranslated
+Blockly.Msg.CAMERA_FPS = "fps"; // untranslated
+Blockly.Msg.CAMERA_FRAME_RATE = "Frame Rete:"; // untranslated
+Blockly.Msg.CAMERA_IMPORT = "import piCamera"; // untranslated
+Blockly.Msg.CAMERA_RESOLUTION = "Resolution"; // untranslated
+Blockly.Msg.CAMERA_SENSOR_MODE = "Sensor Mode:"; // untranslated
+Blockly.Msg.CAMERA_SET_BOUNDING = "Set bounding box:"; // untranslated
+Blockly.Msg.CAMERA_USE_AS = "Use PiCamera as"; // untranslated
+Blockly.Msg.CHANGE_VALUE_TITLE = "更改值:";
+Blockly.Msg.CLEAN_UP = "整理塊";
+Blockly.Msg.COLLAPSE_ALL = "折疊塊";
+Blockly.Msg.COLLAPSE_BLOCK = "折疊塊";
+Blockly.Msg.COLOUR_BLEND_COLOUR1 = "顏色1";
+Blockly.Msg.COLOUR_BLEND_COLOUR2 = "顏色2";
+Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; // untranslated
+Blockly.Msg.COLOUR_BLEND_RATIO = "比例";
+Blockly.Msg.COLOUR_BLEND_TITLE = "混合";
+Blockly.Msg.COLOUR_BLEND_TOOLTIP = "用一個給定的比率(0.0-1.0)混合兩種顏色。";
+Blockly.Msg.COLOUR_PICKER_HELPURL = "https://zh.wikipedia.org/wiki/顏色";
+Blockly.Msg.COLOUR_PICKER_TOOLTIP = "從調色板中選擇壹種顏色。";
+Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated
+Blockly.Msg.COLOUR_RANDOM_TITLE = "隨機顏色";
+Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "隨機選擇壹種顏色。";
+Blockly.Msg.COLOUR_RGB_BLUE = "藍色";
+Blockly.Msg.COLOUR_RGB_GREEN = "綠色";
+Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html"; // untranslated
+Blockly.Msg.COLOUR_RGB_RED = "紅色";
+Blockly.Msg.COLOUR_RGB_TITLE = "顏色";
+Blockly.Msg.COLOUR_RGB_TOOLTIP = "透過指定紅色、綠色和藍色的量創建壹種顏色。所有的值必須介於0和100之間。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "中斷循環";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "繼續下一次循環";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "中斷包含它的循環。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "跳過這個循環的剩余部分,並繼續下一次疊代。";
+Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "警告:此塊僅可用於在一個循環內。";
+Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated
+Blockly.Msg.CONTROLS_FOREACH_TITLE = "在陣列 %2 中以 %1 遍歷每個項目";
+Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "遍歷每個陣列中的項目,將變量\" %1\"設定到該項中,然後執行某些語句。";
+Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated
+Blockly.Msg.CONTROLS_FOR_TITLE = "使用 %1 從範圍 %2 到 %3 每隔 %4";
+Blockly.Msg.CONTROLS_FOR_TOOLTIP = "從起始數到結尾數中取出變量\" %1\"的值,按指定的時間間隔,執行指定的塊。";
+Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "在if語句塊中增加一個條件。";
+Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "添加一個最終的,包括所有情況的節到if塊中。";
+Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse"; // untranslated
+Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "增加、刪除或重新排列各節來重新配置\"if\"塊。";
+Blockly.Msg.CONTROLS_IF_MSG_ELSE = "否則";
+Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "否則如果";
+Blockly.Msg.CONTROLS_IF_MSG_IF = "如果";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "如果值為真,執行壹些語句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "如果值為真,則執行首個塊語句。否則,則執行第二塊語句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "如果首個值為真,則執行首個塊的語句。否則,如果第二個值為真,則執行第二塊的語句。";
+Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "如果首個值為真,則執行首個塊對語句。否則,如果第二個值為真,則執行語句的第二塊。如果沒有值為真,則執行最後壹塊的語句。";
+Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://zh.wikipedia.org/wiki/For循環";
+Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "執行";
+Blockly.Msg.CONTROLS_REPEAT_TITLE = "重複 %1 次";
+Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "多次執行壹些語句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "重複直到";
+Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "重複當";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "只要值為假,執行壹些語句。";
+Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "只要值為真,執行壹些語句。";
+Blockly.Msg.DELETE_ALL_BLOCKS = "刪除所有%1塊嗎?";
+Blockly.Msg.DELETE_BLOCK = "刪除塊";
+Blockly.Msg.DELETE_VARIABLE = "刪除\" %1\"變量";
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "刪除\" % 2\"變量的%1種用途麼?";
+Blockly.Msg.DELETE_X_BLOCKS = "刪除 %1 塊";
+Blockly.Msg.DICTS_CREATE_EMPTY_TITLE = "empty dictionary"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TITLE_ADD = "Create Dictionary"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP = ""; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_INPUT_WITH = "create dict with"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_KEY = "key"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_MAPPING = ":"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TITLE = "key/value"; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP = ""; // untranslated
+Blockly.Msg.DICTS_CREATE_WITH_TOOLTIP = ""; // untranslated
+Blockly.Msg.DICT_GET = "get key"; // untranslated
+Blockly.Msg.DICT_GET_TO = "of"; // untranslated
+// Blockly.Msg.DICT_KEYS = "get all keys from"; // untranslated
+Blockly.Msg.DISABLE_BLOCK = "禁用塊";
+Blockly.Msg.DUPLICATE_BLOCK = "復制";
+Blockly.Msg.ENABLE_BLOCK = "啟用塊";
+Blockly.Msg.EXPAND_ALL = "展開塊";
+Blockly.Msg.EXPAND_BLOCK = "展開塊";
+Blockly.Msg.EXTERNAL_INPUTS = "外部輸入";
+Blockly.Msg.HELP = "幫助";
+Blockly.Msg.INLINE_INPUTS = "單欄輸入";
+Blockly.Msg.LISTS_APPEND = "append item"; // untranslated
+Blockly.Msg.LISTS_APPEND_HELPURL = "http://google.com"; // untranslated
+Blockly.Msg.LISTS_APPEND_TO = "to list"; // untranslated
+Blockly.Msg.LISTS_APPEND_TOOLTIP = "Append an element to a list"; // untranslated
+Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";
+Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "創建空陣列";
+Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "返回一個陣列,長度為 0,不包含任何數據記錄";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "陣列";
+Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "增加、刪除或重新排列各部分以此重新配置這個陣列塊。";
+Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";
+Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "使用這些值建立陣列";
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "將一個項添加到陣列中。";
+Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "建立一個具有任意數量項目的陣列。";
+Blockly.Msg.LISTS_GET_INDEX_FIRST = "首個";
+Blockly.Msg.LISTS_GET_INDEX_FROM_END = "倒數第#";
+Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#";
+Blockly.Msg.LISTS_GET_INDEX_GET = "獲得";
+Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "取出並移除";
+Blockly.Msg.LISTS_GET_INDEX_LAST = "最後";
+Blockly.Msg.LISTS_GET_INDEX_RANDOM = "隨機";
+Blockly.Msg.LISTS_GET_INDEX_REMOVE = "移除";
+Blockly.Msg.LISTS_GET_INDEX_TAIL = "空白";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "返回陣列中的首個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "返回在陣列中的指定位置的項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "返回陣列中的最後壹項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "隨機返回陣列中的一個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "移除並返回陣列中的首個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "移除並返回陣列中的指定位置的項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "移除並返回陣列中的最後一個項目。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "移除並返回陣列中的一個隨機項目中。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "移除陣列中的首個項";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "移除在陣列中的指定位置的項。";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "移除陣列中的最後壹項";
+Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "刪除陣列中的一個隨機的項。";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "到倒數第#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "到#";
+Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "到最後";
+Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated
+Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "從頭獲得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "從倒數#取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "從#取得子陣列";
+Blockly.Msg.LISTS_GET_SUBLIST_TAIL = "空白";
+Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "復制陣列中指定的部分。";
+Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1是最後壹項。";
+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1是首個項目。";
+Blockly.Msg.LISTS_INDEX_OF_FIRST = "找出首個項出現";
+Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated
+Blockly.Msg.LISTS_INDEX_OF_LAST = "找出最後一個項出現";
+Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "返回在陣列中的首個/最後一個匹配項的索引值。如果找不到項目則返回%1。";
+Blockly.Msg.LISTS_INLIST = "在陣列中";
+Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated
+Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "如果改陣列為空,則返回真。";
+Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated
+Blockly.Msg.LISTS_LENGTH_TITLE = "%1的長度";
+Blockly.Msg.LISTS_LENGTH_TOOLTIP = "返回陣列的長度。";
+Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
+Blockly.Msg.LISTS_REPEAT_TITLE = "建立陣列使用項 %1 重複 %2 次";
+Blockly.Msg.LISTS_REPEAT_TOOLTIP = "建立包含指定重複次數的值的陣列。";
+Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated
+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "為";
+Blockly.Msg.LISTS_SET_INDEX_INSERT = "插入在";
+Blockly.Msg.LISTS_SET_INDEX_SET = "設定";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "在陣列的起始處添加該項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "插入在陣列中指定位置的項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "將該項追加到陣列的末尾。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "在陣列中隨機插入項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "設定陣列中的首個項目。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "設定在陣列中指定位置的項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "設定陣列中的最後壹項。";
+Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "設定陣列中一個隨機的項目。";
+Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
+Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "升序";
+Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "降序";
+Blockly.Msg.LISTS_SORT_TITLE = "排序%1 %2 %3";
+Blockly.Msg.LISTS_SORT_TOOLTIP = "排序一個陣列的拷貝。";
+Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "按字母排序,忽略大小寫";
+Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "按數字排序";
+Blockly.Msg.LISTS_SORT_TYPE_TEXT = "按字母排序";
+Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";
+Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "從文本制作陣列";
+Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "從陣列拆出文本";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "加入文本陣列至一個文本,由分隔符分隔。";
+Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "拆分文本到文本陣列,按每個分隔符拆分。";
+Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "用分隔符";
+Blockly.Msg.LOGGING_CONF = "Logging Basic config"; // untranslated
+Blockly.Msg.LOGGING_CONFIG = "logging config"; // untranslated
+Blockly.Msg.LOGGING_CONFIG_LEVEL = "level ="; // untranslated
+Blockly.Msg.LOGGING_IMPORT = "import logging"; // untranslated
+Blockly.Msg.LOGGING_INFO = "Logging info"; // untranslated
+Blockly.Msg.LOGGING_SETUP = "Logging Setup"; // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_FALSE = "假";
+Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated
+Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "返回真或假。";
+Blockly.Msg.LOGIC_BOOLEAN_TRUE = "真";
+Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://zh.wikipedia.org/wiki/不等";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "如果兩個輸入結果相等,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "如果首個輸入結果比第二個大,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "如果首個輸入結果大於或等於第二個輸入結果,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "如果首個輸入結果比第二個小,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "如果首個輸入結果小於或等於第二個輸入結果,則返回真。";
+Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "如果兩個輸入結果不相等,則返回真。";
+Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";
+Blockly.Msg.LOGIC_NEGATE_TITLE = "非%1";
+Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "如果輸入結果為假,則返回真;如果輸入結果為真,則返回假。";
+Blockly.Msg.LOGIC_NULL = "空";
+Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated
+Blockly.Msg.LOGIC_NULL_TOOLTIP = "返回空值。";
+Blockly.Msg.LOGIC_OPERATION_AND = "和";
+Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated
+Blockly.Msg.LOGIC_OPERATION_OR = "或";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "如果兩個輸入結果都為真,則返回真。";
+Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "如果至少有一個輸入結果為真,則返回真。";
+Blockly.Msg.LOGIC_TERNARY_CONDITION = "測試";
+Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://zh.wikipedia.org/wiki/條件運算符";
+Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "如果為假";
+Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "如果為真";
+Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "檢查\"test\"中的條件。如果條件為真,則返回\"if true\"的值,否則,則返回\"if false\"的值。";
+Blockly.Msg.LOOP_FOREACH_ITEM = "for each item"; // untranslated
+Blockly.Msg.LOOP_FOREACH_LIST = "in list"; // untranslated
+Blockly.Msg.MATH_ADDITION_SYMBOL = "+"; // untranslated
+Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://zh.wikipedia.org/wiki/算術";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "返回兩個數字的和。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "返回兩個數字的商。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "返回兩個數字的區別。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "返回兩個數字的乘積。";
+Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "返回首個數的第二個數次方。";
+Blockly.Msg.MATH_CHANGE_HELPURL = "https://zh.wikipedia.org/wiki/加法";
+Blockly.Msg.MATH_CHANGE_TITLE = "將 %1 增加 %2";
+Blockly.Msg.MATH_CHANGE_TOOLTIP = "將一個數添加到變量\" %1\"。";
+Blockly.Msg.MATH_CONSTANT_HELPURL = "https://zh.wikipedia.org/wiki/數學常數";
+Blockly.Msg.MATH_CONSTANT_TOOLTIP = "返回一個常見常量:π (3.141......),e (2.718...)、φ (1.618...)、 sqrt(2) (1.414......)、sqrt(½) (0.707......)或 ∞(無窮大)。";
+Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated
+Blockly.Msg.MATH_CONSTRAIN_TITLE = "限制數字 %1 介於 (低) %2 到 (高) %3";
+Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "限制數字介於兩個指定的數字之間";
+Blockly.Msg.MATH_DIVISION_SYMBOL = "÷"; // untranslated
+Blockly.Msg.MATH_IS_DIVISIBLE_BY = "可被整除";
+Blockly.Msg.MATH_IS_EVEN = "是偶數";
+Blockly.Msg.MATH_IS_NEGATIVE = "為負";
+Blockly.Msg.MATH_IS_ODD = "是奇數";
+Blockly.Msg.MATH_IS_POSITIVE = "為正";
+Blockly.Msg.MATH_IS_PRIME = "是質數";
+Blockly.Msg.MATH_IS_TOOLTIP = "如果數字是偶數、奇數、非負整數、正數、負數或如果它可被某數字整除,則返回真或假。";
+Blockly.Msg.MATH_IS_WHOLE = "為整數";
+Blockly.Msg.MATH_MODULO_HELPURL = "https://zh.wikipedia.org/wiki/模除";
+Blockly.Msg.MATH_MODULO_TITLE = "取餘數自 %1 ÷ %2";
+Blockly.Msg.MATH_MODULO_TOOLTIP = "返回這兩個數字相除後的餘數。";
+Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; // untranslated
+Blockly.Msg.MATH_NUMBER_HELPURL = "https://zh.wikipedia.org/wiki/數";
+Blockly.Msg.MATH_NUMBER_TOOLTIP = "一個數字。";
+Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated
+Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "陣列中的平均數";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "陣列中的最大值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "陣列中位數";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "陣列中的最小值";
+Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "陣列模式";
+Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "陣列的隨機項";
+Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "陣列中的標準差";
+Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "陣列中的數的總和";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "返回陣列中的數值的平均值。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "返回陣列中最大數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "返回陣列中的中位數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "返回陣列中最小數。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "返回陣列中的最常見的項的陣列。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "從陣列中返回一個隨機的元素。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "返回陣列的標準偏差。";
+Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "返回陣列中的所有數字的和。";
+Blockly.Msg.MATH_POWER_SYMBOL = "^"; // untranslated
+Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "隨機分數";
+Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "返回介於(包含)0.0到1.0之間的隨機數。";
+Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://zh.wikipedia.org/wiki/隨機數生成器";
+Blockly.Msg.MATH_RANDOM_INT_TITLE = "從 %1 到 %2 之間的隨機整數";
+Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "返回兩個指定的範圍(含)之間的隨機整數。";
+Blockly.Msg.MATH_ROUND_HELPURL = "https://zh.wikipedia.org/wiki/數值修約";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "四捨五入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "向下舍入";
+Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "向上舍入";
+Blockly.Msg.MATH_ROUND_TOOLTIP = "數字向上或向下舍入。";
+Blockly.Msg.MATH_SINGLE_HELPURL = "https://zh.wikipedia.org/wiki/平方根";
+Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "絕對";
+Blockly.Msg.MATH_SINGLE_OP_ROOT = "平方根";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "返回一個數的絕對值。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "返回數的e次方。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "返回一個數的自然對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "返回數字的對數。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "返回數的邏輯非。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "返回數的10次方。";
+Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "返回數的平方根。";
+Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-"; // untranslated
+Blockly.Msg.MATH_SUM = "Sum"; // untranslated
+Blockly.Msg.MATH_TRIG_ACOS = "acos"; // untranslated
+Blockly.Msg.MATH_TRIG_ASIN = "asin"; // untranslated
+Blockly.Msg.MATH_TRIG_ATAN = "atan"; // untranslated
+Blockly.Msg.MATH_TRIG_COS = "cos"; // untranslated
+Blockly.Msg.MATH_TRIG_HELPURL = "https://zh.wikipedia.org/wiki/三角函數";
+Blockly.Msg.MATH_TRIG_SIN = "sin"; // untranslated
+Blockly.Msg.MATH_TRIG_TAN = "tan"; // untranslated
+Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "返回一個數的反余弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "返回一個數的反正弦值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "返回指定角度的反正切值。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "返回指定角度的余弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "返回指定角度的正弦值(非弧度)。";
+Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "返回指定角度的正切值(非弧度)。";
+Blockly.Msg.NEW_VARIABLE = "創建變量...";
+Blockly.Msg.NEW_VARIABLE_TITLE = "新變量的名稱:";
+Blockly.Msg.ORDINAL_NUMBER_SUFFIX = "空白";
+Blockly.Msg.PLATFORM_IMPORT = "import platform"; // untranslated
+Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "允許宣告";
+Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "與:";
+Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "運行用戶定義的函數\" %1\"。";
+Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "運行用戶定義的函數\" %1\",並使用它的輸出值。";
+Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "與:";
+Blockly.Msg.PROCEDURES_CREATE_DO = "創建\" %1\"";
+Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "描述該功能...";
+Blockly.Msg.PROCEDURES_DEFNORETURN_DO = "執行";
+Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "做點什麼";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "定義";
+Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "創建一個不帶輸出值的函數。";
+Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://zh.wikipedia.org/wiki/子程序";
+Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "返回";
+Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "創建一個有輸出值的函數。";
+Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "警告: 此函數具有重複參數。";
+Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "突出顯示函數定義";
+Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";
+Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "如果值為真,則返回第二個值。";
+Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "警告: 僅在定義函數內可使用此塊。";
+Blockly.Msg.PROCEDURES_MAINFUNCTION = "Define Main function"; // untranslated
+Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "輸入名稱:";
+Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "添加函數輸入。";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "輸入";
+Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "添加、刪除或重新排此函數的輸入。";
+Blockly.Msg.REDO = "重做";
+Blockly.Msg.REMOVE_COMMENT = "刪除註釋";
+Blockly.Msg.RENAME_VARIABLE = "重命名變量...";
+Blockly.Msg.RENAME_VARIABLE_TITLE = "將所有\" %1\"變量重命名為:";
+Blockly.Msg.REQUEST_DATA = "data"; // untranslated
+Blockly.Msg.REQUEST_IMPORT = "import requests"; // untranslated
+Blockly.Msg.REQUEST_POST_DATATYPE = "Request Post Data: JSON"; // untranslated
+Blockly.Msg.REQUEST_SET_URL = "Set URL:"; // untranslated
+Blockly.Msg.SYSTEM_EXIT = "Sys.exit"; // untranslated
+Blockly.Msg.SYSTEM_IMPORT = "import sys"; // untranslated
+Blockly.Msg.TEXT_APPEND_APPENDTEXT = "追加文本";
+Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
+Blockly.Msg.TEXT_APPEND_TO = "在";
+Blockly.Msg.TEXT_APPEND_TOOLTIP = "將壹些文本追加到變量\" %1\"。";
+Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "為小寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "為首字母大寫";
+Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "為大寫";
+Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "使用不同的大小寫復制這段字串。";
+Blockly.Msg.TEXT_CHARAT_FIRST = "獲得首個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_END = "獲得倒數第#個字元";
+Blockly.Msg.TEXT_CHARAT_FROM_START = "獲得字元#";
+Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated
+Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "於文本中";
+Blockly.Msg.TEXT_CHARAT_LAST = "獲得最後一個字元";
+Blockly.Msg.TEXT_CHARAT_RANDOM = "獲取隨機的字母";
+Blockly.Msg.TEXT_CHARAT_TAIL = "";
+Blockly.Msg.TEXT_CHARAT_TOOLTIP = "返回位於指定位置的字母。";
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "將一個項添加到文本中。";
+Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "加入";
+Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "添加、移除或重新排列各節來重新配置這個文本塊。";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "到倒數第#個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "到字元#";
+Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "到最後一個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated
+Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "自文本";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "取得段落字串自首個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "取得段落字串自倒數第#個字元";
+Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "取得段落字串自#";
+Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";
+Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "返回指定的部分文本。";
+Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated
+Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "自文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "尋找首個出現的文本";
+Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "尋找最後一個出現的文本";
+Blockly.Msg.TEXT_INDEXOF_TAIL = "空白";
+Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "返回在第二個字串中的首個/最後一個匹配項的索引值。如果未找到則返回%1。";
+Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated
+Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1是空的";
+Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "如果提供的文本為空,則返回真。";
+Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
+Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "建立字串使用";
+Blockly.Msg.TEXT_JOIN_TOOLTIP = "透過串起任意數量的項以建立壹段字串。";
+Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
+Blockly.Msg.TEXT_LENGTH_TITLE = "%1的長度";
+Blockly.Msg.TEXT_LENGTH_TOOLTIP = "返回提供文本的字母數(包括空格)。";
+Blockly.Msg.TEXT_LOWER = "set lower case"; // untranslated
+Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated
+Blockly.Msg.TEXT_PRINT_TITLE = "打印%1";
+Blockly.Msg.TEXT_PRINT_TITLE_PRINT = "print"; // untranslated
+Blockly.Msg.TEXT_PRINT_TOOLTIP = "打印指定的字串、數字或其他值。";
+Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "提示用戶輸入數字。";
+Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "提示用戶輸入壹些文本。";
+Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "輸入數字並顯示提示消息";
+Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "輸入數字並顯示提示消息";
+Blockly.Msg.TEXT_TEXT_HELPURL = "https://zh.wikipedia.org/wiki/字串";
+Blockly.Msg.TEXT_TEXT_TOOLTIP = "一個字母、單詞或壹欄文本。";
+Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated
+Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "消除兩側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "消除左側空格";
+Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "消除右側空格";
+Blockly.Msg.TEXT_TRIM_TOOLTIP = "復制這段字串的同時刪除兩端多余的空格。";
+Blockly.Msg.THREAD_IMPORT = "import threading"; // untranslated
+Blockly.Msg.THREAD_SET_TARGET = "threading set target"; // untranslated
+Blockly.Msg.THREAD_START = "start"; // untranslated
+Blockly.Msg.THREAD_THREADING = "threading"; // untranslated
+Blockly.Msg.TODAY = "今天";
+Blockly.Msg.TYPE_CHECK = "type of"; // untranslated
+Blockly.Msg.UNDO = "撤銷";
+Blockly.Msg.VARIABLES_DEFAULT_NAME = "項目";
+Blockly.Msg.VARIABLES_GET_CREATE_SET = "創建\"設定 %1\"";
+Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
+Blockly.Msg.VARIABLES_GET_SELF = "get self"; // untranslated
+Blockly.Msg.VARIABLES_GET_TOOLTIP = "返回此變量的值。";
+Blockly.Msg.VARIABLES_SET = "設定 %1 爲 %2";
+Blockly.Msg.VARIABLES_SET_CREATE_GET = "創建\" %1\"";
+Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated
+Blockly.Msg.VARIABLES_SET_SELF = "set self"; // untranslated
+Blockly.Msg.VARIABLES_SET_SELF_TO = "to"; // untranslated
+Blockly.Msg.VARIABLES_SET_TAIL = "="; // untranslated
+Blockly.Msg.VARIABLES_SET_TITLE = "set"; // untranslated
+Blockly.Msg.VARIABLES_SET_TOOLTIP = "設定此變量,以使它和輸入值相等。";
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "已存在名為\" %1\"的變量。";
+Blockly.Msg.VISIONKIT_AIY_VISION_INFERENCE = "AIY Vision Inference"; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR = "Annotator"; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_BOUNDING = "Annotator Bounding Box"; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_FILL = "fill="; // untranslated
+Blockly.Msg.VISIONKIT_ANNOTATOR_SETTING = "set dimensions:"; // untranslated
+Blockly.Msg.VISIONKIT_CAMERA_INFERENCE = "Camera Inference as"; // untranslated
+Blockly.Msg.VISIONKIT_CLOUDEVENT_API = "Cloud Event API:"; // untranslated
+Blockly.Msg.VISIONKIT_DO = "Do"; // untranslated
+Blockly.Msg.VISIONKIT_GETINFERENCE = "Get Inference"; // untranslated
+Blockly.Msg.VISIONKIT_GETMODEL_MODEL = "model"; // untranslated
+Blockly.Msg.VISIONKIT_GETMODEL_Of = "of"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT = "from"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_ANNOTATOR = "annotator import"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_INFERENCE = "inference import"; // untranslated
+Blockly.Msg.VISIONKIT_IMPORT_MODELS = "models import"; // untranslated
+Blockly.Msg.VISIONKIT_JOY_DETECT = "Detect Joy Score and stored it to Core Cloud"; // untranslated
+Blockly.Msg.VISIONKIT_MODEL = "Model"; // untranslated
+Blockly.Msg.VISIONKIT_RUN_INFERENCE = "Run inference"; // untranslated
+Blockly.Msg.VISIONKIT_SETUP = "Google AIY Vision Kit Setup"; // untranslated
+Blockly.Msg.VISIONKIT_USE_MODEL = "Use model"; // untranslated
+Blockly.Msg.VOICEKIT_ASSISTANT = "Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_DEMO_1 = "Command Control Demo"; // untranslated
+Blockly.Msg.VOICEKIT_DEMO_2 = "Via Google Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_EVENTTYPE_ASSISTANT = "Assistant Event Type:"; // untranslated
+Blockly.Msg.VOICEKIT_EVENTTYPE_IMPORT = "import EventType"; // untranslated
+Blockly.Msg.VOICEKIT_EVENT_ARGS = "event args"; // untranslated
+Blockly.Msg.VOICEKIT_EVENT_OF = "of"; // untranslated
+Blockly.Msg.VOICEKIT_EVENT_TYPE_OF = "event type of"; // untranslated
+Blockly.Msg.VOICEKIT_FROM = "from"; // untranslated
+Blockly.Msg.VOICEKIT_GET_CREDENTIAL = "Get Assistant Credential"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_ASSISTANT = "import Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_AUTH = "import auth_helpers"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_TTS = "import TTS"; // untranslated
+Blockly.Msg.VOICEKIT_IMPORT_TTS_SAY = "aiy.voice.tts.say"; // untranslated
+Blockly.Msg.VOICEKIT_SETUP = "Google AIY Voice Kit Setup"; // untranslated
+Blockly.Msg.VOICEKIT_SET_CREDENTIAL = "set credential for Assistant"; // untranslated
+Blockly.Msg.VOICEKIT_SET_DO = "do"; // untranslated
+Blockly.Msg.VOICEKIT_SET_FROM = "from"; // untranslated
+Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;
+Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;
+Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
+Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;
+Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.VARIABLES_SET_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;
+Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;
+Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;
+Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
+Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;
+Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;
+Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;
+
+Blockly.Msg.CONTROL_FOREVER = "重複執行"
+Blockly.Msg.CONTROL_REPEAT = "重複執行 %1 次"
+Blockly.Msg.CONTROL_IF = "如果 %1 那麼"
+Blockly.Msg.CONTROL_ELSE = "否則"
+Blockly.Msg.CONTROL_STOP = "停止"
+Blockly.Msg.CONTROL_STOP_ALL = "全部腳本"
+Blockly.Msg.CONTROL_STOP_THIS = "這個腳本"
+Blockly.Msg.CONTROL_STOP_OTHER = "該角色的其他腳本"
+Blockly.Msg.CONTROL_WAIT = "等待 %1 秒"
+Blockly.Msg.CONTROL_WAITUNTIL = "在 %1 之前壹直等待"
+Blockly.Msg.CONTROL_REPEATUNTIL = "重複執行直到 %1"
+Blockly.Msg.CONTROL_WHILE = "當 %1 重複執行"
+Blockly.Msg.CONTROL_FOREACH = "對於 %2 中的每個 %1"
+Blockly.Msg.CONTROL_STARTASCLONE = "當作為克隆體啟動時"
+Blockly.Msg.CONTROL_CREATECLONEOF = "克隆 %1"
+Blockly.Msg.CONTROL_CREATECLONEOF_MYSELF = "自己"
+Blockly.Msg.CONTROL_DELETETHISCLONE = "刪除此克隆體"
+Blockly.Msg.CONTROL_COUNTER = "計數器"
+Blockly.Msg.CONTROL_INCRCOUNTER = "計數器加壹"
+Blockly.Msg.CONTROL_CLEARCOUNTER = "計數器歸零"
+Blockly.Msg.CONTROL_ALLATONCE = "所有腳本"
+Blockly.Msg.DATA_SETVARIABLETO = "將 %1 設為 %2"
+Blockly.Msg.DATA_CHANGEVARIABLEBY = "將 %1 增加 %2"
+Blockly.Msg.DATA_SHOWVARIABLE = "顯示變量 %1"
+Blockly.Msg.DATA_HIDEVARIABLE = "隱藏變量 %1"
+Blockly.Msg.DATA_ADDTOLIST = "將 %1 加入 %2"
+Blockly.Msg.DATA_DELETEOFLIST = "刪除 %2 的第 %1 項"
+Blockly.Msg.DATA_DELETEALLOFLIST = "刪除 %1 的全部項目"
+Blockly.Msg.DATA_INSERTATLIST = "在 %3 的第 %2 項插入 %1"
+Blockly.Msg.DATA_REPLACEITEMOFLIST = "將 %2 的第 %1 項替換為 %3"
+Blockly.Msg.DATA_ITEMOFLIST = "%2 的第 %1 項"
+Blockly.Msg.DATA_ITEMNUMOFLIST = "%2 中首個 %1 的編號"
+Blockly.Msg.DATA_LENGTHOFLIST = "%1 的項目數"
+Blockly.Msg.DATA_LISTCONTAINSITEM = "%1 包含 %2 ?"
+Blockly.Msg.DATA_SHOWLIST = "顯示陣列 %1"
+Blockly.Msg.DATA_HIDELIST = "隱藏陣列 %1"
+Blockly.Msg.DATA_INDEX_ALL = "全部"
+Blockly.Msg.DATA_INDEX_LAST = "末尾"
+Blockly.Msg.DATA_INDEX_RANDOM = "隨機"
+Blockly.Msg.EVENT_WHENFLAGCLICKED = "當 %1 被點擊"
+Blockly.Msg.EVENT_WHENTHISSPRITECLICKED = "當角色被點擊"
+Blockly.Msg.EVENT_WHENSTAGECLICKED = "當舞臺被點擊"
+Blockly.Msg.EVENT_WHENTOUCHINGOBJECT = "當該角色碰到 %1"
+Blockly.Msg.EVENT_WHENBROADCASTRECEIVED = "當接收到 %1"
+Blockly.Msg.EVENT_WHENBACKDROPSWITCHESTO = "當背景換成 %1"
+Blockly.Msg.EVENT_WHENGREATERTHAN = "當 %1 > %2"
+Blockly.Msg.EVENT_WHENGREATERTHAN_TIMER = "計時器"
+Blockly.Msg.EVENT_WHENGREATERTHAN_LOUDNESS = "響度"
+Blockly.Msg.EVENT_BROADCAST = "廣播 %1"
+Blockly.Msg.EVENT_BROADCASTANDWAIT = "廣播 %1 並等待"
+Blockly.Msg.EVENT_WHENKEYPRESSED = "當按下 %1 鍵"
+Blockly.Msg.EVENT_WHENKEYPRESSED_SPACE = "空格"
+Blockly.Msg.EVENT_WHENKEYPRESSED_LEFT = "←"
+Blockly.Msg.EVENT_WHENKEYPRESSED_RIGHT = "→"
+Blockly.Msg.EVENT_WHENKEYPRESSED_DOWN = "↓"
+Blockly.Msg.EVENT_WHENKEYPRESSED_UP = "↑"
+Blockly.Msg.EVENT_WHENKEYPRESSED_ANY = "任意"
+Blockly.Msg.LOOKS_SAYFORSECS = "說 %1 %2 秒"
+Blockly.Msg.LOOKS_SAY = "說 %1"
+Blockly.Msg.LOOKS_HELLO = "妳好!"
+Blockly.Msg.LOOKS_THINKFORSECS = "思考 %1 %2 秒"
+Blockly.Msg.LOOKS_THINK = "思考 %1"
+Blockly.Msg.LOOKS_HMM = "嗯……"
+Blockly.Msg.LOOKS_SHOW = "顯示"
+Blockly.Msg.LOOKS_HIDE = "隱藏"
+Blockly.Msg.LOOKS_HIDEALLSPRITES = "隱藏所有角色"
+Blockly.Msg.LOOKS_EFFECT_COLOR = "顏色"
+Blockly.Msg.LOOKS_EFFECT_FISHEYE = "魚眼"
+Blockly.Msg.LOOKS_EFFECT_WHIRL = "漩渦"
+Blockly.Msg.LOOKS_EFFECT_PIXELATE = "畫素化"
+Blockly.Msg.LOOKS_EFFECT_MOSAIC = "馬賽克"
+Blockly.Msg.LOOKS_EFFECT_BRIGHTNESS = "亮度"
+Blockly.Msg.LOOKS_EFFECT_GHOST = "虛像"
+Blockly.Msg.LOOKS_CHANGEEFFECTBY = "將 %1 特效增加 %2"
+Blockly.Msg.LOOKS_SETEFFECTTO = "將 %1 特效設定為 %2"
+Blockly.Msg.LOOKS_CLEARGRAPHICEFFECTS = "清除圖形特效"
+Blockly.Msg.LOOKS_CHANGESIZEBY = "將大小增加 %1"
+Blockly.Msg.LOOKS_SETSIZETO = "將大小設為 %1"
+Blockly.Msg.LOOKS_SIZE = "大小"
+Blockly.Msg.LOOKS_CHANGESTRETCHBY = "伸縮%1"
+Blockly.Msg.LOOKS_SETSTRETCHTO = "設定伸縮為%1 %"
+Blockly.Msg.LOOKS_SWITCHCOSTUMETO = "換成 %1 造型"
+Blockly.Msg.LOOKS_NEXTCOSTUME = "下一個造型"
+Blockly.Msg.LOOKS_SWITCHBACKDROPTO = "換成 %1 背景"
+Blockly.Msg.LOOKS_GOTOFRONTBACK = "移到最 %1 "
+Blockly.Msg.LOOKS_GOTOFRONTBACK_FRONT = "前面"
+Blockly.Msg.LOOKS_GOTOFRONTBACK_BACK = "後面"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS = "%1 %2 層"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_FORWARD = "前移"
+Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_BACKWARD = "後移"
+Blockly.Msg.LOOKS_BACKDROPNUMBERNAME = "背景 %1"
+Blockly.Msg.LOOKS_COSTUMENUMBERNAME = "造型 %1"
+Blockly.Msg.LOOKS_NUMBERNAME_NUMBER = "編號"
+Blockly.Msg.LOOKS_NUMBERNAME_NAME = "名稱"
+Blockly.Msg.LOOKS_SWITCHBACKDROPTOANDWAIT = "換成 %1 背景並等待"
+Blockly.Msg.LOOKS_NEXTBACKDROP_BLOCK = "下一個背景"
+Blockly.Msg.LOOKS_NEXTBACKDROP = "下一個背景"
+Blockly.Msg.LOOKS_PREVIOUSBACKDROP = "上一個背景"
+Blockly.Msg.LOOKS_RANDOMBACKDROP = "隨機背景"
+Blockly.Msg.MOTION_MOVESTEPS = "移動 %1 步"
+Blockly.Msg.MOTION_TURNLEFT = "左轉 %1 %2 度"
+Blockly.Msg.MOTION_TURNRIGHT = "右轉 %1 %2 度"
+Blockly.Msg.MOTION_POINTINDIRECTION = "面向 %1 方向"
+Blockly.Msg.MOTION_POINTTOWARDS = "面向 %1"
+Blockly.Msg.MOTION_POINTTOWARDS_POINTER = "鼠標指針"
+Blockly.Msg.MOTION_GOTO = "移到 %1"
+Blockly.Msg.MOTION_GOTO_POINTER = "鼠標指針"
+Blockly.Msg.MOTION_GOTO_RANDOM = "隨機位置"
+Blockly.Msg.MOTION_GOTOXY = "移到 x: %1 y: %2"
+Blockly.Msg.MOTION_GLIDESECSTOXY = "在 %1 秒內滑行到 x: %2 y: %3"
+Blockly.Msg.MOTION_GLIDETO = "在 %1 秒內滑行到 %2"
+Blockly.Msg.MOTION_GLIDETO_POINTER = "鼠標指針"
+Blockly.Msg.MOTION_GLIDETO_RANDOM = "隨機位置"
+Blockly.Msg.MOTION_CHANGEXBY = "將x座標增加 %1"
+Blockly.Msg.MOTION_SETX = "將x座標設為 %1"
+Blockly.Msg.MOTION_CHANGEYBY = "將y座標增加 %1"
+Blockly.Msg.MOTION_SETY = "將y座標設為 %1"
+Blockly.Msg.MOTION_IFONEDGEBOUNCE = "碰到邊緣就反彈"
+Blockly.Msg.MOTION_SETROTATIONSTYLE = "將旋轉方式設為 %1"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT = "左右翻轉"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE = "不可旋轉"
+Blockly.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND = "任意旋轉"
+Blockly.Msg.MOTION_XPOSITION = "x 座標"
+Blockly.Msg.MOTION_YPOSITION = "y 座標"
+Blockly.Msg.MOTION_DIRECTION = "方向"
+Blockly.Msg.MOTION_SCROLLRIGHT = "向右滾動 %1"
+Blockly.Msg.MOTION_SCROLLUP = "向上滾動 %1"
+Blockly.Msg.MOTION_ALIGNSCENE = "和場景 %1 對齊"
+Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT = "左下角"
+Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT = "右下角"
+Blockly.Msg.MOTION_ALIGNSCENE_MIDDLE = "中間"
+Blockly.Msg.MOTION_ALIGNSCENE_TOPLEFT = "左上角"
+Blockly.Msg.MOTION_ALIGNSCENE_TOPRIGHT = "右上角"
+Blockly.Msg.MOTION_XSCROLL = "x滾動位置"
+Blockly.Msg.MOTION_YSCROLL = "y滾動位置"
+Blockly.Msg.MOTION_STAGE_SELECTED = "選中了舞臺:不可使用運動類積木"
+Blockly.Msg.OPERATORS_ADD = "%1 + %2"
+Blockly.Msg.OPERATORS_SUBTRACT = "%1 - %2"
+Blockly.Msg.OPERATORS_MULTIPLY = "%1 * %2"
+Blockly.Msg.OPERATORS_DIVIDE = "%1 / %2"
+Blockly.Msg.OPERATORS_RANDOM = "在 %1 和 %2 中隨機選一個數"
+Blockly.Msg.OPERATORS_GT = "%1 > %2"
+Blockly.Msg.OPERATORS_LT = "%1 < %2"
+Blockly.Msg.OPERATORS_EQUALS = "%1 = %2"
+Blockly.Msg.OPERATORS_AND = "%1 與 %2"
+Blockly.Msg.OPERATORS_OR = "%1 或 %2"
+Blockly.Msg.OPERATORS_NOT = "%1 不成立"
+Blockly.Msg.OPERATORS_JOIN = "連接 %1 和 %2"
+Blockly.Msg.OPERATORS_JOIN_APPLE = "蘋果"
+Blockly.Msg.OPERATORS_JOIN_BANANA = "香蕉"
+Blockly.Msg.OPERATORS_LETTEROF = "%2 的第 %1 個字元"
+Blockly.Msg.OPERATORS_LETTEROF_APPLE = "果"
+Blockly.Msg.OPERATORS_LENGTH = "%1 的長度"
+Blockly.Msg.OPERATORS_CONTAINS = "%1 包含 %2 ?"
+Blockly.Msg.OPERATORS_MOD = "%1 除以 %2 的餘數"
+Blockly.Msg.OPERATORS_ROUND = "將 %1 四舍五入"
+Blockly.Msg.OPERATORS_MATHOP = "%2 的 %1"
+Blockly.Msg.OPERATORS_MATHOP_ABS = "絕對值"
+Blockly.Msg.OPERATORS_MATHOP_FLOOR = "向下取整"
+Blockly.Msg.OPERATORS_MATHOP_CEILING = "向上取整"
+Blockly.Msg.OPERATORS_MATHOP_SQRT = "平方根"
+Blockly.Msg.OPERATORS_MATHOP_SIN = "sin"
+Blockly.Msg.OPERATORS_MATHOP_COS = "cos"
+Blockly.Msg.OPERATORS_MATHOP_TAN = "tan"
+Blockly.Msg.OPERATORS_MATHOP_ASIN = "asin"
+Blockly.Msg.OPERATORS_MATHOP_ACOS = "acos"
+Blockly.Msg.OPERATORS_MATHOP_ATAN = "atan"
+Blockly.Msg.OPERATORS_MATHOP_LN = "ln"
+Blockly.Msg.OPERATORS_MATHOP_LOG = "log"
+Blockly.Msg.OPERATORS_MATHOP_EEXP = "e ^"
+Blockly.Msg.OPERATORS_MATHOP_10EXP = "10 ^"
+Blockly.Msg.PROCEDURES_DEFINITION = "定義 %1"
+Blockly.Msg.SENSING_TOUCHINGOBJECT = "碰到 %1 ?"
+Blockly.Msg.SENSING_TOUCHINGOBJECT_POINTER = "鼠標指針"
+Blockly.Msg.SENSING_TOUCHINGOBJECT_EDGE = "舞臺邊緣"
+Blockly.Msg.SENSING_TOUCHINGCOLOR = "碰到顏色 %1 ?"
+Blockly.Msg.SENSING_COLORISTOUCHINGCOLOR = "顏色 %1 碰到 %2 ?"
+Blockly.Msg.SENSING_DISTANCETO = "到 %1 的距離"
+Blockly.Msg.SENSING_DISTANCETO_POINTER = "鼠標指針"
+Blockly.Msg.SENSING_ASKANDWAIT = "詢問 %1 並等待"
+Blockly.Msg.SENSING_ASK_TEXT = "妳叫什麼名字?"
+Blockly.Msg.SENSING_ANSWER = "回答"
+Blockly.Msg.SENSING_KEYPRESSED = "按下 %1 鍵?"
+Blockly.Msg.SENSING_MOUSEDOWN = "按下鼠標?"
+Blockly.Msg.SENSING_MOUSEX = "鼠標的x座標"
+Blockly.Msg.SENSING_MOUSEY = "鼠標的y座標"
+Blockly.Msg.SENSING_SETDRAGMODE = "將拖動模式設為 %1"
+Blockly.Msg.SENSING_SETDRAGMODE_DRAGGABLE = "可拖動"
+Blockly.Msg.SENSING_SETDRAGMODE_NOTDRAGGABLE = "不可拖動"
+Blockly.Msg.SENSING_LOUDNESS = "響度"
+Blockly.Msg.SENSING_LOUD = "響聲?"
+Blockly.Msg.SENSING_TIMER = "計時器"
+Blockly.Msg.SENSING_RESETTIMER = "計時器歸零"
+Blockly.Msg.SENSING_OF = "%2 的 %1"
+Blockly.Msg.SENSING_OF_XPOSITION = "x 座標"
+Blockly.Msg.SENSING_OF_YPOSITION = "y 座標"
+Blockly.Msg.SENSING_OF_DIRECTION = "方向"
+Blockly.Msg.SENSING_OF_COSTUMENUMBER = "造型編號"
+Blockly.Msg.SENSING_OF_COSTUMENAME = "造型名稱"
+Blockly.Msg.SENSING_OF_SIZE = "大小"
+Blockly.Msg.SENSING_OF_VOLUME = "音量"
+Blockly.Msg.SENSING_OF_BACKDROPNUMBER = "背景編號"
+Blockly.Msg.SENSING_OF_BACKDROPNAME = "背景名稱"
+Blockly.Msg.SENSING_OF_STAGE = "舞臺"
+Blockly.Msg.SENSING_CURRENT = "當前時間的 %1"
+Blockly.Msg.SENSING_CURRENT_YEAR = "年"
+Blockly.Msg.SENSING_CURRENT_MONTH = "月"
+Blockly.Msg.SENSING_CURRENT_DATE = "日"
+Blockly.Msg.SENSING_CURRENT_DAYOFWEEK = "星期"
+Blockly.Msg.SENSING_CURRENT_HOUR = "時"
+Blockly.Msg.SENSING_CURRENT_MINUTE = "分"
+Blockly.Msg.SENSING_CURRENT_SECOND = "秒"
+Blockly.Msg.SENSING_DAYSSINCE2000 = "2000年至今的天數"
+Blockly.Msg.SENSING_USERNAME = "用戶名"
+Blockly.Msg.SENSING_USERID = "用戶id"
+Blockly.Msg.SOUND_PLAY = "播放聲音 %1"
+Blockly.Msg.SOUND_PLAYUNTILDONE = "播放聲音 %1 等待播完"
+Blockly.Msg.SOUND_STOPALLSOUNDS = "停止所有聲音"
+Blockly.Msg.SOUND_SETEFFECTO = "將 %1 音效設為 %2"
+Blockly.Msg.SOUND_CHANGEEFFECTBY = "將 %1 音效增加 %2"
+Blockly.Msg.SOUND_CLEAREFFECTS = "清除音效"
+Blockly.Msg.SOUND_EFFECTS_PITCH = "音調"
+Blockly.Msg.SOUND_EFFECTS_PAN = "左右平衡"
+Blockly.Msg.SOUND_CHANGEVOLUMEBY = "將音量增加 %1"
+Blockly.Msg.SOUND_SETVOLUMETO = "將音量設為 %1%"
+Blockly.Msg.SOUND_VOLUME = "音量"
+Blockly.Msg.SOUND_RECORD = "錄制…"
+Blockly.Msg.CATEGORY_MOTION = "運動"
+Blockly.Msg.CATEGORY_LOOKS = "外觀"
+Blockly.Msg.CATEGORY_SOUND = "聲音"
+Blockly.Msg.CATEGORY_EVENTS = "事件"
+Blockly.Msg.CATEGORY_CONTROL = "控制"
+Blockly.Msg.CATEGORY_SENSING = "偵測"
+Blockly.Msg.CATEGORY_OPERATORS = "運算"
+Blockly.Msg.CATEGORY_VARIABLES = "變量"
+Blockly.Msg.CATEGORY_MYBLOCKS = "自制積木"
+Blockly.Msg.DUPLICATE = "復制"
+Blockly.Msg.DUPLICATE_PASTE = "復制並粘貼"
+Blockly.Msg.DELETE = "刪除"
+Blockly.Msg.ADD_COMMENT = "添加註釋"
+Blockly.Msg.REMOVE_COMMENT = "刪除註釋"
+Blockly.Msg.DELETE_BLOCK = "刪除"
+Blockly.Msg.DELETE_X_BLOCKS = "刪除 %1 積木"
+Blockly.Msg.DELETE_ALL_BLOCKS = "刪除全部 %1 積木?"
+Blockly.Msg.CLEAN_UP = "整理積木"
+Blockly.Msg.HELP = "幫助"
+Blockly.Msg.UNDO = "撤銷"
+Blockly.Msg.REDO = "重做"
+Blockly.Msg.EDIT_PROCEDURE = "編輯"
+Blockly.Msg.SHOW_PROCEDURE_DEFINITION = "查看定義"
+Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT = "說些什麼……"
+Blockly.Msg.COLOUR_HUE_LABEL = "顏色"
+Blockly.Msg.COLOUR_SATURATION_LABEL = "飽和度"
+Blockly.Msg.COLOUR_BRIGHTNESS_LABEL = "亮度"
+Blockly.Msg.CHANGE_VALUE_TITLE = "更改變量:"
+Blockly.Msg.RENAME_VARIABLE = "修改變量名"
+Blockly.Msg.RENAME_VARIABLE_TITLE = "將所有的「%1」變量名改為:"
+Blockly.Msg.RENAME_VARIABLE_MODAL_TITLE = "修改變量名"
+Blockly.Msg.NEW_VARIABLE = "建立一個變量"
+Blockly.Msg.NEW_VARIABLE_TITLE = "新變量名:"
+Blockly.Msg.VARIABLE_MODAL_TITLE = "新建變量"
+Blockly.Msg.VARIABLE_ALREADY_EXISTS = "已經存在名為「%1」的變量。"
+Blockly.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE = "已經存在一個名為「%1」的變量,其類型為「%2」。"
+Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "刪除%1處「%2」變量嗎?"
+Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE = "無法刪除變量「%1」,因為函數「%2」的定義中用到了它"
+Blockly.Msg.DELETE_VARIABLE = "刪除變量「%1」"
+Blockly.Msg.NEW_PROCEDURE = "制作新的積木"
+Blockly.Msg.PROCEDURE_ALREADY_EXISTS = "已經存在名為「%1」的程序。"
+Blockly.Msg.PROCEDURE_DEFAULT_NAME = "積木名稱"
+Blockly.Msg.NEW_LIST = "建立一個陣列"
+Blockly.Msg.NEW_LIST_TITLE = "新的陣列名:"
+Blockly.Msg.LIST_MODAL_TITLE = "新建陣列"
+Blockly.Msg.LIST_ALREADY_EXISTS = "名為 「%1」 的陣列已存在。"
+Blockly.Msg.RENAME_LIST_TITLE = "將所有的「%1」的陣列名改為:"
+Blockly.Msg.RENAME_LIST_MODAL_TITLE = "修改陣列名"
+Blockly.Msg.DEFAULT_LIST_ITEM = "東西"
+Blockly.Msg.NEW_BROADCAST_MESSAGE = "新消息"
+Blockly.Msg.NEW_BROADCAST_MESSAGE_TITLE = "新消息的名稱:"
+Blockly.Msg.BROADCAST_MODAL_TITLE = "新消息"
+Blockly.Msg.DEFAULT_BROADCAST_MESSAGE_NAME = "消息1"
+Blockly.Msg.GROVEZERO_MINIWHEEL_SET_POWER = "%1 %2 小車底盤 左輪動力 %3 %,右輪動力 %4 %"
+Blockly.Msg.GROVEZERO_MINIWHEEL_STOP = "%1 %2 小車底盤 停止運動"
+Blockly.Msg.GROVEZERO_MINIWHEEL_RUN_VELOCITY_AZIMUTH = "%1 %2 小車底盤 以 %3 %4"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT1 = "慢速"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT2 = "中速"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT3 = "快速"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT4 = "前進"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT5 = "後退"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT6 = "左轉"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT7 = "右轉"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT8 = "順時針轉"
+Blockly.Msg.GROVEZERO_MINIWHEEL_OPT9 = "逆時針轉"
+Blockly.Msg.GROVEZERO_MOTOR_STOP = "%1 %2 %3 直流減速馬達 停止轉動"
+Blockly.Msg.GROVEZERO_DC_MOTOR_TRUN_POWER = "%1 %2 %3 直流減速馬達 開始轉動 動力 %4 %"
+Blockly.Msg.GROVEZERO_SERVO_TURN_ANGLE = "%1 %2 伺服馬達 轉到 %3 度"
+Blockly.Msg.GROVEZERO_RGB_TO_COLOR = "%1 %2 紅 %3 綠 %4 藍 %5"
+Blockly.Msg.GROVEZERO_HSL_TO_COLOR = "%1 %2 顏色 %3 飽和度 %4 亮度 %5"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_IS_ON = "%1 %2 LED 矩陣 x:%3 y:%4 是否被點亮?"
+Blockly.Msg.GROVEZERO_LED_MATRIX_SHOW_SHAPE = "%1 %2 LED 矩陣 顯示圖案 %3"
+Blockly.Msg.GROVEZERO_LED_MATRIX_SHOW_STRING = "%1 %2 LED 矩陣 顯示字串 %3"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_SET_ON = "%1 %2 LED 矩陣 點亮 x: %3 y: %4"
+Blockly.Msg.GROVEZERO_LED_MATRIX_XY_SET_OFF = "%1 %2 LED 矩陣 熄滅 x: %3 y: %4"
+Blockly.Msg.GROVEZERO_LED_MATRIX_CLEAN = "%1 %2 LED 矩陣 全部熄滅"
+Blockly.Msg.GROVEZERO_RGB_LED_SHOW_STYLE_COLOR = "%1 %2 可調彩燈 壹直 %3 %4"
+Blockly.Msg.GROVEZERO_RGB_LED_SHOW_STYLE = "%1 %2 可調彩燈 %3 效果"
+Blockly.Msg.GROVEZERO_RGB_LED_FADE_FROM_COLOR1_TO_COLOR2 = "%1 %2 可調彩燈 從 %3 漸變到 %4"
+Blockly.Msg.GROVEZERO_RGB_LED_SET_BRIGHTNESS = "%1 %2 可調彩燈 設定亮度為 %3 %"
+Blockly.Msg.GROVEZERO_RGB_LED_LIGHT_OFF = "%1 %2 可調彩燈 熄滅"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT1 = "亮"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT2 = "閃爍"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT3 = "呼吸"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT4 = "彩虹燈"
+Blockly.Msg.GROVEZERO_RGB_LED_OPT5 = "隨機色"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_SHAPE = "%1 %2 %3 RGB LED 矩陣 顯示圖案 %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_STRING = "%1 %2 %3 RGB LED 矩陣 顯示字串 %4 %5"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_ANIMA = "%1 %2 %3 RGB LED 矩陣 顯示動畫 %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_SHOW_HISTOGRAM = "%1 %2 %3 RGB LED 矩陣 繪制柱狀圖 值為 %4"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON = "%1 %2 %3 RGB LED 矩陣 點亮 x: %4 y: %5 %6"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_OFF = "%1 %2 %3 RGB LED 矩陣 熄滅 x: %4 y: %5"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OFF = "%1 %2 %3 RGB LED 矩陣 開關 x: %4 y: %5 %6"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_IS_ON = "%1 %2 %3 RGB LED 矩陣 x: %4 y: %5 被點亮"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_CLEAN = "%1 %2 %3 RGB LED 矩陣 全部熄滅"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_GET_COLOR = "%1 %2 %3 RGB LED 矩陣 x: %4 y: %5 顏色值"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT1 = "波浪"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT2 = "順時針畫大方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT3 = "順時針畫小方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT4 = "逆時針畫大方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT5 = "逆時針畫小方形"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT6 = "變幻"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT7 = "火焰"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT8 = "行走"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_ARGS_ANIMA_OPT9 = "心碎"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT1 = "紅"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT2 = "橙"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT3 = "黃"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT4 = "綠"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT5 = "青"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT6 = "藍"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT7 = "紫"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT8 = "粉紅"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT9 = "白"
+Blockly.Msg.GROVEZERO_RGB_MATRIX_XY_SET_ON_OPT10 = "黑"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_WHEN_COUNTDOWN_END = "%1 %2 四位數碼管 倒數結束"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_SHOW_NUMBER = "%1 %2 四位數碼管 顯示 %3"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_START_COUNTDOWN = "%1 %2 四位數碼管 開始倒數 %3 秒"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_OFF = "%1 %2 四位數碼管 熄滅"
+Blockly.Msg.GROVEZERO_FOUR_DIGIT_SET_BRIGHTNESS = "%1 %2 四位數碼管 設定亮度 %3 %"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY = "%1 %2 蜂鳴器 播放旋律 %3 壹次"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT0 = "ba ding"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT1 = "wawawawaa"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT2 = "jump up"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT3 = "jump down"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT4 = "power up"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT5 = "power down"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT6 = "magic wand"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_MELODY_OPT7 = "siren"
+Blockly.Msg.GROVEZERO_BUZZER_MUTE_FOR_BEAT = "%1 %2 蜂鳴器 停頓 %3 拍"
+Blockly.Msg.GROVEZERO_BUZZER_SET_BPM = "%1 %2 蜂鳴器 將節奏(bpm) 設定為 %3"
+Blockly.Msg.GROVEZERO_BUZZER_ADD_BPM = "%1 %2 蜂鳴器 將節奏(bpm) 增加 %3"
+Blockly.Msg.GROVEZERO_BUZZER_GET_BPM = "%1 %2  蜂鳴器 節奏(bpm)"
+Blockly.Msg.GROVEZERO_BUZZER_STOP = "%1 %2 蜂鳴器 停止播放"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_NOTE = "%1 %2 蜂鳴器 持續播放音符  %3"
+Blockly.Msg.GROVEZERO_BUZZER_PLAY_NOTE_FOR_BEAT = "%1 %2 蜂鳴器 彈奏音符 %3 持續 %4 拍"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT0 = "低 C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT1 = "低 D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT2 = "低 E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT3 = "低 F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT4 = "低 G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT5 = "低 A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT6 = "低 B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT7 = "中 C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT8 = "中 D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT9 = "中 E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT10 = "中 F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT11 = "中 G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT12 = "中 A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT13 = "中 B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT14 = "高 C"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT15 = "高 D"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT16 = "高 E"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT17 = "高 F"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT18 = "高 G"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT19 = "高 A"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT20 = "高 B"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT21 = "低 C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT22 = "低 D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT23 = "低 F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT24 = "低 G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT25 = "低 A#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT26 = "中 C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT27 = "中 D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT28 = "中 F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT29 = "中 G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT30 = "中 A#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT31 = "高 C#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT32 = "高 D#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT33 = "高 F#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT34 = "高 G#"
+Blockly.Msg.SOUND_BUZZER_NOTES_OPT35 = "高 A#"
+Blockly.Msg.GROVEZERO_MP3_START_PLAY = "%1 %2 MP3播放器 播放第 %3 首歌"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY = "%1 %2 MP3播放器 %3 播放"
+Blockly.Msg.GROVEZERO_MP3_SWITCH = "%1 %2 MP3播放器 %3"
+Blockly.Msg.GROVEZERO_MP3_ADD_VOLUME = "%1 %2 MP3播放器 將音量增加 %3 %"
+Blockly.Msg.GROVEZERO_MP3_SET_VOLUME = "%1 %2 MP3播放器 將音量設定為 %3 %"
+Blockly.Msg.GROVEZERO_MP3_STOP_PLAY = "%1 %2 MP3播放器 停止播放"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE = "%1 %2 MP3播放器 模式為 %3"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT0 = "暫停"
+Blockly.Msg.GROVEZERO_MP3_PAUSE_OR_PLAY_OPT1 = "恢復"
+Blockly.Msg.GROVEZERO_MP3_SWITCH_OPT0 = "下壹首"
+Blockly.Msg.GROVEZERO_MP3_SWITCH_OPT1 = "上壹首"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT0 = "順序播放"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT1 = "隨機播放"
+Blockly.Msg.GROVEZERO_MP3_PLAY_MODE_OPT2 = "單曲循環"
+Blockly.Msg.GROVEZERO_MAINBOARD_START = "%1 %2 當控制板啟動時"
+Blockly.Msg.GROVEZERO_MAINBOARD_WHEN_ARRIVAL_TIME = "%1 %2 當計時器大於 %3 秒"
+Blockly.Msg.GROVEZERO_MAINBOARD_WHEN_RADIO_RECEIVE = "%1 %2 當無線接收到 %3"
+Blockly.Msg.GROVEZERO_MAINBOARD_BROADCAST = "%1 %2 廣播 %3"
+Blockly.Msg.GROVEZERO_MAINBOARD_STOP_BROADCAST = "%1 %2 停止廣播"
+Blockly.Msg.GROVEZERO_MAINBOARD_SET_BROADCAST_CHANNEL = "%1 %2 設定廣播頻道 %3"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK = "%1 %2 當 %3 雙按鈕開關 的 %4 被 %5"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_IS_PRESSED = "%1 %2 %3 雙按鈕開關 的 %4 正在被按下?"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT3 = "單擊"
+Blockly.Msg.GROVEZERO_TWIN_BUTTON_WHEN_CLICK_OPT5 = "長按"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_WHEN_CHANGE = "%1 %2 當 9軸姿態感應器 %3"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT0 = "豎直向下"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT1 = "豎直向上"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT2 = "向左傾斜"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT3 = "向右傾斜"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT4 = "正面朝上"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT5 = "正面朝下"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT6 = "被搖晃"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_OPT7 = "自由落體"
+Blockly.Msg.GROVEZERO_IMU9_DOF_STATUS_IS = "%1 %2 9軸姿態感應器 %3 ?"
+Blockly.Msg.GROVEZERO_IMU9_DOF_GET_VALUE = "%1 %2 9軸姿態感應器 %3 軸加速度值(mg)"
+Blockly.Msg.GROVEZERO_PIR_MOTION_SENSOR_DETECT_SOMEONE = "%1 %2 當 紅外運動感應器 檢測到人"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK = "%1 %2 當 %3 機械按鈕開關 被 %4"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT0 = "單擊"
+Blockly.Msg.GROVEZERO_MECH_KEY_WHENCLICK_OPT1 = "長按"
+Blockly.Msg.GROVEZERO_MECH_KEY_IS_PRESSED = "%1 %2 %3 機械按鈕開關 正在被按下?"
+Blockly.Msg.GROVEZERO_MECH_KEY_SET_RGB = "%1 %2 %3 機械按鈕開關 背燈亮 %4"
+Blockly.Msg.GROVEZERO_MECH_KEY_CLOSE_RGB = "%1 %2 %3 機械按鈕開關 背燈熄滅"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE = "%1 %2 當 %3 旋鈕調節器被 %4"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT0 = "順時針旋轉"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT1 = "逆時針旋轉"
+Blockly.Msg.GROVEZERO_KNOB_WHEN_CHANGE_OPT2 = "按下"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE = "%1 %2 當 手勢識別感應器 檢測到 %3"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT0 = "向左劃"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT1 = "向右劃"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT2 = "向上劃"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT3 = "向下劃"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT4 = "物體靠近"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT5 = "物體遠離"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT6 = "順時針畫圈"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT7 = "逆時針畫圈"
+Blockly.Msg.GROVEZERO_GESTURE_SENSOR_WHEN_CHANGE_OPT8 = "手指舞動"
+Blockly.Msg.GROVEZERO_TOUCHPAD_IS_PRESSED = "%1 %2 %3 多觸摸開關 腳位 %4 被按下?"
+Blockly.Msg.GROVEZERO_TOUCHPAD_WHEN_CLICK = "%1 %2 當 %3 多觸摸開關 腳位 %4 被按下"
+Blockly.Msg.GROVEZERO_LIGHT_SENSOR_GET_VALUE = "%1 %2 光線感應器 光線強度(流明)"
+Blockly.Msg.GROVEZERO_SOUND_SENSOR_GET_VALUE = "%1 %2 聲音感應器 聲音響度"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE = "%1 %2 溫度感應器 溫度值 %3"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT0 = "℃"
+Blockly.Msg.GROVEZERO_TEMPERATURESENSOR_GET_VALUE_OPT1 = "℉"
+Blockly.Msg.GROVEZERO_SLIDER_GET_VALUE = "%1 %2 %3 滑動變阻器 值"
+Blockly.Msg.GROVEZERO_ULTRASONIC_SENSOR_GET_VALUE = "%1 %2 超聲波測距感應器 距離(厘米)"
+Blockly.Msg.GROVEZERO_TEMHUM_SENSOR_GET_TEM_VALUE = "%1 %2 溫濕度感應器 溫度值 %3"
+Blockly.Msg.GROVEZERO_TEMHUM_SENSOR_GET_HUM_VALUE = "%1 %2 溫濕度感應器 濕度值(%)"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_GET_COLOR = "%1 %2 識色循跡感應器 顏色值"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITION = "%1 %2 識色循跡感應器 線的位置為 %3"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT0 = "中"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT1 = "右"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT2 = "最右"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT3 = "左"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT4 = "最左"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_POSITiON_OPT5 = "丟失"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR = "%1 %2 識色循跡感應器 檢測到 %3 色"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT0 = "紅"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT1 = "綠"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT2 = "藍"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT3 = "黑"
+Blockly.Msg.GROVEZERO_COLOR_LINE_FOLLOWER_IS_COLOR_OPT4 = "其他"
+Blockly.Msg.ARDUINO_SEEED_SERVO_MOVE = "%1 %2 伺服馬達 管腳 %3 角度 %4 延時 %5"
+Blockly.Msg.ARDUINO_SEEED_SERVO_READ_DEGREES = "%1 %2 伺服馬達 管腳 %3 讀取讀取"
+Blockly.Msg.ARDUINO_SEEED_LED = "%1 %2 LED燈 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_SEEED_BUZZER = "%1 %2 蜂鳴器 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_SEEED_RELAY = "%1 %2 繼電器 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_SEEED_BTN = "%1 %2 按鍵正在被按下 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_TILT = "%1 %2 傾斜感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_TOUCH = "%1 %2 觸摸 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_ROTATION = "%1 %2 旋轉電位計 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_SOUND = "%1 %2 噪聲(模擬) 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_LIGHT = "%1 %2 光線感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE = "%1 %2 溫度感應器 管腳 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT = "%1 %2 全彩背光LCD屏 打印第1欄 %3 打印第2欄 %4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_PRINT2 = "%1 %2 全彩背光LCD屏 在第 %3 欄 第 %4 列 打印 %5"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER = "%1 %2 全彩背光LCD屏 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT1 = "開"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT2 = "關"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT3 = "有光標"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT4 = "無光標"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT5 = "閃爍"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT6 = "不閃爍"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_POWER_OPT7 = "清除"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_LCD_SETRGB = "%1 %2 全彩背光LCD屏 設定顏色 R %3 G %4 B %5"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY = "%1 %2 溫濕度感應器 管腳 %3 %4"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT1 = "溫度"
+Blockly.Msg.ARDUINO_SEEED_TEMPERATURE_HUMIDITY_OPT2 = "濕度"
+Blockly.Msg.ARDUINO_SEEED_THUMB_JOYSTICK = "%1 %2 拇指控制桿管腳 %3 座標值 %4軸"
+Blockly.Msg.ARDUINO_SEEED_ULT = "%1 %2 超聲波測距感應器距離(cm) 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_LINE_FINDER = "%1 %2 紅外接近感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_LINE_FINDER_R = "%1 %2 巡線感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_WATER = "%1 %2 水分子檢測感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_MAGNETIC_SWITCH = "%1 %2 磁力開關 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_PIR_MOTION = "%1 %2 人體紅外感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_FLAME = "%1 %2 火焰感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_COLLISION = "%1 %2 碰撞感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_HALL = "%1 %2 霍爾電磁開關 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_SLIDE_POT = "%1 %2 滑動電位開關 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_MOISTURE = "%1 %2 土壤濕度感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_4DIGIT_DISPLAY = "%1 %2 4位數碼管 管腳 %3 顯示為 %4"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED = "%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 %4 序號 %5"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED1 = "%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 R %4 G %5 B %6 序號 %7"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED10 = "%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 %4"
+Blockly.Msg.ARDUINO_SEEED_RGB_LED11 = "%1 %2 炫彩RGB LED燈 管腳 %3 顯示為 R %4 G %5 B %6"
+Blockly.Msg.ARDUINO_SEEED_SPEAKER = "%1 %2 揚聲器 管腳 %3 播放音符 %4 以%5拍"
+Blockly.Msg.ARDUINO_SEEED_RECORDER = "%1 %2 錄音播放模組 管腳 %3 %4"
+Blockly.Msg.ARDUINO_SEEED_EL_DRIVER = "%1 %2 冷光條驅動 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_SEEED_EL_VIBRATION_MOTOR = "%1 %2 震動馬達 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_SEEED_ELECTROMAGNET = "%1 %2 電磁鐵模組 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_SEEED_MINI_FAN = "%1 %2 迷妳風扇 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_3ADA = "%1 %2 三軸數字加速度(16g) %3 軸"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_TOUCH = "%1 %2 多通道觸摸感應器 通道 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER = "%1 %2 迷妳馬達驅動模組 馬達 %3 轉速(-255~255)%4"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_MINI_MOTOR_DRIVER_STOP = "%1 %2 迷妳馬達驅動模組 馬達 %3 停止"
+Blockly.Msg.ARDUINO_SEEED_LED_STRING_LIGHT = "%1 %2 LED燈條 管腳 %3 編號 %4 顯示為 R %5 G %6 B %7"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR = "%1 %2 柱狀發光二級管 管腳 %3 %4 %5"
+Blockly.Msg.ARDUINO_SEEED_LED_CIRCULAR_LED = "%1 %2 環形發光二級管 管腳 %3 亮燈 %4"
+Blockly.Msg.ARDUINO_SEEED_GESTURE = "%1 %2 手勢識別感應器 識別手勢 %3?"
+Blockly.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER = "%1 %2  語音識別感應器 管腳 %3 識別語音 %4?"
+Blockly.Msg.ARDUINO_FIGURE_OUTPUT = "數字輸出 管腳 %1 設為 %2"
+Blockly.Msg.ARDUINO_FIGURE_INPUT = "數字輸入 管腳 %1"
+Blockly.Msg.ARDUINO_ANALOG_INPUT = "模擬輸入 管腳 %1"
+Blockly.Msg.ARDUINO_ANALOG_OUTPUT = "模擬輸出 管腳 %1 賦值為 %2"
+Blockly.Msg.ARDUINO_PULSE_LEN = "脈沖長度 管腳 %1 狀態 %2"
+Blockly.Msg.ARDUINO_PULSE_LEN_US = "脈沖長度 管腳 %1 狀態 %2 超時(微秒) %3"
+Blockly.Msg.ARDUINO_SERIAL_BAUD_RATE = "串口 波特率 %1"
+Blockly.Msg.ARDUINO_SERIAL_PRINT = "串口 寫入文本 %1"
+Blockly.Msg.ARDUINO_SERIAL_IS_READABLE = "串口 有數據可讀嗎?"
+Blockly.Msg.ARDUINO_SERIAL_READ = "串口 讀取字串"
+Blockly.Msg.ARDUINO_DELAY_MS = "延時 毫秒 %1"
+Blockly.Msg.ARDUINO_DELAY_US = "延時 微秒 %1"
+Blockly.Msg.ARDUINO_SYS_TIME = "系統運行時間 %1"
+Blockly.Msg.ARDUINO_KEEP_WAIT = "壹直等待(結束程序)"
+Blockly.Msg.ARDUINO_FOR1 = "使用 %1 從 %2 到 %3 長度為 %4"
+Blockly.Msg.ARDUINO_FOR2 = "執行 %1"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT = "%1 %2 RGB矩陣 點亮 x:%3 y:%4 %5"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_TEXT = "%1 %2 RGB矩陣 顯示字串 %3"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_SHOW_EMOJS = "%1 %2 RGB矩陣 顯示圖案 %3"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1 = "%1 %2 Otto DIY機器人 %3 步數:%4 時間:%5"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2 = "%1 %2 Otto DIY機器人 %3 步數:%4 時間:%5 方向:%6"
+Blockly.Msg.ARDUINO_SETUP_LOOP0 = "初始化 setup"
+Blockly.Msg.ARDUINO_SETUP_LOOP2 = "循環 loop"
+Blockly.Msg.ARDUINO_REPEAT = "重複當 %1"
+Blockly.Msg.ARDUINO_BREAK = "中斷循環"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT0 = "向上"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT1 = "向下"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT2 = "向左"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT3 = "向右"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT4 = "向前"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT5 = "向後"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT6 = "順時針"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT7 = "逆時針"
+Blockly.Msg.ARDUINO_SEEED_GESTURE_OPT8 = "揮手"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT0 = "紅"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT1 = "橙"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT2 = "黃"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT3 = "綠"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT4 = "青"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT5 = "藍"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT6 = "紫"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT7 = "粉紅"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT8 = "白"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_RGB_LED_MATRIX_ON_POINT_OPT9 = "熄滅"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT0 = "前進"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT1 = "後退"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT2 = "往左"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT1_OPT3 = "往右"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT0 = "停止"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT1 = "跳動"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT2 = "側踢"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT3 = "搖搖腿"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT4 = "上下搖擺"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT5 = "左右搖擺"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT6 = "舞動腳尖"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT7 = "抖動"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT8 = "上下抖動"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT9 = "太空步"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT10 = "月球漫步"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT11 = "搖擺"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT12 = "向右/向前"
+Blockly.Msg.ARDUINO_GROVE_OTTO_DIY_ROBOT2_OPT13 = "向左/向後"
+Blockly.Msg.ARDUINO_SHIELD_BOT2 = "%1 %2 Shield Bot 小車 循跡感應器線的位置為 %3"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT1 = "中"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT2 = "左"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT3 = "最左"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT4 = "右"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT5 = "最右"
+Blockly.Msg.ARDUINO_SHIELD_BOT2_OPT6 = "丟失"
+Blockly.Msg.ARDUINO_SHIELD_BOT1 = "%1 %2 Shield Bot 小車 %3 %4"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT1 = "前進"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT2 = "後退"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT3 = "往左"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT4 = "往右"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT5 = "停止"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT6 = "低速"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT7 = "中速"
+Blockly.Msg.ARDUINO_SHIELD_BOT1_OPT8 = "高速"
+Blockly.Msg.CATEGORY_ARDUINO_INIT = "初始化"
+Blockly.Msg.CATEGORY_ARDUINO_INPUT = "輸入"
+Blockly.Msg.CATEGORY_ARDUINO_OUTPUT = "輸出"
+Blockly.Msg.CATEGORY_ARDUINO_SERIAL = "串口"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_IGURE = "Grove 數字"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_ANALOG = "Grove 模擬"
+Blockly.Msg.CATEGORY_ARDUINO_GROVE_I2C = "Grove I2C"
+Blockly.Msg.CATEGORY_ARDUINO_ROBOT_KIT = "M.A.R.K"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW = "%1 %2 web服務器 %3 %4 顯示 名稱:%5 數值:%6"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT1 = "水分子檢測感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT2 = "超聲波測距感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT3 = "人體紅外感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT4 = "溫濕度感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT5 = "LED燈"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT6 = "振動感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT7 = "電壓分壓器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT8 = "空氣質量感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT9 = "火焰感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_SHOW_OPT10 = "圖像識別感應器"
+Blockly.Msg.ARDUINO_WEBSERVER_INIT = "%1 %2 web服務器 初始化 %3 網絡名稱 %4 密碼 %5"
+Blockly.Msg.ARDUINO_WEBSERVER_INIT_OPT1 = "智慧城市"
+Blockly.Msg.ARDUINO_COLOR_SENSOR = "%1 %2 顏色識別感應器 識別到顏色 %3 ?"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT1 = "紅"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT2 = "綠"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT3 = "藍"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT4 = "黑"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT5 = "白"
+Blockly.Msg.ARDUINO_COLOR_SENSOR_OPT6 = "其他"
+Blockly.Msg.GROVEZERO_MATH_ITOA_VALUE_MESSAGE0 = "轉字串 %1"
+Blockly.Msg.TOOLBOX_EXTENSION_CATEGORY_NAME = "擴展"
+Blockly.Msg.ARDUINO_SEEED_VOLTAGE = "%1 %2 電壓分壓器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_QUALITY = "%1 %2 空氣質量感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_WATER_ANALOG = "%1 %2 水分子檢測感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_HUMIDIFIER = "%1 %2 超聲波霧化器 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_SEEED_VIBRATION = "%1 %2 震動感應器 管腳 %3"
+Blockly.Msg.ARDUINO_SEEED_LED_ANALOG = "%1 %2 LED燈 管腳 %3 設為 %4"
+Blockly.Msg.ARDUINO_VISION_SENSOR1 = "%1 %2 圖像識別感應器 識別 球體 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR1_OPT1 = "橙色乒乓球"
+Blockly.Msg.ARDUINO_VISION_SENSOR1_OPT2 = "綠色網球"
+Blockly.Msg.ARDUINO_VISION_SENSOR2 = "%1 %2 圖像識別感應器 識別 交通標示卡片 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR3 = "%1 %2 圖像識別感應器 識別 數字卡片 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR4 = "%1 %2 圖像識別感應器 識別 圖形卡片 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT1 = "對號"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT2 = "叉號"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT3 = "圓形"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT4 = "方形"
+Blockly.Msg.ARDUINO_VISION_SENSOR4_OPT5 = "三角形"
+Blockly.Msg.ARDUINO_VISION_SENSOR5 = "%1 %2 圖像識別感應器 識別 人體"
+Blockly.Msg.ARDUINO_VISION_SENSOR6 = "%1 %2 圖像識別感應器 識別 顏色 %3"
+Blockly.Msg.ARDUINO_VISION_SENSOR7 = "%1 %2 圖像識別感應器 獲取識別顏色值"
+Blockly.Msg.BUZZER_TONE_LOW = "低"
+Blockly.Msg.BUZZER_TONE_MIDDLE = "中"
+Blockly.Msg.BUZZER_TONE_HIGH = "高"
+Blockly.Msg.BUZZER_SELECTED_PREFIX = "已選:"
+Blockly.Msg.ARDUINO_LED_STRIP1 = "%1 %2 炫彩RGB LED燈條 管腳 %3 顯示為R值 %4 G值 %5 B值 %6 序號 %7"
+Blockly.Msg.ARDUINO_LED_STRIP2 = "%1 %2 炫彩RGB LED燈條 管腳 %3 顯示為R值 %4 G值 %5 B值 %6"
+Blockly.Msg.ARDUINO_VISION_SENSOR8 = "%1 %2 圖像識別感應器 獲取球體 %3 值"
+Blockly.Msg.ARDUINO_OLCD1 = "%1 %2 OLCD螢幕 顯示圖案 %3"
+Blockly.Msg.ARDUINO_OLCD2 = "%1 %2 OLCD螢幕 顯示字串 %3 第 %4 欄,第 %5 列"
+Blockly.Msg.ARDUINO_OLCD3 = "%1 %2 OLCD螢幕 清除顯示"
+Blockly.Msg.MAIXDUINO_ENENT_WHENSTARTUP = "當啟動時"
+Blockly.Msg.MAIXDUINO_DISPLAY_STRING = "顯示 %1 於第 %2 欄"
+Blockly.Msg.MAIXDUINO_DISPLAY_SET_CIRCLE = "繪制圓形:圓心座標 X%1 Y%2 半徑%3"
+Blockly.Msg.MAIXDUINO_DISPLAY_SET_RECTANGLE = "繪制長方形: X1%1 Y1%2 X2%3 Y2%4"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_CIRCLE = "%1 %2 繪制圓形區域 %3"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE = "%1 %2 繪制長方形區域 %3"
+Blockly.Msg.MAIXDUINO_CAMERA_SET_THRESHOLD = "設定圖像識別 靈敏度為 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_TAKE_PICTURE = "拍照: 文件名 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_TAKE_VIDEO = "錄像:時間 %1 秒, 文件名 %2"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL = "檢測到圓形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_COORD = "檢測到的圓 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_VALUE = "檢測到的圓訊息"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE = "檢測到長方形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_COORD = "檢測到的長方形 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_VALUE = "檢測到的長方形訊息"
+Blockly.Msg.MAIXDUINO_CAMERA_GET_BALL_AVERAGE_COLOR = "%1 %2 球形區域:X座標 %3 Y座標 %4 R值 %5 的平均顏色RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_GET_RECTANGLE_AVERAGE_COLOR = "%1 %2 長方形區域:Xmin座標 %3 Xmax座標 %4 Ymin座標 %5 Ymax座標 %6 的平均顏色RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_COLOR = "%1 %2 興趣區域 %3 檢測到 %4"
+Blockly.Msg.MAIXDUINO_CAMERA_INTEREST_AREA_AVERAGE_COLOR = "%1 %2 興趣區域 %3 的平均顏色RGB值"
+Blockly.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_DETECTION = "家庭動物識別結果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_HOME_ANIMAL_SEL_DETECTION = "家庭動物 識別結果為 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_DETECTION = "動物園動物識別結果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_ZOO_ANIMAL_SEL_DETECTION = "動物園動物 識別結果為 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_DETECTION = "普通物體識別結果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_SENSING_ORDINARY_OBJECT_SEL_DETECTION = "普通物體 識別結果為 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_SENSING_NUM_DETECTION = "檢測到的數字結果 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_NUM_SEL_DETECTION = "數字 檢測結果為 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_NUM_CERTRE_DETECTION = "檢測到的數字 %1 的 %2 概率 > %3 %"
+Blockly.Msg.MAIXDUINO_SENSING_TRAFFIC_SIGNS_DETECTION = "檢測到的交通標誌 概率 > %1 %"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_SEL_DETECTION = "交通標誌 檢測結果為 %1 概率 > %2 %"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_CERTRE_DETECTION = "檢測到的交通標誌 %1 的 %2 概率 >%3 %"
+Blockly.Msg.MAIXDUINO_INPUT_SYSTEMTIME = "系統運行時間 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_R_MAX = "R最大"
+Blockly.Msg.MAIXDUINO_CAMERA_R_MIN = "R最小"
+Blockly.Msg.MAIXDUINO_CAMERA_SIZE_MAX = "最大"
+Blockly.Msg.MAIXDUINO_CAMERA_SIZE_MIN = "最小"
+Blockly.Msg.MAIXDUINO_CAMERA_COORD_X = "位置:X座標"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_Y = "Y座標"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_XMIN = "位置:Xmin座標"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_YMIN = "位置:Ymin座標"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_XMAX = "位置:Xmax座標"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_YMAX = "位置:Ymax座標"
+Blockly.Msg.MAIXDUINO_CAMERA_R_VALUE = "半徑"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT1 = "紅色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT2 = "綠色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT3 = "藍色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT4 = "黃色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT5 = "青色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT6 = "紫色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT7 = "黑色"
+Blockly.Msg.MAIXDUINO_CAMERA_SENSOR_OPT8 = "白色"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT1 = "貓"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT2 = "狗"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT3 = "鳥"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT4 = "刺猬"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT5 = "老鼠"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT6 = "鱷魚"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT7 = "熊"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT8 = "大象"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT9 = "長頸鹿"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT10 = "老虎"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT11 = "蝴蝶"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT12 = "蟑螂"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT13 = "魚"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT14 = "蜥蜴"
+Blockly.Msg.MAIXDUINO_SENSING_ANIMAL_OPT15 = "蜘蛛"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT0 = "左轉"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT1 = "右轉"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT2 = "直行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT3 = "調頭"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT4 = "停車讓行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT5 = "限速5"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT6 = "限速80"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT7 = "禁止直行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT8 = "減速讓行"
+Blockly.Msg.MAIXDUINO_TRAFFIC_SIGNS_OPT9 = "註意行人"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT1 = "椅子"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT2 = "書籍"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT3 = "杯子"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT4 = "筆"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT5 = "比薩餅"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT6 = "智能手機"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT7 = "炸彈"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT8 = "電腦"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT9 = "人"
+Blockly.Msg.MAIXDUINO_SENSING_OBJECT_OPT10 = "背包"
+Blockly.Msg.MAIXDUINO_SENSING_COORD_X = "X 座標"
+Blockly.Msg.MAIXDUINO_SENSING_COORD_Y = "Y 座標"
+Blockly.Msg.MAIXDUINO_LINEPAROL_ANGLE = "%1 %2 巡線 設定線識別顏色為 %3 區域權重 紅區%4%  藍區%5%  綠區%6%"
+Blockly.Msg.MAIXDUINO_CAMERA_BALL_AERA = "球形"
+Blockly.Msg.MAIXDUINO_CAMERA_RECTANGLE_AERA = "長方形"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_RUN = "M.A.R.K 小車以 %1 %2"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN = "M.A.R.K 設定 %1 轉速為 %2 %"
+Blockly.Msg.MAIXDUINO_ROBOT_SERVO_RUN = "M.A.R.K 伺服馬達 %1 轉到 %2 度"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETANGLE = "M.A.R.K 設定步進馬達步距角為 %1 °"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_SETROTATESPEED = "M.A.R.K 設定步進馬達轉速為 %1 RPM"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_RUN = "M.A.R.K 步進馬達轉動 %1 步"
+Blockly.Msg.MAIXDUINO_ROBOT_STEPPER_SERVO_TURN = "M.A.R.K 視覺巡線: 轉彎角度 %1 速度 %2 靈敏度 %3"
+Blockly.Msg.CocoRobo_ENENT_WHENSTARTUP = "%1 %2 當教科板 啟動"
+Blockly.Msg.CocoRobo_ENENT_WHENACTION = "%1 %2 當按鍵 %3 被 %4 時"
+Blockly.Msg.CocoRobo_ENENT_WHENPINVOLTAGE = "%1 %2 當引腳 %3 被 %4 時"
+Blockly.Msg.CocoRobo_ENENT_WHENSHARK = "%1 %2 當教科板 被搖晃時"
+Blockly.Msg.CocoRobo_ENENT_TILT_DIRECTION = "%1 %2 當教科板 %3 時"
+Blockly.Msg.CocoRobo_ENENT_WHENTOUCHKEY = "%1 %2 當觸摸鍵 %3 被 %4 時"
+Blockly.Msg.CocoRobo_ENENT_FOR1 = "%1 %2 設定定時器 %3 %4 周期 %5 毫秒"
+Blockly.Msg.CocoRobo_ENENT_FOR2 = "執行 %1"
+Blockly.Msg.CocoRobo_ENENT_CLEAR_TIMER = "%1 %2 清除 定時器/事件 %3"
+Blockly.Msg.CocoRobo_ENENT_TIMER_COUNT = "%1 %2 定時器 %3 的計數值"
+Blockly.Msg.CocoRobo_EVENT_WHEN_ACTION = "%1 %2 事件 %3 : 當 %4 時"
+Blockly.Msg.CocoRobo_EVENT_CHILD_THREAD = "%1 %2 子線程 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_BUTTON_PRESSED = "%1 %2 按鍵 %3 被按下"
+Blockly.Msg.CocoRobo_SYSRESOURES_BUTTON_TOUCH = "%1 %2 按鍵 %3 被觸摸"
+Blockly.Msg.CocoRobo_SYSRESOURES_TOUCH_VALUE = "%1 %2 按鍵 %3 觸摸值"
+Blockly.Msg.CocoRobo_SYSRESOURES_VOLUME = "%1 %2 聲音值"
+Blockly.Msg.CocoRobo_SYSRESOURES_LIGHT = "%1 %2 光線值"
+Blockly.Msg.CocoRobo_SYSRESOURES_ACCELERATION = "%1 %2 %3 軸加速度"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE = "%1 %2 %3  軸傾斜角"
+Blockly.Msg.CocoRobo_SYSRESOURES_SHARKED = "%1 %2 掌控版 被搖晃"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_ANGLE = "%1 %2 掌控版 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_COLOR = "%1 %2 設定 %3 RGB燈顏色為 %4"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_SINGLE_RGB = "%1 %2 設定 %3 RGB燈顏色為 R %4 G %5 B %6"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_ALL_COLOR = "%1 %2 設定所有 RGB燈顏色為 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_ALL_RGB = "%1 %2 設定所有 RGB燈顏色為 R %3 G %4 B %5"
+Blockly.Msg.CocoRobo_SYSRESOURES_CLOSE_RGB = "%1 %2 關閉 RGB燈"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_BME280 = "%1 %2 BME280 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_DRAW_CLOCK = "%1 %2 繪制時鐘 x %3 y %4 半徑 %5"
+Blockly.Msg.CocoRobo_SYSRESOURES_CLOCK_OPERATE = "%1 %2 %3 時鐘"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_RUN_TIME = "%1 %2 運行時間 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_SET_LOCAL_TIME = "%1 %2 本地時間 %3"
+Blockly.Msg.CocoRobo_SYSRESOURES_RESET = "%1 %2 復位"
+Blockly.Msg.CocoRobo_SYSRESOURES_MAC_ADDRESS = "%1 %2 MAC地址"
+Blockly.Msg.CocoRobo_LOOKS_OLCD = "%1 %2 LCD 屏 %3"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_LINE_TEXT = "%1 %2 LCD 屏第 %3 欄顯示 %4 模式 %5"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_CLEAR_LINE = "%1 %2 LCD 屏 清除第 %3 欄"
+Blockly.Msg.CocoRobo_LOOKS_DISPLAY_TEXT = "%1 %2 顯示文本 x %3 y %4 內容 %5 模式 %6"
+Blockly.Msg.CocoRobo_LOOKS_TRACE_POINT = "%1 %2 描點 x %3 y %4 為 %5"
+Blockly.Msg.CocoRobo_LOOKS_PROGRESS = "%1 %2 進度條 x %3 y %4 寬 %5 高 %6 進度 %7"
+Blockly.Msg.CocoRobo_LOOKS_COLUMN_STRIP = "%1 %2 柱狀條 %3 x %4 y %5 寬 %6 高 %7 進度 %8"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_LINE = "%1 %2 %3 線 x1 %4 y1 %5 到 x2 %6 y2 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_FRAME = "%1 %2 %3 邊框 x %4 y %5 寬 %6 高 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_ARC_BORDER = "%1 %2 %3 圓角邊框 x %4 y %5 寬 %6 高 %7 半徑 %8"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_RECT = "%1 %2 %3 矩形 x %4 y %5 寬 %6 高 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_CIRCLE = "%1 %2 %3 %4 圓 x %5 y %6 半徑 %7"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_TRIANGLE = "%1 %2 %3 %4 三角形 x %5 y %6 x2 %7 y2 %8 x3 %9 y3 %10"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_DISPLAY_PICTURE = "%1 %2 在 x %3 y %4 顯示圖像 %5"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_DISPLAY = "%1 %2 在 x %3 y %4 顯示 %5 字體 %6 %7"
+Blockly.Msg.CocoRobo_MUSIC_STOP_PLAY = "%1 %2 停止音樂 腳位 %3"
+Blockly.Msg.CocoRobo_MUSIC_RESTORE_MUSIC_SET = "%1 %2 恢復音樂設定"
+Blockly.Msg.CocoRobo_MUSIC_NOTE_BEAT = "%1 %2 音符 %3 節拍 %4"
+Blockly.Msg.CocoRobo_MUSIC_NOTE_BEAT_PIN = "%1 %2 播放音符 音符 %3 節拍 %4 腳位 %5"
+Blockly.Msg.CocoRobo_MUSIC_TONE = "%1 %2 音調 %3"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN = "%1 %2 播放音調 音調%3 延時 %4 腳位 %5"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_TONE_PIN_PARA = "%1 %2 播放音調 從 %3 到 %4 長度 %5 時長 %6 (毫秒)腳位 %7"
+Blockly.Msg.CocoRobo_MUSIC_PLAY_MUSIC_PIN = "%1 %2 播放音樂 %3 等待 %4 循環 %5 腳位 %6"
+Blockly.Msg.CocoRobo_MUSIC_SET_PLAY_SPEED = "%1 %2 設定播放速度為 %3 倍"
+Blockly.Msg.CocoRobo_MUSIC_SET_BEAT = "%1 %2 設定每壹拍等同 %3 分音符,每分鐘節拍數 %4"
+Blockly.Msg.CocoRobo_MUSIC_SET_CURRENT_BEAT = "%1 %2 當前節拍數"
+Blockly.Msg.CocoRobo_BUZZER_INIT = "%1 %2 音頻 初始化"
+Blockly.Msg.CocoRobo_BUZZER_RELEASE_CACHE = "%1 %2 音頻 釋放緩存"
+Blockly.Msg.CocoRobo_BUZZER_SET_VOLUMN = "%1 %2 設定音頻音量 %3"
+Blockly.Msg.CocoRobo_BUZZER_SET_ACTION = "%1 %2 音頻 %3"
+Blockly.Msg.CocoRobo_BUZZER_PLAY = "%1 %2 音頻 播放 %3"
+Blockly.Msg.CocoRobo_BUZZER_VOICE_CONF = "%1 %2 TTS 語音配置 APPID %3 APIKey %4"
+Blockly.Msg.CocoRobo_BUZZER_VOICE_PLAY = "%1 %2 TTS 語音播放 %3"
+Blockly.Msg.CocoRobo_PIN_GET_VALUE = "%1 %2 讀取引腳 %3 數字值"
+Blockly.Msg.CocoRobo_PIN_SET_VALUE = "%1 %2 設定引腳 %3 數字值為 %4"
+Blockly.Msg.CocoRobo_PIN_GET_ANALOG_VALUE = "%1 %2 讀取引腳 %3 模擬值"
+Blockly.Msg.CocoRobo_PIN_SET_ANALOG_VALUE = "%1 %2 設定引腳 %3 PWM為 %4"
+Blockly.Msg.CocoRobo_PIN_SET_SERVO_ANGLE = "%1 %2 設定伺服馬達 %3 角度為 %4"
+Blockly.Msg.CocoRobo_PIN_SET_SERVO_PWM_MAXANGLE = "%1 %2 設定伺服馬達 %3 角度為 %4 脈寬從 %5 到 %6 最大角度 %7"
+Blockly.Msg.CocoRobo_PIN_SET_PIN_MODE = "%1 %2 設定引腳 %3 為 %4 模式 %5"
+Blockly.Msg.CocoRobo_PIN_EXTERNAL_LEVEL_DURATION = "%1 %2 %3 外部 %4 電平持續時間(微秒)"
+Blockly.Msg.CocoRobo_PIN_DHT11_VALUE = "%1 %2 DHT11 %3 %4"
+Blockly.Msg.CocoRobo_PIN_DHT22_VALUE = "%1 %2 DHT22 %3 %4"
+Blockly.Msg.CocoRobo_PIN_INIT_I2C_BAUD_RATE = "%1 %2 初始化I2C 波特率 %3"
+Blockly.Msg.CocoRobo_PIN_INIT_I2C_SCL_SDA_BAUD = "%1 %2 初始化I2C SCL %3 SDA %4 波特率 %5"
+Blockly.Msg.CocoRobo_PIN_I2C_ADDRESS_WRITE = "%1 %2 I2C地址 %3 寫入 %4"
+Blockly.Msg.CocoRobo_PIN_I2C_ADDRESS_GET_BYTES_NUM = "%1 %2 I2C地址 %3 讀取bytes數量 %4"
+Blockly.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_INIT = "%1 %2HCSR04 超聲波初始化 名稱 %3 trigger %4 echo %5"
+Blockly.Msg.CocoRobo_PIN_HSCR04_ULTRASONIC_DISTANCE_UNIT = "%1 %2 %3 HCSR04 超聲測距 %4"
+Blockly.Msg.CocoRobo_RADIO_ACTION = "%1 %2 %3 無線廣播"
+Blockly.Msg.CocoRobo_SET_RADIO_CHANNEL = "%1 %2 設定無線廣播 頻道為 %3"
+Blockly.Msg.CocoRobo_SET_RADIO_SEND_MES = "%1 %2 無線廣播 發送 %3"
+Blockly.Msg.CocoRobo_RADIO_GET_MES = "%1 %2 無線廣播 接收消息"
+Blockly.Msg.CocoRobo_RADIO_GET_MES_FOR1 = "當收到無線廣播消息 %1"
+Blockly.Msg.CocoRobo_RADIO_GET_SPECIAL_FOR1 = "當收到特定無線廣播消息 %1"
+Blockly.Msg.CocoRobo_WIFI_CONNECT = "%1 %2 連接 Wi-Fi 名稱 %3 密碼 %4"
+Blockly.Msg.CocoRobo_WIFI_DISCONNECT = "%1 %2 斷開 Wi-Fi 連接"
+Blockly.Msg.CocoRobo_WIFI_CONNECTED = "%1 %2 Wi-Fi 已連接"
+Blockly.Msg.CocoRobo_WIFI_ALL_CONF = "%1 %2 所有 Wi-Fi 配置訊息"
+Blockly.Msg.CocoRobo_WIFI_CONF_MES = "%1 %2 Wi-Fi 配置訊息 %3"
+Blockly.Msg.CocoRobo_WIFI_OPEN_AP_MODE = "%1 %2 開啟 AP模式 名稱 %3 信道 %4"
+Blockly.Msg.CocoRobo_WIFI_CLOSE_AP_MODE = "%1 %2 關閉 AP模式"
+Blockly.Msg.CocoRobo_WIFI_SYNC_NETWORK_TIME = "%1 %2 同步網絡時間 時區 %3 授時服務器 %4"
+Blockly.Msg.CocoRobo_NEOPIXEL_INIT = "%1 %2 燈帶 初始化 %3 腳位 %4 數量 %5"
+Blockly.Msg.CocoRobo_NEOPIXEL_CHANNEL_COLOR = "%1 %2 燈帶 %3 %4 號顏色為 %5"
+Blockly.Msg.CocoRobo_NEOPIXEL_CHANNEL_RGB = "%1 %2 燈帶 %3 %4 號 紅 %5 綠 %6 藍 %7"
+Blockly.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_COLOR = "%1 %2 燈帶 %3 全亮 顏色 %4"
+Blockly.Msg.CocoRobo_NEOPIXEL_FULL_LIGHT_RGB = "%1 %2 燈帶 %3 全亮 紅 %4 綠 %5 藍 %6"
+Blockly.Msg.CocoRobo_NEOPIXEL_CLOSE = "%1 %2 燈帶 %3 熄滅"
+Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_LIGHT_EFFECT = "%1 %2 彩虹燈帶 %3 數量 %4 亮度 %5 偏移 %6"
+Blockly.Msg.CocoRobo_NEOPIXEL_SET_WRITE = "%1 %2 燈帶 %3 設定生效"
+Blockly.Msg.CocoRobo_CONTROL_FOR1 = "為每個項目 %1 在陣列中"
+Blockly.Msg.CocoRobo_OPERATORS_GET_TYPE = "值 %1 的類型"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_TYPE = "值 %1 的類型為 %2"
+Blockly.Msg.CocoRobo_OPERATORS_MOD_INT = "%1 ÷ %2 商的整數部分"
+Blockly.Msg.CocoRobo_OPERATORS_KEEP_TWO_DECIMALS = "%1 保留 %2 位小數"
+Blockly.Msg.CocoRobo_OPERATORS_LIMIT_RANGE = "限制數字 %1 介於低 %2 至 高 %3"
+Blockly.Msg.CocoRobo_OPERATORS_MAPPING_RANGE = "映射 %1 從低 %2 至 %3 到高 %4 至 %5"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_POSITION = "%1 %2 識色循跡感應器 線的位置為 %3"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_SEEING = "%1 %2 識色循跡感應器 檢測到%3 色"
+Blockly.Msg.CocoRobo_G0_COLOR_LINE_FOLLOWER_COLOR = "%1 %2 識色循跡感應器 顏色值"
+Blockly.Msg.ARDUINO_GROVE_SERIAL_3ADA15 = "%1 %2 三軸數字加速度(1.5g) %3 軸"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR_OPT1 = "亮燈"
+Blockly.Msg.ARDUINO_SEEED_LED_BAR_OPT2 = "熄滅"
+Blockly.Msg.ARDUINO_SEEED_SPEECH_RECOGNIZER_GETVALUE = "%1 %2  語音識別感應器 管腳 %3 獲取值"
+Blockly.Msg.ARDUINO_SERIAL_STR_TONUMBER = "串口 字串轉數值 %1"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT1 = "紅"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT2 = "黃"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT3 = "綠"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT4 = "青"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT5 = "藍"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT6 = "紫"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT7 = "黑"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT8 = "白"
+Blockly.Msg.ARDUINO_VISION_SENSOR6_OPT9 = "其他"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT1 = "前進"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT2 = "左轉"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT3 = "右轉"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT4 = "掉頭"
+Blockly.Msg.ARDUINO_VISION_SENSOR_OPT5 = "P"
+Blockly.Msg.ARDUINO_MARK_ROBOT_RUN = "%1 %2 M.A.R.K 小車 %3 %4"
+Blockly.Msg.ARDUINO_MARK_ROBOT_MOTOR_RUN = "%1 %2 M.A.R.K 設定馬達 %3 轉速為 %4"
+Blockly.Msg.ARDUINO_MARK_ROBOT_SERVO_RUN = "%1 %2 M.A.R.K 伺服馬達 %3 轉到 %4"
+Blockly.Msg.ARDUINO_NETWORK_SETWIFI = "%1 %2 開始連接無線網絡 %3 密碼 %4"
+Blockly.Msg.ARDUINO_NETWORK_STATE = "%1 %2 網絡已連接?"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_REC = "%1 %2 識別 %3 語音 %4 秒鐘"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_OPT01 = "漢語"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_OPT02 = "英語"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_RECTEXT = "%1 %2 語音識別出的字串"
+Blockly.Msg.ARDUINO_SPEECH_RECOGNITION_TTS = "%1 %2 說 %3"
+Blockly.Msg.ARDUINO_AUDIO_RECORD = "%1 %2 錄音 %3 %4"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT01 = "文件"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT02 = "Micro SD"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT03 = "USB"
+Blockly.Msg.ARDUINO_AUDIO_STORAGE_OPT04 = "暫存"
+Blockly.Msg.ARDUINO_AUDIO_STOP_RECORD = "%1 %2 錄音停止"
+Blockly.Msg.ARDUINO_AUDIO_PLAY = "%1 %2 播放音頻 %3 %4"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_SOMEONE = "%1 %2 播放第 %3 首曲目"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_PREORNEXT = "%1 %2 播放 %3 曲目"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_OPT1 = "上壹首"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_OPT2 = "下壹首"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_ATMODE = "%1 %2 %3 播放曲目"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT1 = "循環"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT2 = "暫停"
+Blockly.Msg.ARDUINO_AUDIO_PLAY_MODE_OPT3 = "停止"
+Blockly.Msg.ARDUINO_AUDIO_SETVOL = "%1 %2 設定揚聲器音量 %3"
+Blockly.Msg.ELFBOT_MAINBOARD_START = "%1 %2 當精靈啟動"
+Blockly.Msg.ELFBOT_WHEN_BUTTON_S_PRESSED = "%1 %2 當按下按鈕 S "
+Blockly.Msg.ELFBOT_WHEN_LIGHTINTENSITY_LESSTHAN = "%1 %2 當環境光強度 %3 %4"
+Blockly.Msg.ELFBOT_WHENGREATERTHAN_TIMER = "%1 %2 當計時器 > %3"
+Blockly.Msg.ELFBOT_WHENGREATERTHAN_LOUDNESS = "%1 %2 當響度 %3 %4"
+Blockly.Msg.ELFBOT_BUTTONS_ISPRESSED = "%1 %2 精靈 按鈕S被按下?"
+Blockly.Msg.ELFBOT_ULTRASONIC_DISTANCE_FROMOBJ = "%1 %2 精靈 前方障礙物距離(mm)"
+Blockly.Msg.ELFBOT_ULTRASONIC_ISDETECTED_OBJECT = "%1 %2 精靈 檢測到前方物體?"
+Blockly.Msg.ELFBOT_ULTRASONIC_LED_SHOW_COLOR = "%1 %2 精靈 設定超聲波 LED顏色為 %3"
+Blockly.Msg.ELFBOT_ULTRASONIC_LED_CRUSHOUT = "%1 %2 精靈 熄滅超聲波 LED"
+Blockly.Msg.ELFBOT_ULTRASONIC_WHENDETECTEDOBJECT = "%1 %2 當檢測到前方物體"
+Blockly.Msg.ELFBOT_LEDMATRIX_PLOT = "%1 %2 精靈 點亮 x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_UNPLOT = "%1 %2 精靈 熄滅 x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_PLOT_OR_UNPLOT = "%1 %2 精靈 切換點亮或熄滅 x: %3 y: %4"
+Blockly.Msg.ELFBOT_LEDMATRIX_ISPLOT = "%1 %2 精靈 x: %3 y: %4 是否被點亮?"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT = "%1 %2 精靈 顯示 %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_TEXT_UNTILDONE = "%1 %2 精靈 顯示 %3 直到結束"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON = "%1 %2 精靈 顯示表情 %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_EMOTICON_FORDURATION = "%1 %2 精靈 顯示表情 %3 持續 %4 秒"
+Blockly.Msg.ELFBOT_LEDMATRIX_SCREEN_CRUSHOUT = "%1 %2 精靈 熄滅螢幕"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION1 = "smile"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION2 = "wink"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION3 = "happy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION4 = "cute"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION5 = "lovely"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION6 = "expressionless"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION7 = "playful"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION8 = "like1"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION9 = "like2"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION10 = "sniker1"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION11 = "sniker2"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION12 = "bored"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION13 = "serious"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION14 = "sweat"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION15 = "frown"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION16 = "rage"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION17 = "pitiful"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION18 = "wail"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION19 = "cry"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION20 = "daze"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION21 = "caim"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION22 = "angry"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION23 = "thinking"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION24 = "dizziness"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION25 = "tired"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION26 = "sleepy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION27 = "dream"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION28 = "shocked"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION29 = "strabismus"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION30 = "cool"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION31 = "query"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION32 = "pain"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION33 = "uncomfortable"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION34 = "right"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION35 = "left"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION36 = "forward"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION37 = "backward"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION38 = "hello"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION39 = "bye"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION40 = "oK"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION41 = "good"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION42 = "yes"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION43 = "no"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION44 = "low_energy"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION45 = "meow"
+Blockly.Msg.ELFBOT_LEDMATRIX_EMOTICON_VALUE_OPTION46 = "panda"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE = "%1 %2 精靈 顯示圖案 %3"
+Blockly.Msg.ELFBOT_LEDMATRIX_SHOW_IMAGE_DURATION = "%1 %2 精靈 顯示圖案 %3 持續 %4 秒"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_EFFECTS_COLOR = "%1 %2 精靈 RGB LED壹直 %3 %4"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION0 = "亮"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION1 = "閃爍"
+Blockly.Msg.ELFBOT_RGBLED_EFFECTS_VALUE_OPTION2 = "呼吸"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR = "%1 %2 精靈 RGB LED 亮起 %3 燈,顏色為 %4"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION0 = "全部"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION1 = "左"
+Blockly.Msg.ELFBOT_RGBLED_POSITION_VALUE_OPTION2 = "右"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_POSITION_COLOR_DURATION = "%1 %2 精靈 RGB LED 亮起 %3 燈,顏色為 %4 ,持續 %5秒"
+Blockly.Msg.ELFBOT_RGBLED_SHOW_COLOR = "%1 %2 精靈 設定RGB LED顏色為 %3"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION0 = "紅色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION1 = "綠色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION2 = "藍色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION3 = "黃色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION4 = "青色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION5 = "紫色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION6 = "黑色"
+Blockly.Msg.ELFBOT_RGBLED_COLOR_VALUE_OPTION7 = "白色"
+Blockly.Msg.ELFBOT_RGBLED_CRUSHOUT = "%1 %2 精靈 熄滅RGB LED"
+Blockly.Msg.ELFBOT_INFRARED_WHENOVERHEAD = "%1 %2 當檢測到前方懸空"
+Blockly.Msg.ELFBOT_INFRARED_LIGHTINTENSITY_VALUE = "%1 %2 精靈 紅外反射光強度"
+Blockly.Msg.ELFBOT_INFRARED_DETECTED_ISHEAD = "%1 %2 精靈 檢測到前方懸空?"
+Blockly.Msg.ELFBOT_LINEPATROL_WHENDETECTEDCOLORD = "%1 %2 當檢測到的顏色是 %3"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION0 = "紅色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION1 = "綠色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION2 = "藍色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION3 = "黃色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION4 = "青色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION5 = "紫色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION6 = "黑色"
+Blockly.Msg.ELFBOT_LINEPATROL_COLOR_VALUE_OPTION7 = "白色"
+Blockly.Msg.ELFBOT_LINEPATROL_GREYSCALE = "%1 %2 精靈 灰度值"
+Blockly.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR = "%1 %2 精靈 檢測到顏色是 %3 ?"
+Blockly.Msg.ELFBOT_LINEPATROL_DETECTED_COLOR_VALUE = "%1 %2 精靈 檢測到的 %3 色值"
+Blockly.Msg.ELFBOT_LINEPATROL_LIGHTINTENSITY_VALUE = "%1 %2 精靈 反射光強度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKLEFT = "%1 %2 精靈 頭部向左轉到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKRIGHT = "%1 %2 精靈 頭部向右轉到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKUP = "%1 %2 精靈 頭部向上轉到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_HEAD_LOOKDOWN = "%1 %2 精靈 頭部向下轉到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_EAR_TURNFORWARD = "%1 %2 精靈 耳朵向前轉到 %3 度"
+Blockly.Msg.ELFBOT_SERVO_EAR_TURNBACKWARD = "%1 %2 精靈 耳朵向後轉到 %3 度"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_DIRECTION_POWER = "%1 %2 精靈 %3 以動力 %4 %"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION0 = "前進"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION1 = "後退"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION2 = "左轉"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_DIRECTION_VALUE_OPTION3 = "右轉"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_POWER_DURATION = "%1 %2 精靈 前進以動力 %3 % 持續 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_POWER_DURATION = "%1 %2 精靈 後退以動力 %3 % 持續 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNLEFT_POWER_DURATION = "%1 %2 精靈 左轉以動力 %3 % 持續 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNRIGHT_POWER_DURATION = "%1 %2 精靈 右轉以動力 %3 % 持續 %4 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_POWER = "%1 %2 精靈 移動左輪以動力 %3 % ,右輪以動力 %4 %"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNFORWORD_DURATION = "%1 %2 精靈 直線前進持續 %3 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUNBACKWORD_DURATION = "%1 %2 精靈 直線後退持續 %3 秒"
+Blockly.Msg.ELFBOT_VEHICLEWHEEL_RUN_STOP = "%1 %2 精靈 停止運動"
+Blockly.Msg.ELFBOT_LIGHT_INTENSITY_VALUE = "%1 %2 精靈 環境光強度"
+Blockly.Msg.ELFBOT_SOUND_LOUDNESS_VALUE = "%1 %2 精靈 響度"
+Blockly.Msg.ELFBOT_SOUND_PLAY = "%1 %2 精靈 播放聲音 %3"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION0 = "hello"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION1 = "miao"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION2 = "bye"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION3 = "hum"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION4 = "laugh"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION5 = "wrong"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION6 = "right"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION7 = "sad"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION8 = "vehicles"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION9 = "yeah"
+Blockly.Msg.ELFBOT_SOUND_VALUE_OPTION10 = "powerdown"
+Blockly.Msg.ELFBOT_SOUND_PLAY_UNTILDONE = "%1 %2 精靈 播放聲音 %3 直到結束"
+Blockly.Msg.ELFBOT_SOUND_STOP_PLAY = "%1 %2 精靈 停止播放聲音"
+Blockly.Msg.ELFBOT_SOUND_REST_BEATS = "%1 %2 精靈 休止 %3 拍"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION0 = "1"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION1 = "1/2"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION2 = "1/4"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION3 = "1/8"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION4 = "1/16"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION5 = "2"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION6 = "4"
+Blockly.Msg.ELFBOT_SOUND_BEAT_VALUE_OPTION7 = "8"
+Blockly.Msg.ELFBOT_SOUND_PLAY_FREQUENCYHZ = "%1 %2 精靈 播放聲音以頻率 %3 赫茲,持續 %4 秒"
+Blockly.Msg.ELFBOT_SOUND_CHANGE_VOLUME = "%1 %2 精靈 將音量增加 %3"
+Blockly.Msg.ELFBOT_SOUND_SET_VOLUME = "%1 %2 精靈 將音量設定為 %3"
+Blockly.Msg.ELFBOT_SOUND_VOLUME = "%1 %2 精靈 音量"
+Blockly.Msg.ELFBOT_SOUND_NOTE_BEATS = "%1 %2  精靈 播放音符 %3 以 %4 拍"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT = "%1 %2 顏色識別感應器 檢測到 %3 色"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION = "%1 %2 顏色識別感應器 %3 的位置為 %4"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT0 = "紅"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT1 = "綠"
+Blockly.Msg.ELFBOT_LINECOLOR_OPT2 = "藍"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_BLACK = "黑線"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_WRITE = "白線"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT0 = "中"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT1 = "右"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT2 = "最右"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT3 = "左"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT4 = "最左"
+Blockly.Msg.ELFBOT_LINECOLOR_DETECT_POSITION_OPT5 = "丟失"
+Blockly.Msg.MICROBIT_WHEN_START = "%1 %2 當 micro:bit 啟動"
+Blockly.Msg.MICROBIT_WHEN_BUTTONPRESSED = "%1 %2 當 %3 被按下"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION0 = "A"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION1 = "B"
+Blockly.Msg.MICROBIT_BUTTON_VALUE_OPTION2 = "A+B"
+Blockly.Msg.MICROBIT_WHEN_PINSTOUCHED = "%1 %2 當引腳 %3 被接觸"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION0 = "0"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION1 = "1"
+Blockly.Msg.MICROBIT_PINS_VALUE_OPTION2 = "2"
+Blockly.Msg.MICROBIT_WHEN_GESTURESTRIKE = "%1 %2 當姿態 %3"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION0 = "搖晃"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION1 = "向上傾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION2 = "向下傾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION3 = "向左傾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION4 = "向右傾斜"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION5 = "正面朝上"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION6 = "正面朝下"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION7 = "自由落體"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION8 = "3g"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION9 = "6g"
+Blockly.Msg.MICROBIT_GESTURE_VALUE_OPTION10 = "5g"
+Blockly.Msg.MICROBIT_COMMUCATION_OPEN = "%1 %2 打開無線通訊"
+Blockly.Msg.MICROBIT_COMMUCATION_CLOSED = "%1 %2 關閉無線通訊"
+Blockly.Msg.MICROBIT_COMMUCATION_RESET = "%1 %2 復位無線通訊"
+Blockly.Msg.MICROBIT_COMMUCATION_RECEIVE = "%1 %2 接受無線通訊"
+Blockly.Msg.MICROBIT_COMMUCATION_SEND = "%1 %2 發送無線消息 %3"
+Blockly.Msg.MICROBIT_COMMUCATION_SETCHANNEL = "%1 %2 設定無線通訊頻道 %3"
+Blockly.Msg.MICROBIT_PIN_CONNECTED = "%1 %2 腳位 %3 被接觸"
+Blockly.Msg.MICROBIT_PIN_ANALOGQUANTITY = "%1 %2 腳位 %3 模擬量"
+Blockly.Msg.MICROBIT_PIN_SET_ANALOGQUANTITY = "%1 %2 設定引腳 %3 模擬量為 %4"
+Blockly.Msg.MICROBIT_PIN_NUMBER_INPUT = "%1 %2 腳位 %3 有數字輸入"
+Blockly.Msg.MICROBIT_PIN_ANALOG_MAP_TO = "%1 %2 映射 %3 模擬值到 %4 至 %5"
+Blockly.Msg.MICROBIT_PIN_ANALOG_READ = "%1 %2 模擬讀取 腳位 %3"
+Blockly.Msg.MICROBIT_PIN_ANALOG_WRITE = "%1 %2 向引腳 %3 模擬寫入 %4"
+Blockly.Msg.MICROBIT_PIN_ANALOG_SET_PERIOD = "%1 %2 設定引腳 %3 模擬期間為 %4 (us)"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_READ = "%1 %2 數字讀取 腳位 %3"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS = "%1 %2 數字引腳 %3 為 %4"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS_OPT1 = "高"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_IS_OPT2 = "低"
+Blockly.Msg.MICROBIT_PIN_DIGITAL_SET_TO = "%1 %2 設定數字引腳 %3 為 %4"
+Blockly.Msg.MICROBIT_PIN_I2C_READ = "%1 %2 i2c 讀取 i2c地址 %3 ,格式為 %4 重複 %5"
+Blockly.Msg.MICROBIT_PIN_I2C_WRITE = "%1 %2 向 i2c地址 %3 寫入值 %4 ,格式為 %5 重複 %6"
+Blockly.Msg.MICROBIT_PIN_I2C_READ_OPT1 = "否"
+Blockly.Msg.MICROBIT_PIN_I2C_READ_OPT2 = "是"
+Blockly.Msg.MICROBIT_SENSOR_BUTTON_PRESSED = "%1 %2 按鍵 %3 被按下?"
+Blockly.Msg.MICROBIT_SENSOR_GESTURE_STRIKE = "%1 %2 姿態是 %3?"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION = "%1 %2 %3 加速度"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION0 = "x軸"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION1 = "y軸"
+Blockly.Msg.MICROBIT_SENSOR_ACCELERATION_VALUE_OPTION2 = "z軸"
+Blockly.Msg.MICROBIT_SENSOR_COMPASSANGLE = "%1 %2 指南針角度"
+Blockly.Msg.MICROBIT_SENSOR_COMPASS_MAGNETICDENSITY = "%1 %2 指南針磁場強度"
+Blockly.Msg.MICROBIT_SENSOR_CALIBRATE_COMPASS = "%1 %2 校正指南針"
+Blockly.Msg.MICROBIT_SENSOR_TEMPERATURE = "%1 %2 溫度"
+Blockly.Msg.MICROBIT_SENSOR_RUNNINGTIME = "%1 %2 運行時間"
+Blockly.Msg.MICROBIT_SHOW_IMAGE = "%1 %2 顯示圖案 %3"
+Blockly.Msg.MICROBIT_SHOW_IMAGEFOR = "%1 %2 顯示圖案 %3 持續 %4 秒"
+Blockly.Msg.MICROBIT_SHOW_MIRRORING_IMAGE = "%1 %2 鏡像顯示圖案 %3"
+Blockly.Msg.MICROBIT_SHOW_SETIMAGE = "%1 %2 設定圖案 %3 %4 移動 %5"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION0 = "向左"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION1 = "向右"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION2 = "向上"
+Blockly.Msg.MICROBIT_SHOW_POSITION_VALUE_OPTION3 = "向下"
+Blockly.Msg.MICROBIT_SHOW_TEXT = "%1 %2 顯示 %3"
+Blockly.Msg.MICROBIT_SHOW_TEXTUNTIL = "%1 %2 顯示 %3 直到滾動結束"
+Blockly.Msg.MICROBIT_SHOW_CLOSE = "%1 %2 熄滅螢幕"
+Blockly.Msg.MICROBIT_SHOW_LIGHT = "%1 %2 %3 在座標 x: %4 y: %5"
+Blockly.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION0 = "點亮"
+Blockly.Msg.MICROBIT_SHOW_LIGHT_ACTION_VALUE_OPTION1 = "熄滅"
+Blockly.Msg.MICROBIT_SHOW_LIGHTON = "%1 %2 設定x: %3 y: %4 的亮度為 %5"
+Blockly.Msg.MICROBIT_SHOW_BRIGHTNESS = "%1 %2 獲得 x: %3 y: %4的亮度"
+Blockly.Msg.MICROBIT_MUSIC_PLAY = "%1 %2 腳位 %3 播放聲音 %4"
+Blockly.Msg.MICROBIT_MUSIC_PLAY_UNTILDONE = "%1 %2 腳位 %3 播放聲音 %4 直到播放結束"
+Blockly.Msg.MICROBIT_MUSIC_PLAY_NOTE = "%1 %2 腳位 %3 播放音符 %4 持續 %5"
+Blockly.Msg.MICROBIT_MUSIC_CHANGETEMPO = "%1 %2 調整聲音速度(bpm)%3"
+Blockly.Msg.MICROBIT_MUSIC_SETTEMPO = "%1 %2 將聲音速度(bpm)設定為 %3"
+Blockly.Msg.MICROBIT_MUSIC_TEMPO = "%1 %2 聲音速度(bpm)"
+Blockly.Msg.MICROBIT_BITPLAYER_KEY_IS_PRESSED = "%1 %2 BitPlayer: 當按鍵 %3 正在被按下"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK = "%1 %2 BitPlayer: 搖桿被推向 %3"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION = "%1 %2 BitPlayer: 震動 %3"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT1 = "開"
+Blockly.Msg.MICROBIT_BITPLAYER_VIBRATION_OPT2 = "關"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT1 = "左上"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT2 = "上"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT3 = "右上"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT4 = "左"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT5 = "中"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT6 = "右"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT7 = "左下"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT8 = "下"
+Blockly.Msg.MICROBIT_BITPLAYER_JOYSTICK_OPT9 = "右下"
+Blockly.Msg.MICROBIT_BITWEAR_VIBRATION = "%1 %2 BitWear: 震動 %3"
+Blockly.Msg.MICROBIT_BITWEAR_SET_LED_COLOR = "%1 %2 BitWear: 設定LED燈顏色 %3"
+Blockly.Msg.MICROBIT_BITMAKER_SET_LED_COLOR = "%1 %2 BitMaker: 設定LED燈 %3 顏色 %4"
+Blockly.Msg.MICROBIT_BITCAR_MOVE = "%1 %2 BitCar: 左輪動力 %3 %,右輪動力 %4 %"
+Blockly.Msg.MICROBIT_BITCAR_STOP = "%1 %2 BitCar: 停止"
+Blockly.Msg.MICROBIT_BITCAR_STANDUP_STILL = "%1 %2 BitCar: 以速度 %3 %站立,沖刺 %4 (ms)"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR = "%1 %2 BitCar: 黑線在 %3 感應器下方"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT1 = "左側"
+Blockly.Msg.MICROBIT_BITCAR_LINE_UNDER_SENSOR_OPT2 = "右側"
+Blockly.Msg.MICROBIT_BITCAR_LINE_FOLLOW_AT_SPEED = "%1 %2 BitCar: 以 %3 % 速度巡線"
+Blockly.Msg.MICROBIT_GROVE_ONE_MINI_FAN_SET_SPEED = "%1 %2 迷妳風扇 %3 :設定轉速為 %4 %"
+Blockly.Msg.MICROBIT_GROVE_ONE_SERVO_SET_ANGLE = "%1 %2 伺服馬達 %3 :設定角度為 %4 °"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE = "%1 %2 超聲波測距感應器 %3 :距離 %4"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT1 = "厘米"
+Blockly.Msg.MICROBIT_GROVE_ONE_ULTRASONIC_GET_DISTANCE_OPT2 = "英尺"
+Blockly.Msg.CATEGORY_COMMON = "常用"
+Blockly.Msg.CATEGORY_SYSTEM = "系統資源"
+Blockly.Msg.CATEGORY_SHOW = "顯示"
+Blockly.Msg.CATEGORY_MUSIC = "音樂"
+Blockly.Msg.CATEGORY_AUDIO = "音頻"
+Blockly.Msg.CATEGORY_PIN = "腳位"
+Blockly.Msg.CATEGORY_RADIO = "無線廣播"
+Blockly.Msg.CATEGORY_DISPLAY = "顯示"
+Blockly.Msg.CATEGORY_LIGHTING = "燈光"
+Blockly.Msg.CATEGORY_ACTION = "動作"
+Blockly.Msg.CATEGORY_SENSOR = "感知"
+Blockly.Msg.CATEGORY_WIRELESS = "無線通訊"
+Blockly.Msg.CATEGORY_ADDONS = "擴展板"
+Blockly.Msg.CATEGORY_GROVE_ONE = "Grove One"
+Blockly.Msg.CATEGORY_DISPLAY1 = "顯示"
+Blockly.Msg.CATEGORY_MACHINE_VISION = "圖像識別"
+Blockly.Msg.CATEGORY_CNN_MODELS = "模型預測"
+Blockly.Msg.CATEGORY_MAXIDUINO_SYSTEM = "系統"
+Blockly.Msg.CATEGORY_START = "初始化"
+Blockly.Msg.CATEGORY_GROVE_INPUT = "Grove 輸入"
+Blockly.Msg.CATEGORY_GROVE_OUTPUT = "Grove 輸出"
+Blockly.Msg.CATEGORY_MAIXDUINO_GROVE = "Grove"
+Blockly.Msg.SNAPSHOOT = "快照"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY = "等待 %1 %2"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY_UNIT_MS = "毫秒"
+Blockly.Msg.MAIXDUINO_ENENT_DELAY_UNIT_US = "微秒"
+Blockly.Msg.MAIXDUINO_ENENT_RUNTIME = "運行時間 %1"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION = "設定螢幕方向為 %1"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION_NORMAL = "正常"
+Blockly.Msg.MAIXDUINO_DISPLAY_ORIENTATION_ROTATE = "翻轉"
+Blockly.Msg.MAIXDUINO_DISPLAY_STRING_AT_POSITION = "顯示 %1 於 X%2 Y%3"
+Blockly.Msg.MAIXDUINO_DISPLAY_DRAW_RECTANGLE_WH = "繪制長方形: 長%1 寬%2 中心座標 X%3 Y%4"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_AT_SIZE_COLOR = "檢測到 %1 圓形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_BALL_RGB = "檢測到的圓RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_AT_SIZE_COLOR = "檢測到 %1 長方形"
+Blockly.Msg.MAIXDUINO_CAMERA_DETECTION_RECTANGLE_RGB = "檢測到的長方形RGB值"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_SETCOLOR = "設定線識別顏色為 %1"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_SETWEIGHT = "設定線識別區域權重: A區 %1% B區 %2% C區 %3%"
+Blockly.Msg.MAIXDUINO_CAMERA_COLORLINE_TURNANGLE = "轉彎角度"
+Blockly.Msg.MAIXDUINO_SEEED_LINE_FINDER = "%1 %2 腳位 %3 巡線感應器檢測到 %4"
+Blockly.Msg.MAIXDUINO_FIGURE_OUTPUT = "向 數字引腳 %1 寫入值 %2"
+Blockly.Msg.MAIXDUINO_FIGURE_INPUT = "數字讀取 腳位 %1"
+Blockly.Msg.MAIXDUINO_ANALOG_INPUT = "模擬輸入 管腳 %1"
+Blockly.Msg.MAIXDUINO_ANALOG_OUTPUT = "向 模擬引腳 %1 寫入值 %2"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_X = "X座標"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_W = "長"
+Blockly.Msg.MAIXDUINO_CAMERA_COORDP_H = "寬"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT1 = "前進"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT2 = "後退"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT3 = "左轉"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT4 = "右轉"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT6 = "慢速"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT7 = "中速"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_OPT8 = "全速"
+Blockly.Msg.MAIXDUINO_ROBOT_MARK_STOP = "M.A.R.K 小車停止運動"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT1 = "左輪"
+Blockly.Msg.MAIXDUINO_ROBOT_MOTOR_RUN_0PT2 = "右輪"
+Blockly.Msg.MAIXDUINO_GROVE_BUTTON_ISPRESSED = "%1 %2 腳位 %3 按鍵開關正在被按下?"
+Blockly.Msg.MAIXDUINO_GROVE_ULT_DISTANCE = "%1 %2 腳位 %3 超聲波測距感應器 距離(cm)"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY = "%1 %2 腳位 %3 RGB 燈條 %4 燈亮 %5"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_DISPALY1 = "%1 %2 腳位 %3 RGB 燈條 %4 R %5 G %6 B %7"
+Blockly.Msg.MAIXDUINO_GROVE_RGBLED_STRIP_CLOSED = "%1 %2 腳位 %3 RGB 燈條 熄滅"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_SETVOL = "M.A.R.K. 揚聲器 設定音量為 %1 %"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_PLAYNOTE = "M.A.R.K. 揚聲器 播放音調 %1 %2 拍"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_PAUSE = "M.A.R.K. 揚聲器 停頓 %1 拍"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT0 = "1"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT1 = "1/2"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT2 = "1/4"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT3 = "1/8"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT4 = "1/16"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT5 = "2"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT6 = "4"
+Blockly.Msg.MAIXDUINO_ROBOT_SPEAKER_BEAT_OPT7 = "8"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_SHOW = "M.A.R.K %1 車頭燈亮 %2"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_SHOW = "M.A.R.K. 尾燈 %1 亮 %2 %3 %4 "
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_CRUSHOUT = "M.A.R.K. %1 車頭燈熄滅"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT01 = "左"
+Blockly.Msg.MAIXDUINO_ROBOT_HEAD_LIGHTS_OPT02 = "右"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT01 = "頂部"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT02 = "中間"
+Blockly.Msg.MAIXDUINO_ROBOT_TAIL_LIGHTS_OPT03 = "尾部"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT01 = "全部"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT02 = "前"
+Blockly.Msg.MAIXDUINO_ROBOT_LIGHTS_OPT03 = "尾"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT1 = "向前傾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT2 = "向後傾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT3 = "向左傾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_SLOPE_OPT4 = "向右傾斜"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT1 = "溫度"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT2 = "濕度"
+Blockly.Msg.CocoRobo_SYSRESOURES_BME280_OPT3 = "氣壓"
+Blockly.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT1 = "刷新"
+Blockly.Msg.CocoRobo_SYSRESOURES_OPERATE_OPT2 = "刪除"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT0 = "清空"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT1 = "年"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT2 = "月"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT3 = "日"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT4 = "時"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT5 = "分"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT6 = "秒"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT7 = "星期數"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT8 = "天數"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT9 = "毫秒"
+Blockly.Msg.CocoRobo_SYSRESOURES_TIME_OPT10 = "微秒"
+Blockly.Msg.CocoRobo_PIN_OPT = "default"
+Blockly.Msg.CocoRobo_PIN_OPT0 = "P0"
+Blockly.Msg.CocoRobo_PIN_OPT1 = "P1"
+Blockly.Msg.CocoRobo_PIN_OPT2 = "P2"
+Blockly.Msg.CocoRobo_PIN_OPT3 = "P3(EXT)"
+Blockly.Msg.CocoRobo_PIN_OPT4 = "P4(light)"
+Blockly.Msg.CocoRobo_PIN_OPT6 = "P6(buzzer)"
+Blockly.Msg.CocoRobo_PIN_OPT7 = "P7(RGB)"
+Blockly.Msg.CocoRobo_PIN_OPT8 = "P8"
+Blockly.Msg.CocoRobo_PIN_OPT9 = "P9"
+Blockly.Msg.CocoRobo_PIN_OPT10 = "P10(sound)"
+Blockly.Msg.CocoRobo_PIN_OPT13 = "P13"
+Blockly.Msg.CocoRobo_PIN_OPT14 = "P14"
+Blockly.Msg.CocoRobo_PIN_OPT15 = "P15"
+Blockly.Msg.CocoRobo_PIN_OPT16 = "P16"
+Blockly.Msg.CocoRobo_PIN_OPT19 = "P19(LCD)"
+Blockly.Msg.CocoRobo_PIN_OPT20 = "P20(LCD)"
+Blockly.Msg.CocoRobo_PIN_VOLTAGE_OPT1 = "高"
+Blockly.Msg.CocoRobo_PIN_VOLTAGE_OPT2 = "低"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT1 = "無上下拉"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT2 = "上拉"
+Blockly.Msg.CocoRobo_PIN_MODE_OPT3 = "下拉"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT1 = "輸入"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT2 = "推挽輸出"
+Blockly.Msg.CocoRobo_PIN_STATYS_OPT3 = "開漏輸出"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT1 = "清空"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT2 = "全亮"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT3 = "黑底"
+Blockly.Msg.CocoRobo_LOOKS_OLCD_OPT4 = "白底"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT1 = "按下"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT2 = "松開"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT3 = "觸摸"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT4 = "釋放"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT5 = "重複執行"
+Blockly.Msg.CocoRobo_EVENT_ACTION_OPT6 = "延時執行"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT1 = "打開"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT2 = "關閉"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT3 = "暫停"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT4 = "繼續播放"
+Blockly.Msg.CocoRobo_MUSIC_ACTION_OPT5 = "停止"
+Blockly.Msg.CocoRobo_EVENT_VOLTAGE_OPT1 = "↗從低到高"
+Blockly.Msg.CocoRobo_EVENT_VOLTAGE_OPT2 = "↘從高到低"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT1 = "普通"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT2 = "反轉"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT3 = "透明"
+Blockly.Msg.CocoRobo_LOOKS_MODE_OPT4 = "XOR"
+Blockly.Msg.CocoRobo_LOOKS_LIGHT_OPT1 = "亮"
+Blockly.Msg.CocoRobo_LOOKS_LIGHT_OPT2 = "暗"
+Blockly.Msg.CocoRobo_LOOKS_DIRECTION_OPT1 = "垂直"
+Blockly.Msg.CocoRobo_LOOKS_DIRECTION_OPT2 = "水平"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT1 = "是偶數"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT2 = "是奇數"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT3 = "是整數"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT4 = "為正"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT5 = "為負"
+Blockly.Msg.CocoRobo_OPERATORS_JUDGE_OPT6 = "可被整除"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_OPT1 = "繪制"
+Blockly.Msg.CocoRobo_LOOKS_DRAW_OPT2 = "擦除"
+Blockly.Msg.CocoRobo_LOOKS_CIRCLE_OPT1 = "空心"
+Blockly.Msg.CocoRobo_LOOKS_CIRCLE_OPT2 = "實心"
+Blockly.Msg.CocoRobo_LOOKS_FONT_OPT1 = "不換欄"
+Blockly.Msg.CocoRobo_LOOKS_FONT_OPT2 = "自動換欄"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT1 = "心型"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT2 = "心型(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT3 = "高興"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT4 = "笑臉"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT5 = "傷心"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT6 = "困惑"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT7 = "生氣"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT8 = "睡著"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT9 = "驚訝"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT10 = "愚蠢"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT11 = "極妙"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT12 = "無聊"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT13 = "石頭"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT14 = "石頭(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT15 = "布"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT16 = "布(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT17 = "剪刀"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT18 = "剪刀(小)"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT19 = "Expressions/Big smile.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT20 = "Expressions/Heart large.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT21 = "Expressions/Heart small.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT22 = "Expressions/Mouth 1 open.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT23 = "Expressions/Mouth 1 shut.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT24 = "Expressions/Mouth 2 open.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT25 = "Expressions/Mouth 2 shut.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT26 = "Expressions/Sad.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT27 = "Expressions/Sick.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT28 = "Expressions/Smile.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT29 = "Expressions/Swearing.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT30 = "Expressions/Talking.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT31 = "Expressions/Wink.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT32 = "Expressions/ZZZ.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT33 = "Eyes/Angry.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT34 = "Eyes/Awake.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT35 = "Eyes/Black eye.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT36 = "Eyes/Bottom left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT37 = "Eyes/Bottom right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT38 = "Eyes/Crazy 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT39 = "Eyes/Crazy 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT40 = "Eyes/Disappointed.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT41 = "Eyes/Dizzy.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT42 = "Eyes/Down.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT43 = "Eyes/Evil.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT44 = "Eyes/Hurt.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT45 = "Eyes/Knocked out.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT46 = "Eyes/Love.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT47 = "Eyes/Middle left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT48 = "Eyes/Middle right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT49 = "Eyes/Neutral.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT50 = "Eyes/Nuclear.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT51 = "Eyes/Pinch left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT52 = "Eyes/Pinch middle.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT53 = "Eyes/Pinch right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT54 = "Eyes/Tear.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT55 = "Eyes/Tired left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT56 = "Eyes/Tired middle.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT57 = "Eyes/Tired right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT58 = "Eyes/Toxic.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT59 = "Eyes/Up.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT60 = "Eyes/Winking.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT61 = "Information/Accept.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT62 = "Information/Backward.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT63 = "Information/Decline.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT64 = "Information/Forward.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT65 = "Information/Left.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT66 = "Information/No go.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT67 = "Information/Question mark.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT68 = "Information/Right.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT69 = "Information/Stop 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT70 = "Information/Stop 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT71 = "Information/Thumbs down.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT72 = "Information/Thumbs up.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT73 = "Information/Warning.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT74 = "Objects/Bomb.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT75 = "Objects/Boom.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT76 = "Objects/Fire.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT77 = "Objects/Flowers.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT78 = "Objects/Forest.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT79 = "Objects/Light off.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT80 = "Objects/Light on.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT81 = "Objects/Lightning.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT82 = "Objects/Night.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT83 = "Objects/Pirate.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT84 = "Objects/Snow.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT85 = "Objects/Target.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT86 = "Progress/Bar 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT87 = "Progress/Bar 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT88 = "Progress/Bar 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT89 = "Progress/Bar 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT90 = "Progress/Bar 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT91 = "Progress/Dial 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT92 = "Progress/Dial 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT93 = "Progress/Dial 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT94 = "Progress/Dial 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT95 = "Progress/Dial 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT96 = "Progress/Dots 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT97 = "Progress/Dots 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT98 = "Progress/Dots 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT99 = "Progress/Dots 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT100 = "Progress/Hourglass 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT101 = "Progress/Hourglass 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT102 = "Progress/Hourglass 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT103 = "Progress/Timer 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT104 = "Progress/Timer 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT105 = "Progress/Timer 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT106 = "Progress/Timer 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT107 = "Progress/Timer 4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT108 = "Progress/Water level 0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT109 = "Progress/Water level 1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT110 = "Progress/Water level 2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT111 = "Progress/Water level 3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT112 = "System/Accept_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT113 = "System/Accept_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT114 = "System/Alert.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT115 = "System/Box.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT116 = "System/Busy_0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT117 = "System/Busy_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT118 = "System/Decline_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT119 = "System/Decline_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT120 = "System/Dot_empty.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT121 = "System/Dot_full.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT122 = "System/Play.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT123 = "System/Slider_0.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT124 = "System/Slider_1.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT125 = "System/Slider_2.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT126 = "System/Slider_3.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT127 = "System/Slider_4.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT128 = "System/Slider_5.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT129 = "System/Slider_6.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT130 = "System/Slider_7.pbm"
+Blockly.Msg.CocoRobo_LOOKS_EXPRESSION_OPT131 = "System/Slider_8.pbm"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT1 = "仿數碼管11畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT2 = "仿數碼管16畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT3 = "仿數碼管21畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT4 = "仿數碼管30畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT5 = "仿數碼管44畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT6 = "仿數碼管斜體 30畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT7 = "仿數碼管斜體 42畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT8 = "DejaVu Sans Mono 12畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT9 = "DejaVu Sans Mono 16畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT10 = "DejaVu Sans Mono 21畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT11 = "DejaVu Sans Mono 黑體 12畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT12 = "DejaVu Sans Mono 黑體 16畫素"
+Blockly.Msg.CocoRobo_LOOKS_TUBE_OPT13 = "DejaVu Sans Mono 黑體 21畫素"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT1 = "東壹區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT2 = "東二區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT3 = "東三區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT4 = "東四區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT5 = "東五區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT6 = "東六區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT7 = "東七區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT8 = "東八區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT9 = "東九區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT10 = "東十區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT11 = "東十壹區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT12 = "東十二區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT13 = "西壹區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT14 = "西二區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT15 = "西三區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT16 = "西四區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT17 = "西五區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT18 = "西六區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT19 = "西七區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT20 = "西八區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT21 = "西九區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT22 = "西十區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT23 = "西十壹區"
+Blockly.Msg.CocoRobo_WIFI_ZONE_OPT24 = "西十二區"
+Blockly.Msg.GROVE_JOINT_SETUP = "初始化 setup"
+Blockly.Msg.GROVE_JOINT_SETUP_LOOP = "循環 loop"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE = "%1 %2 溫濕度感應器 %3"
+Blockly.Msg.GROVE_JOINT_INPUT_INFRARED = "%1 %2 紅外接近感應器"
+Blockly.Msg.GROVE_JOINT_INPUT_MAGNESWITCH = "%1 %2 磁力開關"
+Blockly.Msg.GROVE_JOINT_INPUT_ULTRASONIC = "%1 %2 超聲波測距感應器"
+Blockly.Msg.GROVE_JOINT_INPUT_LIGHT = "%1 %2 光線感應器"
+Blockly.Msg.GROVE_JOINT_INPUT_SLIDESWITCH = "%1 %2 滑動電位開關"
+Blockly.Msg.GROVE_JOINT_INPUT_INCLINE = "%1 %2 傾斜感應器"
+Blockly.Msg.GROVE_JOINT_INPUT_TOUCH = "%1 %2 觸摸感應器"
+Blockly.Msg.GROVE_JOINT_INPUT_NOISE = "%1 %2 噪音感應器"
+Blockly.Msg.GROVE_JOINT_INPUT_SOILHUMIDITY = "%1 %2 土壤濕度感應器"
+Blockly.Msg.GROVE_JOINT_INPUT_SHAFTSPEED = "%1 %2 三軸數字加速度 %3"
+Blockly.Msg.GROVE_JOINT_INPUT_MULTICHANNEDL_TOUCH = "%1 %2 多通道觸摸感應器 通道 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_MINIMOTOR_RUN = "%1 %2 迷妳馬達驅動板 馬達# %3 轉速 %4"
+Blockly.Msg.GROVE_JOINT_OUTPUT_FOURDIGIT_TUBE_DISPLAY = "%1 %2 四位數碼顯示管 顯示為 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_LEDBOARD_SHOW = "%1 %2 LED驅動板 設為 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_RGBLED_SHOW = "%1 %2 全彩RGB LED燈顯示為紅 %3 綠 %4 藍 %5"
+Blockly.Msg.GROVE_JOINT_OUTPUT_SPEAKER_NOTEBEAT = "%1 %2 揚聲器 音符 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_SERVO_TRUNANGLE = "%1 %2 伺服馬達 角度(0-180) %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_BUZZER_PLAY = "%1 %2 蜂鳴器 設為 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_MOTOR_RUN = "%1 %2 震動馬達 設為 %3"
+Blockly.Msg.GROVE_JOINT_OUTPUT_DCMOTOR_RUN = "%1 %2 直流馬達驅動板 設為 %3"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT01 = "溫度"
+Blockly.Msg.GROVE_JOINT_INPUT_HUMITURE_OPT02 = "濕度"
+Blockly.Msg.GROVE_JOINT_INPUT_LEVEL_HIGH = "高電平"
+Blockly.Msg.GROVE_JOINT_INPUT_LEVEL_LOW = "低電平"
+
+
+Blockly.Categories = {};
+Blockly.Categories.motion = "motion"
+Blockly.Categories.looks = "looks"
+Blockly.Categories.sound = "sounds"
+Blockly.Categories.pen = "pen"
+Blockly.Categories.data = "data"
+Blockly.Categories.dataLists = "data-lists"
+Blockly.Categories.event = "events"
+Blockly.Categories.control = "control"
+Blockly.Categories.sensing = "sensing"
+Blockly.Categories.operators = "operators"
+Blockly.Categories.more = "more"
+
+Blockly.Msg.ESP32BUTTON = "當按鈕";
+Blockly.Msg.ESP32IS = "是";
+Blockly.Msg.ESP32PRESSED = "按下時";
+Blockly.Msg.ESP32RELEASED = "鬆開時";
+Blockly.Msg.ESP32DIALER_LEFT = "左側";
+Blockly.Msg.ESP32DIALER_MIDDLE = "中間";
+Blockly.Msg.ESP32DIALER_RIGHT = "右側";
+Blockly.Msg.ESP32DIALSWITCH = "當撥盤";
+Blockly.Msg.ESP32TURN = "設定";
+Blockly.Msg.ESP32LED = "";
+Blockly.Msg.ESP32LED_MONO_TEXT_NO = "第";
+Blockly.Msg.ESP32LED_MONO_TEXT_AFTER = "颗 LED 燈";
+Blockly.Msg.ESP32LED_BLUE = "藍燈";
+Blockly.Msg.ESP32LED_RED = "紅燈";
+Blockly.Msg.ESP32LED_TURNON = "點亮";
+Blockly.Msg.ESP32LED_TURNOFF = "關閉";
+
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTUP = "點亮";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHTOFF = "熄滅";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_INIT_TEXT = "位於(第";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_MIDDLE_TEXT = "列,第";
+Blockly.Msg.ESP32LED_CORD_DRAWPIXEL_LIGHT_END_TEXT = "欄)的 LED 燈";
+
+Blockly.Msg.ESP32TURNOBAF = "蜂鳴器";
+Blockly.Msg.ESP32TURNOB = "關閉蜂鳴器";
+Blockly.Msg.ESP32TA = "當觸摸區域";
+Blockly.Msg.ESP32_TOUCHED = "被觸摸時";
+Blockly.Msg.ESP32_UNTOUCHED = "未被觸摸時";
+Blockly.Msg.ESP32_READ = "獲取觸摸區域";
+Blockly.Msg.ESP32_READ_VALUE = "的電容變化數值";
+Blockly.Msg.ESP32_ENV_GET_TEXT = "獲取";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite = "蜂鳴器播放音符";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite_2 = "持續";
+Blockly.Msg.esp32_main_controller_turn_off_buzzer_music_lite_3 = "拍";
+
+
+
+Blockly.Msg.LCDINIT = "LCD螢幕初始化"
+Blockly.Msg.LCDINIT_R = "設定螢幕旋轉"
+Blockly.Msg.LCDINIT_M = "設定螢幕鏡像翻轉"
+
+Blockly.Msg.LCDROTATION = "設定LCD螢幕旋轉";
+
+Blockly.Msg.LCDMF = "設定LCD螢幕鏡面翻轉";
+
+Blockly.Msg.LCDDFSW = "設定LCD螢幕填充顏色為";
+
+
+Blockly.Msg.LCDDT = "設定LCD顯示文本";
+Blockly.Msg.LCDDT_C = "字串顏色";
+Blockly.Msg.LCDDT_BC = "背景色";
+Blockly.Msg.LED_COORDINATE = "座標";
+Blockly.Msg.WIFISERVER_SERVERSEND_CONTENT = "內容";
+
+Blockly.Msg.LCDDLOC = "繪製直線";
+
+Blockly.Msg.LCDDCC = "LCD創建空白畫布";
+Blockly.Msg.LCDDCC_F = "填充圖像:";
+Blockly.Msg.LCDDCC_I = "圖像路徑:";
+
+Blockly.Msg.LCDDSC = "顯示畫布";
+Blockly.Msg.LCDDSC_SC = "設定座標";
+Blockly.Msg.LCDDSC_X = " X:";
+Blockly.Msg.LCDDSC_Y = " Y:";
+
+Blockly.Msg.LCD_CANVAS = "在畫布";
+Blockly.Msg.LCDDTOC = "繪製文本";
+Blockly.Msg.LCDDTOC_SH = "設定換欄";
+
+Blockly.Msg.LCDDASOC = "繪製箭頭標誌";
+Blockly.Msg.LCDDASOC_SC = "開始座標";
+Blockly.Msg.LCDDASOC_EC = "結束座標";
+Blockly.Msg.LCDDASOC_LC = "線條顏色";
+Blockly.Msg.LCDDASOC_LT = "線條粗細";
+Blockly.Msg.LCDDASOC_T = "厚度";
+
+Blockly.Msg.LCDDFROC = "繪製";
+Blockly.Msg.LCDDFROC_R = "矩形";
+Blockly.Msg.LCDDFROC_C = "圓形";
+Blockly.Msg.LCDRADIUS = "半徑";
+
+Blockly.Msg.LCDDCSOC = "繪製十字標誌";
+
+Blockly.Msg.LCDCEOC = "清除畫布上的所有內容";
+
+Blockly.Msg.LCDSCIC = "設定畫布";
+Blockly.Msg.LCDSCIC_I = "顏色反轉";
+
+Blockly.Msg.LCDSCCRTW = "設定畫布";
+Blockly.Msg.LCDSCCRTW_R = "調整為寬度";
+Blockly.Msg.LCDSCCRTW_TCANC = "然後創建一個新畫布";
+
+Blockly.Msg.LCDDI = "顯示在";
+
+Blockly.Msg.LCDSCCCVTP = "設定畫布:畫布將矢量轉換為畫素";
+
+Blockly.Msg.LCDRQ = "二維碼";
+
+
+Blockly.Msg.CAMERAINIT = "相機初始化";
+Blockly.Msg.CAMERAINIT_SFS = "設定幀大小:";
+Blockly.Msg.CAMERAINIT_SFS_I = " in";
+Blockly.Msg.CAMERAINIT_SWW = "設定窗口寬度:224高度:224";
+Blockly.Msg.CAMERAINIT_SVFOSHMO = "設定垂直​​翻轉";
+Blockly.Msg.CAMERAINIT_SVFOSHMO_O = "設定水平鏡像"
+Blockly.Msg.CAMERAINIT_SABOSAGO = "設定自動平衡:";
+Blockly.Msg.CAMERAINIT_SABOSAGO_O = "設定自動增益:";
+Blockly.Msg.CAMERAINIT_SCBS = "設定對比度:";
+Blockly.Msg.CAMERAINIT_SCBS_B = "亮度:";
+Blockly.Msg.CAMERAINIT_SCBS_S = "飽和度:";
+
+Blockly.Msg.CAMERASVFO = "設定垂直​​翻轉";
+Blockly.Msg.CAMERASVFO_SHMO = "設定水平鏡像";
+Blockly.Msg.CAMERASVFO_SABO = "設定自動白平衡";
+Blockly.Msg.CAMERASVFO_SAGO = "設定自動增益";
+Blockly.Msg.CAMERASVFO_SCT = "設定對比度為";
+Blockly.Msg.CAMERASVFO_SBT = "設定亮度為";
+Blockly.Msg.CAMERASVFO_SST = "將飽和度設定為";
+
+Blockly.Msg.CAMERGICFC = "獲取從相機捕捉的圖像";
+Blockly.Msg.CAMERGICFC_SCT = "選擇攝像機類型:正常";
+
+Blockly.Msg.MODELLPM = "加載並初始化預設模型:";
+
+Blockly.Msg.CAMERINIT = "初始化預設模型:單數字識別";
+Blockly.Msg.CAMERINIT_SISF = "設定要識別的圖像源爲:";
+Blockly.Msg.CAMERINIT_FPM = "獲取手寫數字識別模型的識別結果";
+Blockly.Msg.CAMERINIT_GCDN = "獲取當前檢測到的數字 (0-9)";
+Blockly.Msg.CAMERINIT_CRC = "獲取當前檢測的可信度 (%)";
+Blockly.Msg.CAMERINIT_GTCS = "獲取當前檢測的可信度 (%)";
+
+Blockly.Msg.MODELS_L = "識別到了任意常見物體";
+
+Blockly.Msg.MODELS_GET_F = "從";
+Blockly.Msg.MODELS_GET_G = "獲取識別到常見物體的";
+Blockly.Msg.MODELS_GET_O = "物體名稱";
+Blockly.Msg.MODELS_GET_X = "檢測框的X軸座標";
+Blockly.Msg.MODELS_GET_Y = "檢測框的Y軸座標";
+Blockly.Msg.MODELS_GET_W = "檢測框的寬度";
+Blockly.Msg.MODELS_GET_H = "檢測框的高度";
+Blockly.Msg.MODELS_GET_NO = "物體數量";
+Blockly.Msg.MODELS_GET_S = "序號";
+Blockly.Msg.MODELS_GET_C = "可信度";
+
+Blockly.Msg.MODELS_FACE = "識別到了人臉";
+
+Blockly.Msg.MODELS_XY_F = "獲取識別到人臉的";
+Blockly.Msg.MODELS_XY_N = "數量";
+
+Blockly.Msg.MODELS_SDR = "手寫數字識別模型 (MNIST)";
+Blockly.Msg.MODELS_COR = "常見物體識別模型";
+Blockly.Msg.MODELS_AR = "常見動物識別模型";
+Blockly.Msg.MODELS_HFR = "人臉檢測模型";
+
+Blockly.Msg.CAMERINITPM = "初始化預設模型:通用對象識別";
+Blockly.Msg.CAMERINITPM_SMSFIOR = "從設定圖像源";
+Blockly.Msg.CAMERINITPM_ACOID = "檢測到任何公共對象";
+Blockly.Msg.CAMERINITPM_IACOID = "如果檢測到任何公共對象";
+Blockly.Msg.CAMERINITPM_D = "執行";
+Blockly.Msg.CAMERINITPM_E = "其他";
+Blockly.Msg.CAMERINITPM_FPM = "來自預設模型:通用對象識別";
+Blockly.Msg.CAMERINITPM_G = "獲取";
+Blockly.Msg.CAMERINITPM_GIOTCOD = "檢測到公共對象";
+Blockly.Msg.CAMERINITPM_DCOIA = "檢測到的公共對象為";
+
+
+
+Blockly.Msg.CAMERINITPMA = "初始化預設模型:動物識別";
+Blockly.Msg.CAMERINITPMA_AAOID = "檢測到任何動物";
+Blockly.Msg.CAMERINITPMA_IAAOID = "如果檢測到任何動物";
+Blockly.Msg.CAMERINITPMA_FPMA = "來自預設模型:動物確認";
+Blockly.Msg.CAMERINITPMA_GIOTCAD = "檢測到的動物";
+Blockly.Msg.CAMERINITPMA_DAOIA = "檢測到的動物是";
+
+
+
+Blockly.Msg.CAMERINITPMF = "初始化預設模型:人臉檢測";
+Blockly.Msg.CAMERINITPMF_SISFIF = "從設定圖像源";
+Blockly.Msg.CAMERINITPMF_AFID = "檢測到任何人的臉";
+Blockly.Msg.CAMERINITPMF_IAFID = "如果檢測到人臉";
+Blockly.Msg.CAMERINITPMF_FPM = "來自預設模型:人臉檢測";
+Blockly.Msg.CAMERINITPMF_GIOTFD = "檢測到的臉";
+
+Blockly.Msg.CAMERINITPMF_LCMLM = "加載定制的機器學習模型";
+Blockly.Msg.CAMERINITPMF_FSC = "來自SD卡:";
+
+Blockly.Msg.CAMERINIINNYFNOT = "初始化神經網絡YOLOv2"
+Blockly.Msg.CAMERINIINNYFNOT_F = "來自網絡對象";
+Blockly.Msg.CAMERINIINNYFNOT_SPT = "設定概率閾值:"
+Blockly.Msg.CAMERINIINNYFNOT_SPT_S = "設定盒IoU閾值:";
+Blockly.Msg.CAMERINITPMF_SNOAA = "設定錨點數量"
+Blockly.Msg.CAMERINITPMF_SNOAA_S = "將錨設定為:錨";
+
+
+Blockly.Msg.CAMERGRFRNNY = "從運行神經網絡YOLOv2獲得結果";
+Blockly.Msg.CAMERGRFRNNY_FNOT = "來自網絡對象";
+Blockly.Msg.CAMERGRFRNNY_SNOLTCTTN = "設定要計算到網絡的層數:"
+Blockly.Msg.CAMERGRFRNNY_SISA = "將圖像源設定為:";
+
+Blockly.Msg.CAMERGFMOFNOT = "從網絡對象獲取要素地圖對象";
+Blockly.Msg.CAMERGFMOFNOT_SNOLTCTTN = "設定要計算到網絡的層數:"
+Blockly.Msg.CAMERGFMOFNOT_SISAC = "將圖像源設定為:";
+
+
+Blockly.Msg.CAMERDNOT = "取消初始化網絡對象";
+
+
+Blockly.Msg.VISION_SIF_D = "檢測線條顏色:";
+Blockly.Msg.VISION_SIF_G = "獲取方向偏移值";
+Blockly.Msg.VISION_SIF_GF = "來自雙線檢測";
+
+
+
+Blockly.Msg.MPHONE = "咪高峰初始化";
+Blockly.Msg.MPHONE_A = "從咪高峰獲取環境聲音強度";
+
+
+Blockly.Msg.AUDIO_S = "喇叭初始化";
+Blockly.Msg.AUDIO_S_P = "播放音訊檔案";
+Blockly.Msg.AUDIO_S_PS = "設定音量";
+Blockly.Msg.AUDIO_S_PF = "文件路徑:";
+
+Blockly.Msg.AUDIO_SET = "設定音訊播放音量";
+
+Blockly.Msg.VIDEO_S = "影片錄製初始化";
+Blockly.Msg.VIDEO_S_S = "檔案保存路徑:";
+Blockly.Msg.VIDEO_G = "從影像源";
+Blockly.Msg.VIDEO_S_I = "錄製影片";
+Blockly.Msg.VIDEO_S_R = "停止錄製影片";
+
+Blockly.Msg.VIDEO_SET_F = "播放影片檔案";
+Blockly.Msg.VIDEO_SET_P = "檔案路徑:";
+
+Blockly.Msg.VIDEO_NUM = "設定影片播放音量 ";
+
+Blockly.Msg.VIDEO_STATUS = "獲取影片播放的狀態";
+
+Blockly.Msg.SYSTEM = "重啟系統";
+Blockly.Msg.SYSTEM_GC = "啟動記憶體回收";
+
+Blockly.Msg.SYSTEM_RUN = "執行 Python 程式";
+Blockly.Msg.SYSTEM_RUN_F = "程式所在路徑:";
+
+Blockly.Msg.SYSTEM_CREATE = "創建文本檔案";
+Blockly.Msg.SYSTEM_CREATE_F = "檔名:";
+
+
+Blockly.Msg.SYSTEM_WRITE = "創建文本檔案";
+Blockly.Msg.SYSTEM_WRITE_F = "檔案名稱:";
+Blockly.Msg.SYSTEM_WRITE_W = "寫入內容:";
+Blockly.Msg.SYSTEM_WRITE_S = "分隔符號為:";
+Blockly.Msg.SYSTEM_WRITE_S_N = "換欄";
+Blockly.Msg.SYSTEM_WRITE_S_C = "逗號";
+Blockly.Msg.SYSTEM_WRITE_S_S = "空格";
+Blockly.Msg.SYSTEM_WRITE_S_SE = "分號";
+
+Blockly.Msg.SYSTEM_INPUT = "讀取文本檔案為陣列";
+
+Blockly.Msg.SERIALPORT_PRINT_TITLE = "串口列印 %1";
+
+Blockly.Msg.SERIALPORT_SPACER = "間隔符";
+Blockly.Msg.SERIALPORT_TERMINATOR = "結束符";
+Blockly.Msg.SERIALPORT_DATA = "數據";
+
+
+Blockly.Msg.SERIALPORT_COLOR = "字串顏色";
+Blockly.Msg.SERIALPORT_TCOLOR = "字串底色";
+
+Blockly.Msg.SERIALPORT_SLDT = "設定LCD螢幕顯示字串";
+
+Blockly.Msg.LCD_CLEAR = "清除螢幕";
+
+Blockly.Msg.CAMERA_WINDOW = "設定相機視窗化";
+Blockly.Msg.CAMERA_SIZE = "視窗尺寸";
+
+
+Blockly.Msg.CAMERA_INIT = "相機初始化";
+Blockly.Msg.CAMERA_CIS = "設定捕捉的影像尺寸:";
+Blockly.Msg.CAMERA_COCI = "設定捕捉的影像顏色模式為:";
+
+Blockly.Msg.CAMERA_C = "彩色";
+Blockly.Msg.CAMERA_BW = "黑白";
+
+
+/*
+  __  __       _   _     
+ |  \/  | __ _| |_| |__  
+ | |\/| |/ _` | __| '_ \ 
+ | |  | | (_| | |_| | | |
+ |_|  |_|\__,_|\__|_| |_|
+                         
+*/
+
+Blockly.Msg.math_degrad_rad = "轉換角度為弧度";
+Blockly.Msg.math_degrad_deg = "轉換弧度為角度";
+
+/*
+  ___                   _      _____        _               _   
+ |_ _|_ __  _ __  _   _| |_   / / _ \ _   _| |_ _ __  _   _| |_ 
+  | || '_ \| '_ \| | | | __| / / | | | | | | __| '_ \| | | | __|
+  | || | | | |_) | |_| | |_ / /| |_| | |_| | |_| |_) | |_| | |_ 
+ |___|_| |_| .__/ \__,_|\__/_/  \___/ \__,_|\__| .__/ \__,_|\__|
+           |_|                                 |_|              
+*/
+
+Blockly.Msg.io_high = "高電平";
+Blockly.Msg.io_low = "低電平";
+Blockly.Msg.digital_set = "設定引腳 #";
+Blockly.Msg.digital_set_as = "爲";
+Blockly.Msg.digital_get = "獲取引腳 #";
+Blockly.Msg.digital_get_value = "的數碼訊號數值";
+
+Blockly.Msg.analog_get = "獲取引腳 #";
+Blockly.Msg.analog_get_value = "的類比訊號數值 (PWM)";
+Blockly.Msg.analog_set = "IoT 模組設定引腳 #";
+Blockly.Msg.set_pin = "(範圍:0 ~ 1023)";
+Blockly.Msg.analog_set_ai = "A.I. 模組設定引腳 #";
+Blockly.Msg.analog_set_freq = "設定頻率爲:";
+Blockly.Msg.analog_set_pwm = "設定 PWM 爲:";
+Blockly.Msg.set_pwm = "的類比輸出為";
+Blockly.Msg.led = "LED";
+Blockly.Msg.control = "控制";
+Blockly.Msg.OUT_PWM = "輸出 PWM 波";
+
+Blockly.Msg.analog_set_timer = "設定 Timer 爲:";
+Blockly.Msg.analog_set_timer_channel = "設定 Timer 頻道爲:"; 
+
+Blockly.Msg.Esp32_Main_Controller_Io_analog_pin_1 = "A.I. 模組引腳 #";
+Blockly.Msg.Esp32_Main_Controller_Io_analog_pin_2 = "IoT 模組引腳 #";
+
+/*
+  _____ _                
+ |_   _(_)_ __ ___   ___ 
+   | | | | '_ ` _ \ / _ \
+   | | | | | | | | |  __/
+   |_| |_|_| |_| |_|\___|
+                         
+*/
+
+Blockly.Msg.time_iot_module = "IoT 模組 ";
+Blockly.Msg.time_ai_module = "AI 模組";
+Blockly.Msg.time_init_timer = "初始化計時器";
+Blockly.Msg.time_timer_get_time = "獲取計時器已過時間(秒)";
+Blockly.Msg.time_timer_clear = "清除計時器";
+Blockly.Msg.time_timer_periodically = "啟用週期重複計時器";
+Blockly.Msg.time_timer_every = "每隔";
+Blockly.Msg.time_timer_ms = "毫秒";
+Blockly.Msg.time_execution = "執行";
+Blockly.Msg.time_timer_periodically_clear = "清除週期重複計時器";
+
+Blockly.Msg.time_get_current_date_title = "獲取本地時間:";
+Blockly.Msg.time_get_current_date_y = "年";
+Blockly.Msg.time_get_current_date_m = "月";
+Blockly.Msg.time_get_current_date_d = "日";
+Blockly.Msg.time_get_current_date_hour = "時";
+Blockly.Msg.time_get_current_date_min = "分";
+Blockly.Msg.time_get_current_date_sec = "秒";
+
+
+/*
+  ____            _       _    ____                            
+ / ___|  ___ _ __(_) __ _| |  / ___|___  _ __ ___  _ __ ___    
+ \___ \ / _ \ '__| |/ _` | | | |   / _ \| '_ ` _ \| '_ ` _ \   
+  ___) |  __/ |  | | (_| | | | |__| (_) | | | | | | | | | | |_ 
+ |____/ \___|_|  |_|\__,_|_|  \____\___/|_| |_| |_|_| |_| |_(_)
+
+*/
+Blockly.Msg.serialcomm_print = "序列埠打印";
+Blockly.Msg.serialcomm_write_title_text = "透過序列埠傳送數據至其他設備";
+Blockly.Msg.serialcomm_write_title_text_arduino = "透過USB傳送數據至Arduino";
+Blockly.Msg.serialcomm_read_setup_title_text_arduino = "通過USB獲取數據初始化";
+Blockly.Msg.serialcomm_read_setup_title_text = "透過序列埠獲取數據";
+Blockly.Msg.serialcomm_read_setup_title_text_1 = "初始化";
+Blockly.Msg.serial_read_data = "從";
+Blockly.Msg.Serial_Read_Data_all = "獲取到的串口數據";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_GET_TEXT = "獲取接收到一代和二代串列埠數據中第";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_TEXT = "位的數據";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_FLOAT = "浮點數";
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_INTEGER = "Number";  // untranslated
+Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_STRING = "字元";
+Blockly.Msg.serialcomm_write_item_first = "第 ";
+Blockly.Msg.serialcomm_write_item_last = " 位數據:";
+Blockly.Msg.serialcomm_write_item = "項目";
+Blockly.Msg.serialcomm_write_data = "數據";
+Blockly.Msg.serialcomm_write_data_bps_title = "設定波特率為:";
+Blockly.Msg.serialcomm_write_data_bps_attrib = "位元/秒";
+Blockly.Msg.serialcomm_write_on = "使用";
+Blockly.Msg.serialcomm_write_on_ai = "AI 模組 ";
+Blockly.Msg.serialcomm_write_on_iot = "IoT 模組";
+Blockly.Msg.serial_send_data_on = "在";
+Blockly.Msg.serial_send_data_on_send_data_cocorobo = "CocoPi 發送數據至一代和二代"
+Blockly.Msg.serial_send_data_on_send_data = "CocoPi 載送數據至 Micro:bit"
+Blockly.Msg.serial_send_data_on_send_data_control_panel = "CocoPi 發送數據至掌控版";
+Blockly.Msg.serial_send_data_on_send_data_control_panel_arduino = "CocoPi 發送數據至 Arduino";
+
+
+/*
+  ____            _      
+ | __ )  __ _ ___(_) ___ 
+ |  _ \ / _` / __| |/ __|
+ | |_) | (_| \__ \ | (__ 
+ |____/ \__,_|___/_|\___|
+
+*/
+
+Blockly.Msg.basic_button_read_value = "讀取按鈕";
+Blockly.Msg.basic_button_read_value_after = "的電平狀態";
+
+Blockly.Msg.basic_buzzer_set_init = "蜂鳴器初始化,並設置引腳爲:";
+Blockly.Msg.basic_buzzer_set = "蜂鳴器設定音調頻率爲 (Hz):";
+Blockly.Msg.basic_temperature = "溫度";
+Blockly.Msg.basic_humidity = "濕度";
+Blockly.Msg.basic_pressure = "大氣壓";
+Blockly.Msg.basic_env_value = "數值(獲取數值時間要大於1秒)";
+Blockly.Msg.basic_motion_use = "使用運動感應器";
+
+Blockly.Msg.basic_shaking_sensitivity = "設定靈敏度為";
+Blockly.Msg.basic_shaking_sensitivity_high = "高";
+Blockly.Msg.basic_shaking_sensitivity_middle = "中";
+Blockly.Msg.basic_shaking_sensitivity_low = "低";
+Blockly.Msg.basic_when_shaking_when_module = "當模組";
+Blockly.Msg.basic_when_shaking_when_is_in = "處於";
+Blockly.Msg.basic_when_shaking_when_is_not_in = "不處於";
+Blockly.Msg.basic_when_shaking_when_shaking = "搖晃狀態時";
+
+Blockly.Msg.basic_when_shaking = "當模組處於搖晃狀態時";
+Blockly.Msg.basic_when_shaking_not = "當模組不處於搖晃狀態時";
+
+Blockly.Msg.basic_when_tilting_get = "當模組";
+Blockly.Msg.basic_when_tilting_get_left = "向左";
+Blockly.Msg.basic_when_tilting_get_right = "向右";
+Blockly.Msg.basic_when_tilting_get_forward = "向前";
+Blockly.Msg.basic_when_tilting_get_backward = "向後";
+Blockly.Msg.basic_when_tilting_get_left_and_forward = "向左前";
+Blockly.Msg.basic_when_tilting_get_left_and_backward = "向左後";
+Blockly.Msg.basic_when_tilting_get_right_and_forward = "向右前";
+Blockly.Msg.basic_when_tilting_get_right_and_backward = "向右後";
+Blockly.Msg.basic_when_tilting_not_tilting = "沒有";
+
+Blockly.Msg.basic_when_tilting_get_when = "傾斜時";
+Blockly.Msg.basic_motion_get = "獲取";
+Blockly.Msg.basic_motion_accel = "軸的加速度";
+Blockly.Msg.basic_motion_rotation_measurement = "軸的旋轉測量值";
+Blockly.Msg.basic_motion_angle = "軸的傾斜角度";
+Blockly.Msg.isUnit = "需要單位";
+Blockly.Msg.confUnit = "是";
+Blockly.Msg.cancUnit = "否";
+Blockly.Msg.basic_light_get = "獲取光線值(0~4095)";
+
+
+Blockly.Msg.basic_motion_statement_exec = "執行";
+
+
+/*
+  ____  _           _             
+ |  _ \(_)___ _ __ | | __ _ _   _ 
+ | | | | / __| '_ \| |/ _` | | | |
+ | |_| | \__ \ |_) | | (_| | |_| |
+ |____/|_|___/ .__/|_|\__,_|\__, |
+             |_|            |___/ 
+*/
+
+Blockly.Msg.display_clear_screen = "清除 LCD 螢幕";
+Blockly.Msg.display_fill_screen = "設定 LCD 鋪滿顏色為";
+Blockly.Msg.display_draw_pixel = "畫素點";
+Blockly.Msg.display_draw_vertical = "垂直";
+Blockly.Msg.display_draw_horizontal = "水平";
+Blockly.Msg.display_start_cord = "起始座標";
+Blockly.Msg.display_length = "長度";
+Blockly.Msg.display_draw_rectangle = "矩形";
+Blockly.Msg.display_drawqr_text = " QR 二維碼";
+Blockly.Msg.display_drawqr_content = "文本內容";
+Blockly.Msg.display_drawqr_padding = "邊距寬度";
+Blockly.Msg.display_draw_text = "字串";
+Blockly.Msg.display_draw_text_content = "文本內容";
+Blockly.Msg.display_draw_text_size = "字串大小";
+Blockly.Msg.display_draw_text_return = "是否換欄";
+Blockly.Msg.display_red = "紅";
+Blockly.Msg.display_green = "綠";
+Blockly.Msg.display_blue = "藍";
+
+/*
+ __        ___       _____ _ 
+ \ \      / (_)     |  ___(_)
+  \ \ /\ / /| |_____| |_  | |
+   \ V  V / | |_____|  _| | |
+    \_/\_/  |_|     |_|   |_|
+                             
+*/
+
+Blockly.Msg.wifi_setup_hotspot = "建立 Wi-Fi 熱點";
+Blockly.Msg.wifi_hotspot_ssid = "SSID:";
+Blockly.Msg.wifi_hotspot_pass = "密碼:";
+Blockly.Msg.wifi_connect_router = "連接 WiFi 網絡";
+Blockly.Msg.wifi_router_ssid = "SSID:";
+Blockly.Msg.wifi_router_pass = "密碼:";
+Blockly.Msg.wifi_router_disconnect = "斷開 WiFi 連接";
+Blockly.Msg.wifi_hotspot_get_clients = "獲取當前已連接的設備數量";
+Blockly.Msg.wifi_hotspot_get_list = "獲取當前已連接的設備陣列";
+Blockly.Msg.wifi_router_connection_status = "獲取 WiFi 連接狀態";
+Blockly.Msg.wifi_close_hotspot = "關閉 Wi-Fi 熱點";
+Blockly.Msg.wifi_router_get_info = "獲取 WiFi 配置信息";
+Blockly.Msg.wifi_router_device_ip = "IP";
+Blockly.Msg.wifi_router_device_mask = "子網掩碼";
+Blockly.Msg.wifi_router_device_gateway = "網關";
+Blockly.Msg.wifi_router_device_dns = "DNS";
+
+Blockly.Msg.wifi_ntptime_title = "同步網絡時間";
+Blockly.Msg.wifi_ntptime_set_timezone = "設定同步時區";
+Blockly.Msg.wifi_ntptime_utc8 = "東8區";
+Blockly.Msg.wifi_ntptime_utc9 = "東9區";
+Blockly.Msg.wifi_ntptime_utc10 = "東10區";
+Blockly.Msg.wifi_ntptime_utc11 = "東11區";
+Blockly.Msg.wifi_ntptime_utc12 = "東12區";
+Blockly.Msg.wifi_ntptime_utcm12 = "西12區";
+Blockly.Msg.wifi_ntptime_utcm11 = "西區";
+Blockly.Msg.wifi_ntptime_utcm10 = "西區";
+Blockly.Msg.wifi_ntptime_utcm9 = "西9區";
+Blockly.Msg.wifi_ntptime_utcm8 = "西8區";
+Blockly.Msg.wifi_ntptime_utcm7 = "西7區";
+Blockly.Msg.wifi_ntptime_utcm6 = "西6區";
+Blockly.Msg.wifi_ntptime_utcm5 = "西5區";
+Blockly.Msg.wifi_ntptime_utcm4 = "西4區";
+Blockly.Msg.wifi_ntptime_utcm3 = "西3區";
+Blockly.Msg.wifi_ntptime_utcm2 = "西2區";
+Blockly.Msg.wifi_ntptime_utcm1 = "西1區";
+Blockly.Msg.wifi_ntptime_utc0 = "中時區";
+Blockly.Msg.wifi_ntptime_utc1 = "東1區";
+Blockly.Msg.wifi_ntptime_utc2 = "東2區";
+Blockly.Msg.wifi_ntptime_utc3 = "東3區";
+Blockly.Msg.wifi_ntptime_utc4 = "東4區";
+Blockly.Msg.wifi_ntptime_utc5 = "東5區";
+Blockly.Msg.wifi_ntptime_utc6 = "東6區";
+Blockly.Msg.wifi_ntptime_utc7 = "東7區";
+Blockly.Msg.wifi_ntptime_time_server = "設定同步伺服器:";
+
+
+Blockly.Msg.wifi_web_http_server_setup = "HTTP 伺服器初始化";
+Blockly.Msg.wifi_web_http_server_route_setting_title = "HTTP 伺服器設定訪問路徑";
+Blockly.Msg.wifi_web_http_server_route_setting_path = "當路徑:";
+Blockly.Msg.wifi_web_http_server_route_setting_being_requested = "被請求時";
+Blockly.Msg.wifi_web_http_server_route_setting_property = "設定請求屬性爲:";
+Blockly.Msg.wifi_web_http_server_route_setting_get = "GET 請求";
+Blockly.Msg.wifi_web_http_server_route_setting_post = "POST 請求";
+Blockly.Msg.wifi_web_http_server_route_setting_do = "執行";
+Blockly.Msg.wifi_web_http_server_respond_title = "HTTP 伺服器設定響應內容爲:";
+Blockly.Msg.wifi_web_http_server_respond_type = "設定返回數據類型:";
+Blockly.Msg.wifi_web_http_server_respond_text = "純文本";
+Blockly.Msg.wifi_web_http_server_respond_json = "字典類型數據 (JSON)";
+Blockly.Msg.wifi_web_http_server_respond_html = "網頁 (HTML 程式碼)";
+Blockly.Msg.wifi_web_http_server_respond_exec = "響應";
+Blockly.Msg.wifi_web_http_server_get_title = "HTTP 伺服器獲取從客戶端收到的數據,類型爲";
+Blockly.Msg.wifi_web_http_server_get_as_json = "字典類型數據 (JSON)";
+Blockly.Msg.wifi_web_http_server_get_as_text = "文本";
+
+
+/*
+  _   _ ____       ___    _____ 
+ | \ | | __ )     |_ _|__|_   _|
+ |  \| |  _ \ _____| |/ _ \| |  
+ | |\  | |_) |_____| | (_) | |  
+ |_| \_|____/     |___\___/|_|  
+
+*/
+
+
+Blockly.Msg.nbiot_module_which_module_iot = "在 IoT 模組上";
+Blockly.Msg.nbiot_module_which_module_ai = "在 AI 模組上";
+
+Blockly.Msg.nbiot_module_init = "NB-IoT 模組通訊初始化";
+Blockly.Msg.nbiot_module_power = "獲取 NB-IoT 模組啓用狀態";
+Blockly.Msg.nbiot_module_connectivity = "獲取 NB-IoT 模組網絡連接狀態";
+Blockly.Msg.nbiot_module_ip = "獲取 NB-IoT 模組網絡 IP 地址";
+Blockly.Msg.nbiot_onenet_title = "NB-IoT 模組連接 OneNET";
+Blockly.Msg.nbiot_onenet_connect_productid = "產品 ID:";
+Blockly.Msg.nbiot_onenet_connect_deviceid = "設備 ID:";
+Blockly.Msg.nbiot_onenet_connect_device_api = "設備 API Key:";
+Blockly.Msg.nbiot_onenet_connectivity = "NB-IoT 模組獲取 OneNET 連接狀態";
+Blockly.Msg.nbiot_onenet_send_title = "NB-IoT 模組發送數據至 OneNET";
+Blockly.Msg.nbiot_onenet_send_property = "屬性名稱: ";
+Blockly.Msg.nbiot_onenet_when_incoming_msg = "當 NB-IoT 模組從 OneNET 收到消息";
+Blockly.Msg.nbiot_onenet_when_incoming_msg_when = "時";
+Blockly.Msg.nbiot_onenet_when_incoming_msg_exec = "執行";
+Blockly.Msg.nbiot_onenet_receive_command = "獲取 NB-IoT 模組從 OneNET 發送的指令";
+Blockly.Msg.nbiot_cococloud_get_event_title = "NB-IoT 模組獲取 CocoCloud 事件數據";
+Blockly.Msg.nbiot_cococloud_get_event_api = "雲端事件 API Key:";
+Blockly.Msg.nbiot_cococloud_get_property = "獲取 CocoCloud 事件中屬性爲";
+Blockly.Msg.nbiot_cococloud_get_data = "的數據";
+Blockly.Msg.nbiot_cococloud_send_title = "NB-IoT 模組發送數據至 CocoCloud";
+Blockly.Msg.nbiot_cococloud_send_api = "事件 API Key:";
+Blockly.Msg.nbiot_cococloud_send_property = "屬性名稱: ";
+Blockly.Msg.nbiot_http_get_title = "發送 HTTP GET 請求";
+Blockly.Msg.nbiot_http_get_url = "設定目標網址:";
+
+
+
+/*
+  ___       _                       _   
+ |_ _|_ __ | |_ ___ _ __ _ __   ___| |_ 
+  | || '_ \| __/ _ \ '__| '_ \ / _ \ __|
+  | || | | | ||  __/ |  | | | |  __/ |_ 
+ |___|_| |_|\__\___|_|  |_| |_|\___|\__|
+
+*/
+
+
+Blockly.Msg.internet_server_setup = "HTTP 伺服器初始化";
+Blockly.Msg.internet_server_set_max = "設定最大連接數:";
+Blockly.Msg.internet_server_set_source = "獲取發起請求設備的來源 IP";
+Blockly.Msg.internet_response_http_content_title = "獲取 HTTP 響應內容的";
+Blockly.Msg.internet_response_text = "文本";
+Blockly.Msg.internet_response_content = "內容";
+Blockly.Msg.internet_response_status = "狀態碼";
+Blockly.Msg.internet_response_json = "JSON數據";
+Blockly.Msg.internet_response_encode = "編碼";
+Blockly.Msg.internet_response_reason = "原因短語";
+Blockly.Msg.internet_http_get_title = "發送 HTTP GET 請求";
+Blockly.Msg.internet_http_get_url = "設定目標網址:";
+Blockly.Msg.internet_http_post_title = "發送 HTTP POST 請求";
+Blockly.Msg.internet_http_post_url = "設定目標網址:";
+Blockly.Msg.internet_http_post_json = "提交數據 (JSON):";
+
+Blockly.Msg.internet_http_get_server_data_title = "獲取從本地 HTTP 伺服器請求得到的數據";
+Blockly.Msg.internet_http_get_server_data_type = "數據類型爲:";
+Blockly.Msg.internet_http_get_server_data_json = "字典數據類型";
+Blockly.Msg.internet_http_get_server_data_text = "純文本";
+
+Blockly.Msg.internet_ws_setup_send_text = "實時通信 (WebSocket) 發送端初始化";
+Blockly.Msg.internet_ws_setup_send_ip = "設定目標設備 IP:";
+Blockly.Msg.internet_ws_send_msg = "透過實時通信 (WebSocket) 發送消息";
+Blockly.Msg.internet_ws_setup_recv = "實時通信 (WebSocket) 接收端初始化";
+Blockly.Msg.internet_ws_setup_receiving = "當實時通信 (WebSocket) 收到消息時";
+Blockly.Msg.internet_ws_setup_recv_exec = "執行";
+Blockly.Msg.internet_ws_setup_get_msg = "獲取從實時通信 (WebSocket) 接收到的消息";
+Blockly.Msg.internet_ws_setup_get_msg_type = "類型爲";
+Blockly.Msg.internet_ws_setup_get_msg_text = "文本";
+Blockly.Msg.internet_ws_setup_get_msg_json = "字典類型數據 (JSON)";
+
+Blockly.Msg.v831_get_weather_init = "初始化天氣";
+Blockly.Msg.set_weather_city = "設置獲取天氣的城市";
+Blockly.Msg.set_weather_title_small = "設置天氣時段";
+Blockly.Msg.set_weather_real_time = "實時";
+Blockly.Msg.set_weather_All_day_long = "全天";
+Blockly.Msg.set_weather_city_title = "設置獲取天氣的城市和時段"
+Blockly.Msg.beijing = "北京";
+Blockly.Msg.shanghai = "上海";
+Blockly.Msg.guangzhou = "廣州";
+Blockly.Msg.shenzhen = "深圳";
+Blockly.Msg.tianjin= "天津";
+Blockly.Msg.HongKong = "香港"
+Blockly.Msg.weather_resulet= "天氣結果"
+Blockly.Msg.weather_condition = "天氣狀況"
+Blockly.Msg.windDir = "風向"
+Blockly.Msg.windScale = "風向等級"
+Blockly.Msg.windSpeed = "風速"
+
+/*
+  ___    _____   ____                  _          
+ |_ _|__|_   _| / ___|  ___ _ ____   _(_) ___ ___ 
+  | |/ _ \| |   \___ \ / _ \ '__\ \ / / |/ __/ _ \
+  | | (_) | |    ___) |  __/ |   \ V /| | (_|  __/
+ |___\___/|_|   |____/ \___|_|    \_/ |_|\___\___|
+
+*/
+
+
+Blockly.Msg.iotservice_thingspeak_send_title = "傳送數據至 ThingSpeak 頻道 (Channel)";
+Blockly.Msg.iotservice_thingspeak_send_api_set = "設定頻道 API Key:";
+Blockly.Msg.iotservice_thingspeak_send_data_1 = "數據1";
+Blockly.Msg.iotservice_onenet_mqtt_setup = "OneNET 物聯網平臺 (MQTTS) 連線初始化";
+Blockly.Msg.iotservice_onenet_mqtt_server = "設定連線伺服器:";
+Blockly.Msg.iotservice_onenet_mqtt_productid = "設定產品 ID:";
+Blockly.Msg.iotservice_onenet_mqtt_productkey = "設定產品 API Key:";
+Blockly.Msg.iotservice_onenet_mqtt_deviceid = "設定裝置 ID:";
+Blockly.Msg.iotservice_onenet_mqtt_send = "往 OneNET 傳送數據";
+Blockly.Msg.iotservice_onenet_mqtt_send_item = "屬性名稱: ";
+Blockly.Msg.iotservice_onenet_mqtt_receive = "當從 OneNET 收到訊息為";
+Blockly.Msg.iotservice_onenet_mqtt_receive_when = "時";
+Blockly.Msg.iotservice_onenet_mqtt_receive_exec = "執行";
+Blockly.Msg.iotservice_onenet_mqtt_disconnect = "斷開 OneNET 連線";
+Blockly.Msg.iotservice_ifttt_send_title = "傳送數據到 IFTTT Webhooks 事件";
+Blockly.Msg.iotservice_ifttt_send_webhook = "Webhooks API Key:";
+Blockly.Msg.iotservice_ifttt_send_eventname = "事件名稱:";
+Blockly.Msg.iotservice_ifttt_send_1 = "數據 1:";
+Blockly.Msg.iotservice_ifttt_send_2 = "數據 2:";
+Blockly.Msg.iotservice_ifttt_send_3 = "數據 3:";
+Blockly.Msg.iotservice_ifttt_trigger_title = "觸發 IFTTT 事件";
+Blockly.Msg.iotservice_ifttt_trigger_webhook = "Webhook API Key:";
+Blockly.Msg.iotservice_ifttt_trigger_eventname = "事件名稱:";
+Blockly.Msg.iotservice_thingspeak_send_title = "傳送數據至 ThingSpeak 頻道";
+Blockly.Msg.iotservice_thingspeak_send_api = "頻道 API Key:";
+Blockly.Msg.iotservice_thingspeak_query_title = "查詢 ThingSpeak 指定頻道的數據";
+Blockly.Msg.iotservice_thingspeak_query_api = "頻道 API Key:";
+Blockly.Msg.iotservice_thingspeak_channel_id = "頻道 ID:";
+Blockly.Msg.iotservice_thingspeak_read_total = "獲取 ThingSpeak 頻道中的數據總量";
+Blockly.Msg.iotservice_thingspeak_get_title = "獲取 ThingSpeak 頻道中第";
+Blockly.Msg.iotservice_thingspeaK_get_field = "條數據的 Field";
+Blockly.Msg.iotservice_thingspeaK_get_value = "的數值";
+Blockly.Msg.iotservice_cococloud_send_title = "傳送數據至 CocoCloud 事件";
+Blockly.Msg.iotservice_cococloud_send_title_api = "事件 API Key:";
+Blockly.Msg.iotservice_cococloud_send_property = "屬性名稱: ";
+Blockly.Msg.iotservice_cococloud_send_property_1 = "屬性值:";
+Blockly.Msg.iotservice_cococloud_get_title = "獲取 CocoCloud 事件中的數據";
+Blockly.Msg.iotservice_cococloud_get_api = "事件 API Key:";
+Blockly.Msg.iotservice_cococloud_get_property = "獲取 CocoCloud 事件中屬性為";
+Blockly.Msg.iotservice_cococloud_get_data = "的數據";
+
+
+
+/*
+  ____            _                 
+ / ___| _   _ ___| |_ ___ _ __ ___  
+ \___ \| | | / __| __/ _ \ '_ ` _ \ 
+  ___) | |_| \__ \ ||  __/ | | | | |
+ |____/ \__, |___/\__\___|_| |_| |_|
+        |___/                                                                    
+*/
+
+
+Blockly.Msg.system_code_path = "程式路徑爲:";
+Blockly.Msg.system_get_size = "獲模除組內剩余空間(單位: MB)";
+Blockly.Msg.system_get_mac = "獲模除組的 MAC 地址";
+Blockly.Msg.system_get_cocorobo_cid = "獲取 IoT 模組 ID";
+Blockly.Msg.iot_system_get_cocorobo_firmware_version = "獲取 IoT 當前固件版本號";
+Blockly.Msg.iot_system_delete = "刪除文件";
+Blockly.Msg.ai_system_get_cocorobo_firmware_version = "獲取 AI 當前固件版本號";
+Blockly.Msg.ai_system_get_size = "獲取記憶體內剩餘空間(單位: MB)";
+Blockly.Msg.ai_system_sd_get_size = "獲取SD卡內剩餘空間(單位: MB)";
+Blockly.Msg.ai_system_thread = "啓用多線程";
+Blockly.Msg.ai_systen_thread_val = "參數";
+Blockly.Msg.ai_system_thread_setting = "設置多綫程";
+Blockly.Msg.ai_system_thread_setDaemon = "守護綫程";
+Blockly.Msg.ai_system_thread_not_setDaemon = "非守護綫程";
+Blockly.Msg.ai_system_thread_set_setDaemon_TOOLTIP = "設置子綫程為守護綫程,需要在子綫程開啓之前進行設置";
+Blockly.Msg.ai_system_thread_set_join = "阻塞";
+Blockly.Msg.ai_systen_queue_aritem = "將變量";
+Blockly.Msg.ai_systen_queue_put = "放在隊列中";
+Blockly.Msg.ai_systen_queue_get = "得到隊列";
+Blockly.Msg.ai_systen_queue_value = "的值";
+
+/*
+  _     _____ ____    ____  _        _       
+ | |   | ____|  _ \  / ___|| |_ _ __(_)_ __  
+ | |   |  _| | | | | \___ \| __| '__| | '_ \ 
+ | |___| |___| |_| |  ___) | |_| |  | | |_) |
+ |_____|_____|____/  |____/ \__|_|  |_| .__/ 
+                                      |_|                                               
+*/
+
+
+Blockly.Msg.ledstrip_setup_text_iot = "在 IoT 模組上 "
+Blockly.Msg.ledstrip_setup_text_ai = "在 AI 模組上";
+
+Blockly.Msg.ledstrip_setup_text = "LED 燈帶";
+Blockly.Msg.ledstrip_setup = "初始化";
+Blockly.Msg.ledstrip_set_gpio = "設定燈帶引腳 #:";
+Blockly.Msg.ledstrip_set_total_led = "設定燈帶中燈的數量:";
+Blockly.Msg.ledstrip_set_light_up = "點亮 LED 燈帶";
+Blockly.Msg.ledstrip_set_no = "設定要點亮的 LED 燈序號:";
+Blockly.Msg.ledstrip_set_color = "並設定顏色為:";
+
+Blockly.Msg.ledstrip_setup_text_show_above_set = "使燈帶";
+Blockly.Msg.ledstrip_setup_text_show_above = "顯示以上效果";
+
+Blockly.Msg.ledstrip_set_brightness_setup = "設定燈帶亮度爲:";
+
+
+Blockly.Msg.Pedometer_Init = "初始化計步器";
+Blockly.Msg.Pedometer_Run = "運行計步器";
+Blockly.Msg.Pedometer_Get = "獲取計數";
+
+Blockly.Msg.Pedometer_Init_time = "時間間隔";
+Blockly.Msg.Pedometer_Init_sensitivity = "靈敏度";
+
+Blockly.Msg.ledstrip_set_brightness_1 = "設定 LED 燈帶亮度爲:";
+Blockly.Msg.ledstrip_set_brightness_after = "(亮度範圍: 0~255)";
+
+
+/*
+  ____                       
+ / ___|  ___ _ ____   _____  
+ \___ \ / _ \ '__\ \ / / _ \ 
+  ___) |  __/ |   \ V / (_) |
+ |____/ \___|_|    \_/ \___/ 
+                                                                             
+*/
+
+
+Blockly.Msg.servo_setup = "IoT 模組伺服馬達初始化";
+Blockly.Msg.servo_set_gpio = "IoT 模組設定位於引腳 #";
+Blockly.Msg.servo_rotate_to = "的伺服馬達轉動至";
+Blockly.Msg.servo_degree = "度 (0˚~180˚)";
+
+Blockly.Msg.servo_setup_ai = "伺服馬達初始化";
+Blockly.Msg.servo_set_gpio_ai = "設定位於引腳 #";
+Blockly.Msg.servo_rotate_to_ai = "的伺服馬達轉動至";
+Blockly.Msg.servo_degree_ai = "度 (0˚~180˚)";
+
+
+/*
+  __  __       _             
+ |  \/  | ___ | |_ ___  _ __ 
+ | |\/| |/ _ \| __/ _ \| '__|
+ | |  | | (_) | || (_) | |   
+ |_|  |_|\___/ \__\___/|_|   
+
+*/
+
+Blockly.Msg.x_motor_set_motor = "IoT 模組馬達驅動初始化";
+Blockly.Msg.x_motor_set_motor_turn = "IoT 模組設定馬達";
+Blockly.Msg.x_motor_set_motor_speed = "以速度";
+Blockly.Msg.x_motor_exec = "(-255~255)進行";
+Blockly.Msg.x_motor_cw = "順時針";
+Blockly.Msg.x_motor_acw = "逆時針";
+Blockly.Msg.x_motor_set_motor_turns = "轉動";
+
+Blockly.Msg.x_motor_set_motor_ai = "馬達驅動初始化";
+Blockly.Msg.x_motor_set_motor_turn_ai = "設定馬達";
+Blockly.Msg.x_motor_set_motor_speed_ai = "以速度";
+Blockly.Msg.x_motor_exec_ai = "(0~255)進行";
+Blockly.Msg.x_motor_cw_ai = "順時針";
+Blockly.Msg.x_motor_acw_ai = "逆時針";
+Blockly.Msg.x_motor_set_motor_turns_ai = "轉動";
+
+/*
+  _     _____ ____    __  __       _        _      
+ | |   | ____|  _ \  |  \/  | __ _| |_ _ __(_)_  __
+ | |   |  _| | | | | | |\/| |/ _` | __| '__| \ \/ /
+ | |___| |___| |_| | | |  | | (_| | |_| |  | |>  < 
+ |_____|_____|____/  |_|  |_|\__,_|\__|_|  |_/_/\_\
+
+*/
+
+Blockly.Msg.x_led_matrix_setup_ai = "AI 模組 LED 燈屏模組 (6×6) 初始化設定";
+Blockly.Msg.x_led_matrix_setup_ai_set_bright_1 = "設定燈屏亮度為:";
+Blockly.Msg.x_led_matrix_setup_ai_set_bright_range = "(亮度範圍: 0~255)";
+Blockly.Msg.x_led_matrix_width_ai_set_brightness_1 = "設定燈屏亮度為:";
+
+Blockly.Msg.x_led_matrix_width_ai_x = "列:";
+Blockly.Msg.x_led_matrix_width_ai_y = "欄:";
+Blockly.Msg.x_led_matrix_width_ai = "寬:";
+Blockly.Msg.x_led_matrix_height_ai = "高:";
+Blockly.Msg.x_led_matrix_color_ai = "顏色";
+Blockly.Msg.x_led_matrix_draw_title_ai = "AI 模組 LED 燈屏模組";
+
+Blockly.Msg.x_led_matrix_draw_pixel_ai = "繪製點";
+Blockly.Msg.x_led_matrix_draw_rect_ai = "繪製矩形";
+
+Blockly.Msg.x_led_matrix_parameter_color_ai = "顏色:";
+Blockly.Msg.x_led_matrix_parameter_coord_ai = "座標:";
+Blockly.Msg.x_led_matrix_parameter_size_ai = "尺寸:";
+
+Blockly.Msg.x_led_matrix_show_above_ai = "顯示圖案";
+Blockly.Msg.x_led_matrix_clear_all_ai = "清除燈屏";
+
+
+Blockly.Msg.x_led_matrix_setup_iot = "IoT 模組 LED 燈屏模組 (6×6) 初始化設定";
+Blockly.Msg.x_led_matrix_width_iot_x = "列:";
+Blockly.Msg.x_led_matrix_width_iot_y = "欄:";
+Blockly.Msg.x_led_matrix_width_iot = "寬:";
+Blockly.Msg.x_led_matrix_height_iot = "高:";
+Blockly.Msg.x_led_matrix_color_iot = "顏色";
+Blockly.Msg.x_led_matrix_draw_title_iot = "IoT 模組 LED 燈屏模組";
+Blockly.Msg.x_led_matrix_setup_iot_set_bright_1 = "設定燈屏亮度為:";
+Blockly.Msg.x_led_matrix_setup_iot_set_bright_range = "(亮度範圍: 0~255)";
+Blockly.Msg.x_led_matrix_width_iot_set_brightness_1 = "設定燈屏亮度為:";
+Blockly.Msg.x_led_matrix_setup_iot_io = "設定燈屏 引腳 # 爲:";
+
+Blockly.Msg.x_led_matrix_draw_pixel_iot = "繪製點";
+
+Blockly.Msg.x_led_matrix_parameter_color_iot = "顏色:";
+Blockly.Msg.x_led_matrix_parameter_coord_iot = "座標:";
+
+Blockly.Msg.x_led_matrix_show_above_iot = "IoT 模組 LED 燈屏模組顯示生效";
+
+
+/*
+   ____                      ____           _ 
+  / ___| __ _ _ __ ___   ___|  _ \ __ _  __| |
+ | |  _ / _` | '_ ` _ \ / _ \ |_) / _` |/ _` |
+ | |_| | (_| | | | | | |  __/  __/ (_| | (_| |
+  \____|\__,_|_| |_| |_|\___|_|   \__,_|\__,_|
+
+*/
+
+Blockly.Msg.x_gamepad_read_button_first_text_iot = "當遊戲手柄上的按鍵";
+Blockly.Msg.x_gamepad_read_button_first_text_pressed_iot = " 按下時";
+Blockly.Msg.x_gamepad_read_button_first_text_released_iot = " 鬆開時";
+Blockly.Msg.x_gamepad_read_button_status_first_text_iot = "獲取遊戲手柄上按鍵";
+Blockly.Msg.x_gamepad_read_button_status_after_text_iot = "的電平值";
+Blockly.Msg.x_gamepad_read_joystick_read_iot = "獲取遊戲手柄上搖桿";
+Blockly.Msg.x_gamepad_read_joystick_read_iot_x = "X軸方向";
+Blockly.Msg.x_gamepad_read_joystick_read_iot_y = "Y軸方向 ";
+Blockly.Msg.x_gamepad_read_joystick_read_after_iot = "的類比數值 (範圍: 0~1023)";
+Blockly.Msg.x_gamepad_read_joystick_when_iot = "當遊戲手柄上的搖桿";
+Blockly.Msg.x_gamepad_read_joystick_when_top_iot = "向上推時";
+Blockly.Msg.x_gamepad_read_joystick_when_bottom_iot = "向下推時";
+Blockly.Msg.x_gamepad_read_joystick_when_left_iot = "向左推時";
+Blockly.Msg.x_gamepad_read_joystick_when_right_iot = "向右推時";
+Blockly.Msg.x_gamepad_read_joystick_when_not_iot = "沒有動時";
+
+
+Blockly.Msg.x_gamepad_read_button_first_text_ai = "當遊戲手柄上的按鍵";
+Blockly.Msg.x_gamepad_read_button_first_text_pressed_ai = " 按下時";
+Blockly.Msg.x_gamepad_read_button_first_text_released_ai = " 鬆開時";
+Blockly.Msg.x_gamepad_read_button_status_first_text_ai = "獲取遊戲手柄上按鍵";
+Blockly.Msg.x_gamepad_read_button_status_after_text_ai = "的電平值";
+Blockly.Msg.x_gamepad_read_joystick_read_ai = "獲取遊戲手柄上搖桿";
+Blockly.Msg.x_gamepad_read_joystick_read_ai_x = "X軸方向";
+Blockly.Msg.x_gamepad_read_joystick_read_ai_y = "Y軸方向 ";
+Blockly.Msg.x_gamepad_read_joystick_read_after_ai = "的類比數值 (範圍: 0~1023)";
+Blockly.Msg.x_gamepad_read_joystick_when_ai = "當遊戲手柄上的搖桿";
+Blockly.Msg.x_gamepad_read_joystick_when_top_ai = "向上推時";
+Blockly.Msg.x_gamepad_read_joystick_when_bottom_ai = "向下推時";
+Blockly.Msg.x_gamepad_read_joystick_when_left_ai = "向左推時";
+Blockly.Msg.x_gamepad_read_joystick_when_right_ai = "向右推時";
+Blockly.Msg.x_gamepad_read_joystick_when_not_ai = "沒有動時";
+
+
+/*
+     _    ___   ____            _      
+    / \  |_ _| | __ )  __ _ ___(_) ___ 
+   / _ \  | |  |  _ \ / _` / __| |/ __|
+  / ___ \ | |  | |_) | (_| \__ \ | (__ 
+ /_/   \_\___| |____/ \__,_|___/_|\___|
+*/
+
+
+Blockly.Msg.ai_basic_button_when = "當按鈕";
+Blockly.Msg.ai_basic_pressed = "按下時";
+Blockly.Msg.ai_basic_released = "鬆開時";
+Blockly.Msg.ai_basic_led_set = "設定";
+Blockly.Msg.ai_basic_led_blue = "藍色LED";
+Blockly.Msg.ai_basic_led_red = "LED2(右側)";
+Blockly.Msg.ai_basic_led_on = "點亮";
+Blockly.Msg.ai_basic_led_off = "熄滅";
+Blockly.Msg.ai_basic_rgb_set_on = "點亮 RGB 燈,燈顏色爲";
+Blockly.Msg.ai_basic_rgb_set_off = "熄滅 RGB 燈";
+
+Blockly.Msg.ai_basic_led_analog_set = "設定";
+Blockly.Msg.ai_basic_led_analog_led1 = "LED1";
+Blockly.Msg.ai_basic_led_analog_led2 = "LED2";
+Blockly.Msg.ai_basic_led_analog_brightness_text = "的燈光亮度為";
+Blockly.Msg.ai_basic_led_analog_range_text = "(數值範圍: 0~100)";
+/*
+     _    ___   ___                              ____                              
+    / \  |_ _| |_ _|_ __ ___   __ _  __ _  ___  |  _ \ _ __ ___   ___ ___  ___ ___ 
+   / _ \  | |   | || '_ ` _ \ / _` |/ _` |/ _ \ | |_) | '__/ _ \ / __/ _ \/ __/ __|
+  / ___ \ | |   | || | | | | | (_| | (_| |  __/ |  __/| | | (_) | (_|  __/\__ \__ \
+ /_/   \_\___| |___|_| |_| |_|\__,_|\__, |\___| |_|   |_|  \___/ \___\___||___/___/
+                                    |___/                                          
+*/
+
+
+Blockly.Msg.image_process_lcd_init = "LCD 螢幕初始化";
+Blockly.Msg.image_process_lcd_direction = "設置螢幕方向";
+Blockly.Msg.image_process_lcd_landscape_screen = "橫屏";
+Blockly.Msg.image_process_lcd_vertical_screen = "豎屏";
+Blockly.Msg.image_process_text_let_canvas = "將畫布";
+Blockly.Msg.image_process_text_image_canvas = "圖片化";
+Blockly.Msg.image_process_text_let_canvas_filled_with_color = "填滿";
+Blockly.Msg.image_process_text_on_canvas = "在畫布";
+Blockly.Msg.image_process_text_on_draw = "上繪製";
+Blockly.Msg.image_text_on_draw = "繪製";
+Blockly.Msg.image_process_text_set_canvas_setup = "設定畫布";
+Blockly.Msg.image_process_draw_qrcode = "二維碼";
+Blockly.Msg.image_process_draw_qr_code_size = "二維碼大小";
+
+Blockly.Msg.image_process_text_filled = "實心";
+Blockly.Msg.image_process_text_stroked = "空心";
+
+Blockly.Msg.image_process_statistical_chart_bar = "條形";
+Blockly.Msg.image_process_statistical_chart_broken_line = "折線";
+Blockly.Msg.image_process_statistical_chart_sector = "扇形";
+
+Blockly.Msg.image_process_sensor = "感應器  ";
+Blockly.Msg.image_process_temperature = "溫度";
+Blockly.Msg.image_process_humidity = "濕度";
+Blockly.Msg.image_process_Ray_value = "光線值";
+Blockly.Msg.image_process_temperature_range = "範圍  ";
+Blockly.Msg.image_process_nothing = "不定義範圍(溫度除外)";
+
+Blockly.Msg.image_process_interface = "介面  ";
+Blockly.Msg.ai_speech_recognition_setup_set_english = "英文";
+Blockly.Msg.ai_speech_recognition_setup_set_simplified_chinese = "中文";
+Blockly.Msg.ai_speech_recognition_setup_set_traditional_chinese = "繁體中文";
+
+Blockly.Msg.image_process_text_start_coord_as = "起始點座標為:";
+Blockly.Msg.image_process_text_start_coord = "設定起始點座標:";
+Blockly.Msg.image_process_text_end_coord = "設定結束點座標:";
+Blockly.Msg.image_process_text_size = "尺寸:";
+Blockly.Msg.image_process_text_color = "顏色:";
+Blockly.Msg.image_process_background_color = "背景顏色:";
+Blockly.Msg.image_process_text_thick = "厚度:";
+Blockly.Msg.image_process_text_radius = "半徑:";
+Blockly.Msg.image_process_text_content = "內容";
+
+Blockly.Msg.image_process_statistical_chart_content = "獲取需繪圖的數據";
+Blockly.Msg.image_process_statistical_chart_y_property = "定義 Y 軸爲";
+
+Blockly.Msg.image_process_pixtovec_text_first = "進行";
+Blockly.Msg.image_process_pixtovec_v2p = "矢量轉畫素";
+Blockly.Msg.image_process_pixtovec_p2v = "畫素轉矢量";
+Blockly.Msg.image_process_pixtovec_conversion = "轉換";
+Blockly.Msg.image_process_color_mode_gray = "灰度模式";
+Blockly.Msg.image_process_color_mode_rgb = "彩色模式";
+Blockly.Msg.image_process_imgcut_cutting = "進行裁剪處理";
+Blockly.Msg.image_process_imgcut_start_coord = "裁剪起始座標:";
+Blockly.Msg.image_process_imgcut_size = "裁剪尺寸:";
+Blockly.Msg.image_process_img_save = "保存至本地";
+Blockly.Msg.image_process_img_save_quality = "設定圖像壓縮質量:";
+Blockly.Msg.image_process_color_invert = "進行顏色反轉";
+Blockly.Msg.image_process_resize_to = "調整尺寸至";
+Blockly.Msg.image_process_color_scheme_convert = "轉換爲";
+Blockly.Msg.image_process_color_scheme_bw = "黑白";
+Blockly.Msg.image_process_color_scheme_rgb = "彩色";
+Blockly.Msg.image_process_draw_cross_title = "上繪製十字標";
+Blockly.Msg.image_process_draw_cross_centerpos = "中心座標:";
+Blockly.Msg.image_process_draw_cross_length = "十字線延伸長度:";
+Blockly.Msg.image_process_draw_cross_thick = "十字線厚度:";
+Blockly.Msg.image_process_draw_cross_color = "顏色:";
+Blockly.Msg.image_process_draw_arrow_title = "上繪製箭頭";
+Blockly.Msg.image_process_draw_arrow_start = "開始座標:";
+Blockly.Msg.image_process_draw_arrow_end = "結束座標:";
+Blockly.Msg.image_process_draw_arrow_color = "顏色:";
+Blockly.Msg.image_process_draw_arrow_thick = "厚度:";
+Blockly.Msg.image_process_draw_rectangle_text = "矩形";
+Blockly.Msg.image_process_draw_circle_text = "圓形";
+Blockly.Msg.image_process_draw_ellipse_text = "橢圓";
+
+Blockly.Msg.image_process_draw_image_title = "上繪製圖片";
+Blockly.Msg.image_process_draw_image_title_image_path = "設定圖片文件路徑:";
+Blockly.Msg.image_process_draw_image_scale_x = "設定 X 方向的縮放比例:";
+Blockly.Msg.image_process_draw_image_scale_y = "設定 Y 方向的縮放比例:";
+
+Blockly.Msg.image_process_draw_sensor_image_title = "上繪製相機捕捉的圖像";
+Blockly.Msg.image_process_draw_sensor_image_path = "設定圖像源:";
+
+Blockly.Msg.image_process_draw_circle_text_start = "圓心坐標";
+Blockly.Msg.image_process_draw_text_font_size = "字體大小:(由1至3之間的整數)";
+Blockly.Msg.image_process_draw_text_if_monospace = "是否等寬字體";
+Blockly.Msg.image_process_draw_text = "字串";
+Blockly.Msg.image_process_draw_statistical_chart = "統計圖";
+Blockly.Msg.image_process_draw_characters = "漢字字元";
+Blockly.Msg.image_process_draw_line = "直線";
+Blockly.Msg.image_process_create_blank_canvas = "創建空白畫布";
+Blockly.Msg.image_process_create_image_canvas = "創建圖像畫布";
+Blockly.Msg.image_process_create_image_canvas_path = "圖像路徑: ";
+Blockly.Msg.image_process_show_canvas = "顯示畫布";
+Blockly.Msg.image_process_clear_canvas_1 = "清除畫布";
+Blockly.Msg.image_process_clear_canvas_2 = "中的所有內容";
+Blockly.Msg.image_process_set_lcd_rotation = "旋轉至";
+Blockly.Msg.image_process_set_lcd_mirror_flip = "將 LCD 螢幕進行鏡面翻轉";
+Blockly.Msg.image_process_set_filled_screen_color = "將 LCD 螢幕填充顏色爲";
+Blockly.Msg.image_process_set_filled_screen_color_red = "紅色";
+Blockly.Msg.image_process_set_filled_screen_color_green = "綠色";
+Blockly.Msg.image_process_set_filled_screen_color_blue = "藍色";
+Blockly.Msg.image_process_set_filled_screen_color_purple = "紫色";
+Blockly.Msg.image_process_set_filled_screen_color_cyan = "青色";
+Blockly.Msg.image_process_set_filled_screen_color_orange = "橙色";
+Blockly.Msg.image_process_set_filled_screen_color_yellow = "黃色";
+Blockly.Msg.image_process_set_filled_screen_color_black = "黑色";
+Blockly.Msg.image_process_set_filled_screen_color_white = "白色";
+Blockly.Msg.image_process_clear_lcd = "清除螢幕";
+Blockly.Msg.image_process_rgb_r = "紅";
+Blockly.Msg.image_process_rgb_g = "綠";
+Blockly.Msg.image_process_rgb_b = "藍";
+Blockly.Msg.image_process_xy_x = "X";
+Blockly.Msg.image_process_xy_y = "Y";
+Blockly.Msg.image_process_wh_width = "寬";
+Blockly.Msg.image_process_wh_height = "高";
+Blockly.Msg.image_process_lcd_show_text = "在 LCD 螢幕上顯示字串";
+Blockly.Msg.image_process_lcd_show_text_color = "字串顏色";
+Blockly.Msg.image_process_lcd_show_text_bg_color = "字串背景顏色";
+Blockly.Msg.image_process_lcd_show_text_color_red = "紅色";
+Blockly.Msg.image_process_lcd_show_text_color_green = "綠色";
+Blockly.Msg.image_process_lcd_show_text_color_blue = "藍色";
+Blockly.Msg.image_process_lcd_show_text_color_purple = "紫色";
+Blockly.Msg.image_process_lcd_show_text_color_cyan = "青色";
+Blockly.Msg.image_process_lcd_show_text_color_orange = "橙色";
+Blockly.Msg.image_process_lcd_show_text_color_yellow = "黃色";
+Blockly.Msg.image_process_lcd_show_text_color_black = "黑色";
+Blockly.Msg.image_process_lcd_show_text_color_white = "白色";
+Blockly.Msg.image_process_get_statistics_to_canvas = "獲取對畫布";
+Blockly.Msg.image_process_get_statistics_get_analysis = "進行顏色通道信息分析的結果";
+Blockly.Msg.image_process_get_statistics_start_coord = "設定分析區域的起始座標:";
+Blockly.Msg.image_process_get_statistics_size = "設定分析區域的尺寸:";
+Blockly.Msg.image_process_get_statistics_boxes = "設定直方圖通道的箱數:";
+Blockly.Msg.image_process_lab_rgb_conversion_exec = "執行顏色制式轉換";
+Blockly.Msg.image_process_lab_rgb_conversion_torgb = "LAB 轉 RGB";
+Blockly.Msg.image_process_lab_rgb_conversion_tolab = "RGB 轉 LAB";
+Blockly.Msg.image_process_lab_rgb_conversion_tuple = "設定要轉換的顏色元組爲:";
+Blockly.Msg.image_process_rgb_grayscale_conversion_exec = "執行顏色制式轉換";
+Blockly.Msg.image_process_rgb_grayscale_conversion_torgb = "灰度轉 RGB";
+Blockly.Msg.image_process_rgb_grayscale_conversion_togray = "RGB 轉灰度";
+Blockly.Msg.image_process_rgb_grayscale_conversion_set = "設定要轉換的顏色元組或灰度值爲:";
+Blockly.Msg.image_lcd_set_font = "設置字體爲";
+
+
+/*
+     _    ___    ____                               
+    / \  |_ _|  / ___|__ _ _ __ ___   ___ _ __ __ _ 
+   / _ \  | |  | |   / _` | '_ ` _ \ / _ \ '__/ _` |
+  / ___ \ | |  | |__| (_| | | | | | |  __/ | | (_| |
+ /_/   \_\___|  \____\__,_|_| |_| |_|\___|_|  \__,_|
+
+*/
+
+
+Blockly.Msg.ai_camera_camera_init = "相機初始化";
+Blockly.Msg.ai_camera_camera_set_size = "設定捕捉影像的尺寸爲:";
+
+Blockly.Msg.ai_camera_camera_fit_set = "設定相機捕捉的畫面";
+Blockly.Msg.ai_camera_camera_fit_to = "的尺寸為";
+Blockly.Msg.ai_camera_camera_fit_1 = "LCD 螢幕 (240*240px)";
+Blockly.Msg.ai_camera_camera_fit_2 = "用於 YOLO 模型推理 (224*224px)";
+
+Blockly.Msg.ai_camera_camera_color_mode = "設定捕捉的影像顏色模式爲:";
+Blockly.Msg.ai_camera_camera_color_mode_rgb = "彩色";
+Blockly.Msg.ai_camera_camera_color_mode_bw = "黑白";
+Blockly.Msg.ai_camera_windowing_resize = "將相機捕捉到的圖像尺寸調整至";
+Blockly.Msg.ai_camera_windowing_w = "寬:";
+Blockly.Msg.ai_camera_windowing_h = "高:";
+Blockly.Msg.ai_camera_windowing_unit = " (單位: px)";
+Blockly.Msg.ai_camera_snapshot = "獲取相機捕捉的圖像";
+Blockly.Msg.ai_camera_enable = "啓用";
+Blockly.Msg.ai_camera_disable = "關閉";
+Blockly.Msg.ai_camera_set_vflip = "設定相機圖像垂直翻轉";
+Blockly.Msg.ai_camera_set_hmirror = "設定相機圖像水平鏡像";
+Blockly.Msg.ai_camera_set_auto_whitebal = "設定相機圖像自動白平衡";
+Blockly.Msg.ai_camera_set_auto_gain = "設定相機圖像自動增益";
+Blockly.Msg.ai_camera_set_auto_exposure = "設定相機圖像自動曝光";
+Blockly.Msg.ai_camera_set_contrast_to_value = "設定相機圖像對比度爲:";
+Blockly.Msg.ai_camera_set_brightness_to_value = "設定相機圖像亮度爲:";
+Blockly.Msg.ai_camera_set_saturation_value = "設定相機圖像色彩飽和度爲:";
+Blockly.Msg.ai_camera_set_range = "(範圍: -3至3)";
+
+Blockly.Msg.ai_camera_set_lens_corr = "廣角鏡頭畫面糾正";
+
+Blockly.Msg.ai_camera_bcs_set_text = "設定相機圖像的";
+Blockly.Msg.ai_camera_bcs_contrast = "對比度";
+Blockly.Msg.ai_camera_bcs_brightness = "亮度";
+Blockly.Msg.ai_camera_bcs_saturation = "色彩飽和度";
+Blockly.Msg.ai_camera_bcs_as = "爲";
+Blockly.Msg.ai_camera_bcs_set_text_2 = "設定相機圖像";
+Blockly.Msg.ai_camera_bcs_vflip = "垂直翻轉";
+Blockly.Msg.ai_camera_bcs_hmirror = "水平鏡像";
+Blockly.Msg.ai_camera_bcs_wb = "自動白平衡";
+Blockly.Msg.ai_camera_bcs_g = "自動增益";
+Blockly.Msg.ai_camera_bcs_e = "自動曝光";
+Blockly.Msg.ai_camera_bcs_as_2 = "爲";
+Blockly.Msg.ai_camera_bcs_status = "狀態";
+
+
+/*
+     _    ___  __     ___     _             
+    / \  |_ _| \ \   / (_)___(_) ___  _ __  
+   / _ \  | |   \ \ / /| / __| |/ _ \| '_ \ 
+  / ___ \ | |    \ V / | \__ \ | (_) | | | |
+ /_/   \_\___|    \_/  |_|___/_|\___/|_| |_|
+                                            
+*/
+
+
+Blockly.Msg.ai_vision_get_canvas = "獲取畫布";
+Blockly.Msg.ai_vision_from_canvas = "從畫布";
+Blockly.Msg.ai_vision_from = "從";
+
+Blockly.Msg.ai_vision_color_analyze_get_result = "中指定區域的顏色分析結果 (RGB)";
+Blockly.Msg.ai_vision_color_analyze_start_coord = "設定分析區域的起始座標:";
+Blockly.Msg.ai_vision_color_analyze_size = "設定分析區域的尺寸:";
+Blockly.Msg.ai_vision_find_blobs_color_region = "尋找指定的顏色色塊";
+Blockly.Msg.ai_vision_find_lines_color_region = "尋找指定的顏色綫";
+Blockly.Msg.ai_vision_find_lines_color_region_result = "獲取尋找綫的結果";
+Blockly.Msg.ai_vision_find_blobs_color_threshold = "設定要追蹤的顏色閾值:";
+Blockly.Msg.ai_vision_find_blobs_start_coord = "設定檢測區域的起始座標:";
+Blockly.Msg.ai_vision_find_blobs_size = "設定檢測區域的尺寸:";
+Blockly.Msg.ai_vision_find_blobs_region_threshold = "設定邊界框區域閾值";
+Blockly.Msg.ai_vision_find_blobs_pixel_threshold = "設定畫素數閾值";
+Blockly.Msg.ai_vision_find_blobs_filtered_region = "是否合併所有沒有被過濾掉的色塊 ";
+Blockly.Msg.ai_vision_get_blobs_result = "獲取追蹤指定顏色的識別結果";
+Blockly.Msg.ai_vision_detection_box_x = "檢測框起點 X 軸座標";
+Blockly.Msg.ai_vision_detection_box_y = "檢測框起點 Y 軸座標";
+Blockly.Msg.ai_vision_detection_box_width = "檢測框寬度";
+Blockly.Msg.ai_vision_detection_box_height = "檢測框高度";
+Blockly.Msg.ai_vision_detection_box_pixels = "屬於色塊一部分的畫素數量";
+Blockly.Msg.ai_vision_detection_box_cx = "檢測框的中心點 X 軸座標";
+Blockly.Msg.ai_vision_detection_box_cy = "檢測框的中心點 Y 軸座標";
+Blockly.Msg.ai_vision_detection_box_degree = "檢測框的旋轉角度";
+Blockly.Msg.ai_vision_detection_box_total = "總數量";
+Blockly.Msg.ai_vision_find_blobs_margin = "邊界矩形的大小";
+Blockly.Msg.ai_vision_detection_color_threshold_set = "獲取用於顏色追蹤的預設顏色:";
+Blockly.Msg.ai_vision_detection_color_threshold_set_black = "黑色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_white = "白色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_red = "亮紅色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_green = "綠色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_blue = "浅藍色";
+Blockly.Msg.ai_vision_detection_color_threshold_set_orange = "橘色";
+
+Blockly.Msg.ai_vision_qrcode_detected_result = "中 QR 碼的檢測結果";
+Blockly.Msg.ai_vision_apriltag_detected_result = "中 AprilTag 的檢測結果";
+Blockly.Msg.ai_vision_datamatrices_detected_result = "中數據矩陣 (Data Matrix) 的檢測結果";
+Blockly.Msg.ai_vision_barcode_detected_result = "中條形碼的檢測結果";
+
+Blockly.Msg.ai_vision_qrcode_get_result = "獲取檢測 QR 碼的";
+Blockly.Msg.ai_vision_apriltag_get_result = "獲取檢測 AprilTag 的";
+Blockly.Msg.ai_vision_data_matrices_get_result = "獲取檢測數據矩陣 (Data Matrix) 的";
+Blockly.Msg.ai_vision_barcode_matrices_get_result = "獲取檢測條形碼的";
+
+Blockly.Msg.ai_vision_pattern_detection_content = "源文本";
+Blockly.Msg.ai_vision_pattern_detection_type = "數據類型";
+Blockly.Msg.ai_vision_pattern_detection_x = "邊界框的 X 軸座標";
+Blockly.Msg.ai_vision_pattern_detection_y = "邊界框的 Y 軸座標";
+Blockly.Msg.ai_vision_pattern_detection_w = "邊界框的寬度";
+Blockly.Msg.ai_vision_pattern_detection_h = "邊界框的高度";
+Blockly.Msg.ai_vision_pattern_distance = "距離";
+Blockly.Msg.ai_vision_pattern_detection_type_id = "數字 ID";
+Blockly.Msg.ai_vision_pattern_detection_type_family = "數字家庭";
+Blockly.Msg.ai_vision_pattern_detection_rows = "欄數";
+Blockly.Msg.ai_vision_pattern_detection_cols = "列數";
+Blockly.Msg.ai_vision_pattern_detection_can_tolerate_count = "所能容納的字元數量";
+Blockly.Msg.ai_vision_pattern_detection_can_not_tolerate_count = "未使用的字元數量";
+
+Blockly.Msg.ai_vision_find_circle = "中尋找圓形";
+Blockly.Msg.ai_vision_find_circle_start_coord = "設定檢測區域的起始座標:";
+Blockly.Msg.ai_vision_find_circle_region_size = "設定檢測區域的尺寸:";
+Blockly.Msg.ai_vision_find_circle_hoffman_threshold = "設定從霍夫變換中監測到圓的閾值:";
+Blockly.Msg.ai_vision_find_circle_merge_x = "設定所檢測的圓的合併 (x):";
+Blockly.Msg.ai_vision_find_circle_merge_y = "設定所檢測的圓的合併 (y):";
+Blockly.Msg.ai_vision_find_circle_merge_r = "設定所檢測的圓的合併 (r):";
+Blockly.Msg.ai_vision_find_circle_min_radius = "設定檢測到的最小圓半徑:";
+Blockly.Msg.ai_vision_find_circle_max_radius = "設定檢測到的最大圓半徑:";
+Blockly.Msg.ai_vision_find_circle_step_radius = "設定逐步檢測半徑:";
+Blockly.Msg.ai_vision_find_circle_detected_result = "獲取尋找圓形的結果";
+Blockly.Msg.ai_vision_find_circle_detected_x = "檢測到圓的 X 軸座標";
+Blockly.Msg.ai_vision_find_circle_detected_y = "檢測到圓的 Y 軸座標";
+Blockly.Msg.ai_vision_find_circle_detected_radius = "檢測到圓的半徑";
+
+
+Blockly.Msg.ai_vision_find_line = "中尋找直線";
+Blockly.Msg.ai_vision_find_line_start_coord = "設定檢測區域的起始座標:";
+Blockly.Msg.ai_vision_find_line_size = "設定檢測區域的尺寸:";
+Blockly.Msg.ai_vision_find_line_hoffman_threshold = "設定從霍夫變換中監測到直線的閾值:";
+Blockly.Msg.ai_vision_find_line_merge_theta = "設定所監測的直線的合併值 (theta):";
+Blockly.Msg.ai_vision_find_line_merge_rho = "設定所監測的直線的合併值 (rho):";
+Blockly.Msg.ai_vision_find_line_detected_result = "獲取尋找直線的結果";
+Blockly.Msg.ai_vision_find_line_detected_start_x = "檢測到直線起始點的 X 軸座標";
+Blockly.Msg.ai_vision_find_line_detected_start_y = "檢測到直線起始點的 Y 軸座標";
+Blockly.Msg.ai_vision_find_line_detected_end_x = "檢測到直線結束點的 X 軸座標";
+Blockly.Msg.ai_vision_find_line_detected_end_y = "檢測到直線結束點的 Y 軸座標";
+Blockly.Msg.ai_vision_find_line_detected_length = "檢測到直線的長度";
+Blockly.Msg.ai_vision_find_line_detected_angle = "檢測到直線的角度";
+
+Blockly.Msg.ai_vision_find_rect = "中尋找矩形";
+Blockly.Msg.ai_vision_find_rect_start_coord = "設定檢測區域的起始座標:";
+Blockly.Msg.ai_vision_find_rect_region_size = "設定檢測區域的尺寸:";
+Blockly.Msg.ai_vision_find_rect_bounding_threshold = "設定邊界閾值大小:";
+Blockly.Msg.ai_vision_find_rect_detected_result = "獲取尋找矩形的結果";
+Blockly.Msg.ai_vision_find_rect_detected_tuple = "檢測到矩形的座標及尺寸元組";
+Blockly.Msg.ai_vision_find_rect_detected_corners = "檢測到矩形的四個角的座標位置";
+Blockly.Msg.ai_vision_find_rect_detected_x = "檢測到矩形的起始點的 X 軸座標";
+Blockly.Msg.ai_vision_find_rect_detected_y = "檢測到矩形的起始點的 Y 軸座標";
+Blockly.Msg.ai_vision_find_rect_detected_w = "檢測到矩形的寬度";
+Blockly.Msg.ai_vision_find_rect_detected_h = "檢測到矩形的高度";
+
+Blockly.Msg.ai_vision_get_histogram_get = "獲取從畫布";
+Blockly.Msg.ai_vision_get_histogram_compute = "中進行標準化直方圖運算的結果";
+Blockly.Msg.ai_vision_get_histogram_region = "設定顏色追蹤區域範圍:";
+Blockly.Msg.ai_vision_get_histogram_region_xy = "區域座標:";
+Blockly.Msg.ai_vision_get_histogram_region_wh = "區域尺寸:";
+Blockly.Msg.ai_vision_get_histogram_details_1 = "從直方圖計算結果";
+Blockly.Msg.ai_vision_get_histogram_details_get = "獲取直方圖頻道的 CDF 計算值 (%)";
+
+
+Blockly.Msg.ai_vision_get_histogram_percentile_1 = "從直方圖計算結果獲取的百分比值中";
+Blockly.Msg.ai_vision_get_histogram_percentile_2 = "獲取";
+Blockly.Msg.ai_vision_get_histogram_percentile_3 = "灰度百分比值";
+Blockly.Msg.ai_vision_get_histogram_percentile_4 = "RGB565 LAB 的L通道的百分比值";
+Blockly.Msg.ai_vision_get_histogram_percentile_5 = "RGB565 LAB 的A通道的百分比值";
+Blockly.Msg.ai_vision_get_histogram_percentile_6 = "RGB565 LAB 的B通道的百分比值";
+
+Blockly.Msg.ai_vision_canvas_area_tuple = "建立區域元組";
+Blockly.Msg.ai_vision_canvas_area_tuple_xy = "設定起始座標:";
+Blockly.Msg.ai_vision_canvas_area_tuple_wh = "設定尺寸:";
+Blockly.Msg.ai_vision_lane_tracking_setup = "道路循線識別初始化";
+Blockly.Msg.ai_vision_lane_tracking_setup_threshold = "設定要追蹤的顏色";
+Blockly.Msg.ai_vision_lane_tracking_setup_l = "設定左側識別區域:";
+Blockly.Msg.ai_vision_lane_tracking_setup_r = "設定右側識別區域:";
+Blockly.Msg.ai_vision_lane_tracking_setup_axis = "設定中軸線位置:";
+Blockly.Msg.ai_vision_lane_tracking_run = "執行道路循線識別";
+Blockly.Msg.ai_vision_lane_tracking_run_get = "從道路循線識別的結果中獲取";
+Blockly.Msg.ai_vision_lane_tracking_run_ld = "左側區域檢測結果";
+Blockly.Msg.ai_vision_lane_tracking_run_lv = "左側區域檢測偏移距離";
+Blockly.Msg.ai_vision_lane_tracking_run_rd= "右側區域檢測結果";
+Blockly.Msg.ai_vision_lane_tracking_run_rv = "右側區域檢測偏移距離";
+
+/*
+     _    ___   __  __ _                      _                      
+    / \  |_ _| |  \/  (_) ___ _ __ ___  _ __ | |__   ___  _ __   ___ 
+   / _ \  | |  | |\/| | |/ __| '__/ _ \| '_ \| '_ \ / _ \| '_ \ / _ \
+  / ___ \ | |  | |  | | | (__| | | (_) | |_) | | | | (_) | | | |  __/
+ /_/   \_\___| |_|  |_|_|\___|_|  \___/| .__/|_| |_|\___/|_| |_|\___|
+                                       |_|                           
+ */
+
+
+Blockly.Msg.ai_microphone_init = "咪高峰初始化";
+Blockly.Msg.ai_microphone_start_spectrum_analyze = "開始讀取音頻頻譜";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result = "獲取咪高峰採集的音頻頻譜";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_1 = "低音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_2 = "低音 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_3 = "中低音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_4 = "中低音 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_5 = "中高音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_6 = "中高音 2";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_7 = "高音 1";
+Blockly.Msg.ai_microphone_get_spectrum_analyze_result_8 = "高音 2";
+Blockly.Msg.ai_mphone_Record_audio_init = "咪高峰錄製音頻初始化";
+Blockly.Msg.ai_mphone_Record_audio_start = "開始錄製音頻";
+Blockly.Msg.ai_mphone_Record_audio_start_path = "設定音頻保存路徑:";
+Blockly.Msg.ai_mphone_Record_audio_start_time = "設定錄製的時間(s):";
+Blockly.Msg.ai_audio_stop_recording = "停止錄製音頻";
+
+/*
+     _    ___      _             _ _       
+    / \  |_ _|    / \  _   _  __| (_) ___  
+   / _ \  | |    / _ \| | | |/ _` | |/ _ \ 
+  / ___ \ | |   / ___ \ |_| | (_| | | (_) |
+ /_/   \_\___| /_/   \_\__,_|\__,_|_|\___/
+*/
+
+
+Blockly.Msg.ai_audio_play_music_file = "播放音訊檔案(單個循環)";
+Blockly.Msg.ai_audio_play_music_file_list_loop = "播放音訊檔案(順序播放)";
+Blockly.Msg.ai_audio_play_music_file_list_random = "播放音訊檔案(隨機播放)";
+Blockly.Msg.ai_audio_play_music_file_set_vol = "設定音量爲:";
+Blockly.Msg.ai_audio_play_music_file_set_file_path = "加载音訊檔案,路徑为:";
+Blockly.Msg.ai_audio_play_music_file_set_files_list = "音訊檔案陣列:";
+Blockly.Msg.ai_audio_play_music_file_set_first_index = "起始位置:";
+Blockly.Msg.ai_audio_files_list_set_file_path = "當前路徑:";
+Blockly.Msg.ai_audio_get_play_status = "獲取音訊檔案播放狀態";
+Blockly.Msg.ai_audio_end_play = "結束音訊檔案播放";
+Blockly.Msg.ai_audio_start_play = "播放音訊檔案";
+Blockly.Msg.ai_audio_init = "喇叭初始化";
+Blockly.Msg.ai_audio_set_music_vol = "設定音訊檔案播放音量爲:";
+Blockly.Msg.ai_audio_files_list = "獲取音頻檔案陣列";
+
+Blockly.Msg.ai_speech_recognition_setup = "語音識別初始化";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi = "設定環境噪音靈敏度為:";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_normal = "正常";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_high = "高";
+Blockly.Msg.ai_speech_recognition_setup_set_sensi_ehigh = "很高";
+Blockly.Msg.ai_speech_recognition_start_recording = "開始錄製語音片段";
+Blockly.Msg.ai_speech_recognition_start_recording_clip_text = "設定要識別的語音片段個數為:";
+Blockly.Msg.ai_speech_recognition_start_recording_clip_note = "(不得超過 6 個片段)";
+Blockly.Msg.ai_speech_recognition_start_recording_take_text = "設定每個片段錄製的次數為:";
+Blockly.Msg.ai_speech_recognition_start_recording_take_note = "(不得超過 4 次)";
+Blockly.Msg.ai_speech_recognition_start_recognizing = "開始進行語音識別";
+Blockly.Msg.ai_speech_recognition_any_result_text = "當語音識別獲得任意結果的時候";
+Blockly.Msg.ai_speech_recognition_any_result_text_do = "執行";
+Blockly.Msg.ai_speech_recognition_get_result = "語音識別的結果為第 ";
+Blockly.Msg.ai_speech_recognition_get_result_after = "條片段";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_setup = "語音轉拼音初始化";
+Blockly.Msg.ai_speech_recognition_setup_pinyin = "設置拼音";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_get_result = "獲取語音轉拼音的結果";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param = "設定拼音識別參數";
+Blockly.Msg.ai_speech_recognition_phonetic_to_pinyin_set_param_1 = "設定優先級";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_start_recognition = "開始語音拼音識別";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_stop_recognition = "終止語音拼音識別";
+Blockly.Msg.speech_recognition_phonetic_to_pinyin_pause_recognition = "清除語音拼音識別";
+Blockly.Msg.speech_recognition_number_of_recordings = "錄製片段次數";
+Blockly.Msg.speech_recognition_In_recording = "錄製片段中";
+Blockly.Msg.speech_recognition_Recorded_successfully = "錄製片段成功";
+Blockly.Msg.speech_recognition_Start_speech_recognition = "錄製語音片段並識別顯示在";
+Blockly.Msg.speech_recognition_Start_speech_recognition_title = "錄製語音片段並識別顯示";
+Blockly.Msg.speech_recognition_Speech_recognition_result = "語音識別結果";
+Blockly.Msg.speech_recognition_Clean_up_the_last_study_result = "清理上一次學習結果";
+Blockly.Msg.speech_recognition_Recognition_success = "識別成功";
+Blockly.Msg.speech_recognition_Recognition_fail = "識別失敗";
+
+/*
+     _    ___  __     ___     _            
+    / \  |_ _| \ \   / (_) __| | ___  ___  
+   / _ \  | |   \ \ / /| |/ _` |/ _ \/ _ \ 
+  / ___ \ | |    \ V / | | (_| |  __/ (_) |
+ /_/   \_\___|    \_/  |_|\__,_|\___|\___/ 
+*/
+
+
+Blockly.Msg.ai_video_start_recording = "開始錄製影片";
+Blockly.Msg.ai_video_start_recording_file_path = "設定影片保存路徑:";
+Blockly.Msg.ai_video_start_recording_width = "設定影片寬度 (px):";
+Blockly.Msg.ai_video_start_recording_height = "設定影片高度 (px):";
+Blockly.Msg.ai_video_to_canvas = "對畫布";
+Blockly.Msg.ai_video_record = "進行錄製";
+Blockly.Msg.ai_video_stop_recording = "停止錄製影片";
+Blockly.Msg.ai_video_play_video = "播放影片檔案";
+Blockly.Msg.ai_video_play_video_2 = "註:僅支持尺寸爲 320*240 的影片";
+Blockly.Msg.ai_video_play_video_file_path = "影片路徑:";
+Blockly.Msg.ai_video_stop_video_playing = "結束影片檔案播放";
+Blockly.Msg.ai_video_get_video_playing_status = "獲取影片播放的狀態";
+Blockly.Msg.ai_video_recording_and_save = "錄製影片檔案並保存";
+Blockly.Msg.ai_video_set_play = "影片檔案播放";
+Blockly.Msg.ai_video_set_play_stats = "視頻屬性";
+Blockly.Msg.ai_video_set_play_init = "視頻初始化";
+
+/*
+     _    ___   __  __           _      _     
+    / \  |_ _| |  \/  | ___   __| | ___| |___ 
+   / _ \  | |  | |\/| |/ _ \ / _` |/ _ \ / __|
+  / ___ \ | |  | |  | | (_) | (_| |  __/ \__ \
+ /_/   \_\___| |_|  |_|\___/ \__,_|\___|_|___/
+*/
+
+
+Blockly.Msg.ai_models_from = "從";
+
+Blockly.Msg.ai_models_init_title = "初始化預設模型:";
+Blockly.Msg.ai_model_allinit_language = "設定語言爲:";
+Blockly.Msg.ai_models_load_title = "加載預設模型:";
+Blockly.Msg.ai_models_init_hand_written_model = "手寫數字識別模型";
+Blockly.Msg.ai_models_init_object_model = "常見物體檢測模型";
+Blockly.Msg.ai_models_init_guesswork_model = "猜拳識別模型";
+Blockly.Msg.ai_models_guesswork_model_if = "檢測到猜拳結果";
+Blockly.Msg.ai_models_guesswork_model_get = "獲取檢測到猜拳結果的";
+Blockly.Msg.ai_model_guesswork_look_attribute = "猜拳手勢屬性";
+Blockly.Msg.ai_models_init_object_model_title = "常見物體檢測模型(飛機、自行車、鳥,船,瓶子,公共汽車,汽車,貓,椅子,牛,餐桌,狗,馬,摩托車,人,盆栽,羊,沙發,火車,電視監視器)";
+Blockly.Msg.ai_models_init_face_model = "人臉檢測模型";
+Blockly.Msg.ai_camera_camera_fit_set1 = "設定相機捕捉的畫面爲:";
+Blockly.Msg.ai_models_init_source = "設定要檢測的圖像源爲:";
+Blockly.Msg.ai_models_init_source_written = "設置要檢測手寫數字識別的圖像源爲::";
+Blockly.Msg.ai_models_hand_written_model_result = "獲取手寫數字檢測模型的檢測結果";
+Blockly.Msg.ai_models_hand_written_model_number = "獲取當前檢測到的數字 (0至9)";
+Blockly.Msg.ai_models_hand_written_model_confidence = "獲取當前檢測到的數字的可信度 (%)";
+Blockly.Msg.ai_model_digital = "待測數字屬性";
+Blockly.Msg.ai_model_digital_attribute = "檢測到待測數字";
+Blockly.Msg.ai_models_object_model_if = "檢測到待測物體";
+Blockly.Msg.ai_models_object_model_get = "獲取檢測到的待測物體的";
+Blockly.Msg.ai_model_look_attribute = "待測物體屬性";
+Blockly.Msg.ai_models_object_model_name = "物體名稱";
+Blockly.Msg.ai_models_object_model_x = "檢測框起點 X 軸座標";
+Blockly.Msg.ai_models_object_model_y = "檢測框起點 Y 軸座標";
+Blockly.Msg.ai_models_object_model_w = "檢測框終點 X 軸座標";
+Blockly.Msg.ai_models_object_model_h = "檢測框終點 Y 軸座標";
+Blockly.Msg.ai_models_object_model_count = "物體數量";
+Blockly.Msg.ai_models_object_model_index = "出現順序";
+Blockly.Msg.ai_models_object_model_confidence = "可信度";
+Blockly.Msg.ai_models_face_model_if_new = "識別到人臉";
+Blockly.Msg.ai_model_face_attribute_new = "人臉識別屬性";
+Blockly.Msg.ai_models_face_model_if = "檢測到人臉";
+Blockly.Msg.ai_model_face_attribute = "人臉屬性";
+Blockly.Msg.ai_models_face_model_get = "獲取檢測到的人臉的";
+Blockly.Msg.ai_models_face_model_x = "檢測框起點 X 軸座標";
+Blockly.Msg.ai_models_face_model_y = "檢測框起點 Y 軸座標";
+Blockly.Msg.ai_models_face_model_w = "檢測框終點 X 軸座標";
+Blockly.Msg.ai_models_face_model_h = "檢測框終點 Y 軸座標";
+Blockly.Msg.ai_models_face_model_ws = "檢測框的寬度";
+Blockly.Msg.ai_models_face_model_hs = "檢測框的高度";
+Blockly.Msg.ai_models_face_model_rect = "檢測框";
+Blockly.Msg.ai_models_face_model_count = "數量";
+Blockly.Msg.ai_models_face_model_index = "出現順序";
+Blockly.Msg.ai_models_face_model_confidence = "可信度";
+Blockly.Msg.ai_models_face_model_confidence_1 = "可信度(人臉檢測)";
+Blockly.Msg.ai_model_human_attribute = "人體屬性";
+Blockly.Msg.ai_models_human_model_if = "檢測到人體";
+Blockly.Msg.ai_models_human_model_get = "獲取檢測到的人體的";
+Blockly.Msg.ai_models_init_humane_model = "人體檢測模型";
+Blockly.Msg.ai_models_init_card_model = "車牌識別模型";
+Blockly.Msg.ai_models_init_card_result = "車牌結果";
+Blockly.Msg.ai_models_card_if_true = "檢測到車牌";
+Blockly.Msg.ai_models_card_attribute = "檢測到的車牌屬性";
+Blockly.Msg.ai_models_card_model_get = "獲取檢測到車牌的";
+
+Blockly.Msg.ai_model_customized_init_setup_definition = "加載自定義模型前的設定";
+Blockly.Msg.ai_models_customized_init_setup_title = "客製化模型 (TinyYOLOv2)";
+Blockly.Msg.ai_model_customized_load_setup_title = "加載客製化模型 (TinyYOLOv2)";
+Blockly.Msg.ai_models_customized_init_setup_path = "模型文件路徑:";
+Blockly.Msg.ai_models_customized_init_setup_source = "設定要識別的圖像源爲:";
+Blockly.Msg.v831_transmission_init_setup_source = "設置要傳輸的圖像源爲:";
+Blockly.Msg.v831_transmission_setup_show = "將捕捉的相機圖像傳輸到電腦並顯示";
+Blockly.Msg.v831_internet_transmission_setup_show = "將捕捉的相機圖像在網頁顯示";
+
+Blockly.Msg.ai_models_customized_init_type_set = "設定識別模式:";
+Blockly.Msg.ai_models_customized_init_type_set_fast = "識別單張人臉(速度快)";
+Blockly.Msg.ai_models_customized_init_type_set_slow = "識別多張人臉(速度慢):";
+
+Blockly.Msg.ai_models_customized_init_setup_name = "設定模型識別物體的名稱:";
+Blockly.Msg.ai_models_customized_if_got = "識別到了客製化模型的物件";
+Blockly.Msg.ai_model_customized_attribute = "客製化模型對象屬性";
+Blockly.Msg.ai_models_customized_get_result_any = "獲取識別到客製化模型結果的";
+Blockly.Msg.ai_models_customized_get_result_name = "名稱";
+Blockly.Msg.ai_models_customized_get_result_x = "檢測框起點 X 軸座標";
+Blockly.Msg.ai_models_customized_get_result_y = "檢測框起點 Y 軸座標";
+Blockly.Msg.ai_models_customized_get_result_w = "檢測框終點 X 軸座標";
+Blockly.Msg.ai_models_customized_get_result_h = "檢測框終點 Y 軸座標";
+Blockly.Msg.ai_models_customized_get_result_count = "數量";
+Blockly.Msg.ai_models_customized_get_result_index = "出現順序";
+Blockly.Msg.ai_models_customized_get_result_confidence = "可信度";
+
+Blockly.Msg.ai_model_face_setup = "自定義人臉識別";
+Blockly.Msg.ai_model_face = "自定義初始化人臉識別模型";
+Blockly.Msg.ai_face_detection_model = "初始化人臉檢測模型";
+Blockly.Msg.ai_face_point_detection_model = "初始化人臉5點關鍵點檢測模型";
+Blockly.Msg.ai_face_Vitter_eigenvalue_model = "初始化人臉196維特徵值模型";
+Blockly.Msg.ai_model_Calculation_of_196_eigenvalues = "計算運行人臉特徵模型後的196維特徵值";
+
+Blockly.Msg.ai_model_face_name = "設定模型識別人臉的名稱:";
+
+Blockly.Msg.ai_model_face_start_recognition = "加載人臉檢測模型,"
+Blockly.Msg.ai_model_face_model_load_finish = "人臉檢測模型加載完成";
+Blockly.Msg.ai_model_face_load_point_detection_model = "加載人臉5點關鍵點檢測模型,";
+Blockly.Msg.ai_model_face_load_point_detection_model_1 = "獲取人臉圖像並將其存到";
+Blockly.Msg.ai_model_face_load_point_detection_model_2 = "設定人臉檢測框爲";
+Blockly.Msg.ai_model_face_gather = "採集新的人臉數據並保存人臉數據";
+Blockly.Msg.ai_model_face_gather_1 = "保存人臉數據并將數據保存在文件中,路徑為:";
+Blockly.Msg.ai_model_face_data_load = "加載已保存的人臉數據";
+Blockly.Msg.ai_model_face_data_load_1 = "設定路徑爲 /sd/user 的加載人臉數據的文件名爲";
+Blockly.Msg.ai_model_face_model_list = "人臉檢測屬性";
+Blockly.Msg.ai_model_face_gather_num_judge = "人臉採集完成";
+Blockly.Msg.ai_model_face_recognition = "採集或者加載完成人臉數據並進行人臉識別";
+Blockly.Msg.ai_model_face_recognition_get_result = "人臉識別獲得任意結果";
+Blockly.Msg.ai_model_show_face = "處理圖像並顯示";
+Blockly.Msg.v831_face_recognition_load = "加載人臉識別模型,";
+Blockly.Msg.v831_face_recognition_load_title = "加載人臉模型,並設置要檢測的圖像源";
+Blockly.Msg.v831_setting_face_data_save = "設置要保存的人臉數據:";
+Blockly.Msg.face_recognition_map_face_canvas = "在畫布上";
+Blockly.Msg.face_recognition_map_face_show = "顯示第";
+Blockly.Msg.face_recognition_map_face_key_point = "人臉的關鍵點";
+Blockly.Msg.v831_setting_face_data_save_title = "設置要保存的人臉數據";
+Blockly.Msg.v831_setting_face_data_remove = "刪除最後一次保存的人臉數據";
+Blockly.Msg.v831_setting_face_data_remove_title = "刪除最後一次保存的人臉數據";
+Blockly.Msg.v831_face_recognition_result = "圖像源識別結果:";
+Blockly.Msg.v831_face_recognition_result_title = "圖像源識別結果";
+Blockly.Msg.v831_model_face_name = "人臉的名稱";
+Blockly.Msg.v831_models_face_model_confidence = "可信度(人臉識別)";
+
+Blockly.Msg.ai_model_class_setup = "自定義物體識別";
+Blockly.Msg.ai_class_model = "初始化自定義物體特徵提取模型";
+Blockly.Msg.ai_class_model_cluster = "初始化自定義物體聚類參數";
+Blockly.Msg.ai_model_class_start_load = "並對圖像進行處理";
+Blockly.Msg.ai_model_class_gather = "開始採集物體";
+Blockly.Msg.ai_model_class_data_load = "加載物體數據";
+Blockly.Msg.ai_model_class_data_load_1 = "設定路徑爲 /sd/user 的加載物體數據的文件名爲";
+Blockly.Msg.ai_model_class_gather_load_finish = "採集或者加載完成物體數據";
+Blockly.Msg.ai_model_class_cluster_train = "開始進行物體特徵提取,然後加以聚類訓練";
+Blockly.Msg.ai_model_class_cluster_train_1 = "設定路徑爲 /sd/user 的保存物體數據的文件名爲";
+Blockly.Msg.ai_model_class_recognition = "開始進行物體識別";
+
+Blockly.Msg.ai_model_class = "自定義初始化物體識別模型";
+
+Blockly.Msg.ai_model_class_name = "設定模型識別物體的名稱:";
+Blockly.Msg.ai_model_getface = "識別到了人臉模型的對象";
+Blockly.Msg.ai_model_getclass = "識別到了物体模型的對象";
+Blockly.Msg.face_information = "人臉信息";
+
+Blockly.Msg.ai_models_object_model_x_center = "檢測框中心點的X軸座標";
+Blockly.Msg.ai_models_object_model_y_center = "檢測框中心點的Y軸座標";
+Blockly.Msg.ai_models_face_model_x_center = "檢測框中心點的 X 軸座標";
+Blockly.Msg.ai_models_face_model_y_center = "檢測框中心點的 Y 軸座標";
+Blockly.Msg.ai_models_customized_get_result_x_center = "檢測框中心點的 X 軸座標";
+Blockly.Msg.ai_models_customized_get_result_y_center = "檢測框中心點的 Y 軸座標";
+
+Blockly.Msg.ai_models_edge_detection_model = "邊緣檢測模型";
+Blockly.Msg.ai_models_load_edge_detection_model = "加載邊緣檢測模型";
+Blockly.Msg.ai_models_get_edge_detection_result = "獲取邊緣檢測模型結果";
+
+Blockly.Msg.ai_model_self_learning_init = "初始化自我學習分類模型";
+Blockly.Msg.ai_model_self_learning_load = "加載自我學習分類模型";
+Blockly.Msg.ai_model_self_learning_recognize_load = "加載自我學習分類識別模型";
+Blockly.Msg.ai_model_self_learning_add_class_category = "添加分類類別";
+Blockly.Msg.ai_model_self_learning_make_data_set = "製作模型訓練的數據集";
+Blockly.Msg.ai_model_self_learning_picture = "進行圖片自我學習";
+Blockly.Msg.ai_model_self_learning_save_modal = "保存模型";
+Blockly.Msg.ai_model_self_learning_class_verification = "自我學習分類模型驗證";
+Blockly.Msg.ai_model_self_learning_result = '自我學習結果名稱';
+Blockly.Msg.ai_model_self_learning_result_name = "名稱";
+/*
+     _    ___   ____            _                 
+    / \  |_ _| / ___| _   _ ___| |_ ___ _ __ ___  
+   / _ \  | |  \___ \| | | / __| __/ _ \ '_ ` _ \ 
+  / ___ \ | |   ___) | |_| \__ \ ||  __/ | | | | |
+ /_/   \_\___| |____/ \__, |___/\__\___|_| |_| |_|
+                      |___/                       
+*/
+
+
+Blockly.Msg.ai_system_restart = "重啓系統";
+Blockly.Msg.ai_system_off = "關機";
+Blockly.Msg.ai_system_refresh= "更新文件目錄";
+Blockly.Msg.ai_system_enable_gc = "啓動記憶體回收";
+Blockly.Msg.ai_system_run_python_code = "運行 Python 程式";
+Blockly.Msg.ai_system_run_python_code_file_path = "程式路徑爲:";
+
+
+
+/* 
+     _    ___  __        ___ _____ _ 
+    / \  |_ _| \ \      / (_)  ___(_)
+   / _ \  | |   \ \ /\ / /| | |_  | |
+  / ___ \ | |    \ V  V / | |  _| | |
+ /_/   \_\___|    \_/\_/  |_|_|   |_|
+                                     
+*/
+
+Blockly.Msg.ai_wifi_set_wifi = "設定 Wi-Fi 為";
+Blockly.Msg.ai_wifi_enabled = "啟用狀態";
+Blockly.Msg.ai_wifi_disabled = "禁用狀態";
+Blockly.Msg.ai_wifi_start_wifi_scan = "開始掃描附近 Wi-Fi 熱點";
+Blockly.Msg.ai_wifi_wifi_scan_result = "獲取 Wi-Fi 掃描的結果為陣列形式";
+Blockly.Msg.ai_wifi_connect_wifi = "連線至 Wi-Fi 網路";
+Blockly.Msg.ai_wifi_connect_wifi_ssid = "網路名稱 (SSID):";
+Blockly.Msg.ai_wifi_connect_wifi_pass = "網路密碼:";
+Blockly.Msg.ai_wifi_get_connection_status = "獲取 Wi-Fi 連線的狀態";
+Blockly.Msg.ai_wifi_get_wifi_info = "獲取 Wi-Fi 連線的裝置資訊:";
+Blockly.Msg.ai_wifi_get_wifi_info_name = "熱點名稱";
+Blockly.Msg.ai_wifi_get_wifi_info_ip = "IP 地址";
+Blockly.Msg.ai_wifi_get_wifi_info_dns = "DNS 地址";
+Blockly.Msg.ai_wifi_get_wifi_info_mac = "MAC 地址";
+
+
+/*
+  _   _ _ _                             _        ____                            
+ | | | | | |_ _ __ __ _ ___  ___  _ __ (_) ___  / ___|  ___ _ __  ___  ___  _ __ 
+ | | | | | __| '__/ _` / __|/ _ \| '_ \| |/ __| \___ \ / _ \ '_ \/ __|/ _ \| '__|
+ | |_| | | |_| | | (_| \__ \ (_) | | | | | (__   ___) |  __/ | | \__ \ (_) | |   
+  \___/|_|\__|_|  \__,_|___/\___/|_| |_|_|\___| |____/ \___|_| |_|___/\___/|_|   
+                                                                                 
+*/
+
+Blockly.Msg.third_party_hcsr04_iot = "在 IoT 模組上";
+Blockly.Msg.third_party_hcsr04_ai = "在 A.I. 模組上 ";
+Blockly.Msg.third_party_hcsr04_setup_title = "初始化 HCSR-04 超聲波感應器";
+Blockly.Msg.third_party_hcsr04_trig_pin = "設定 Trig 接腳為 引腳 #";
+Blockly.Msg.third_party_hcsr04_echo_pin = ", 設定 Echo 接腳為 引腳 #";
+Blockly.Msg.third_party_hcsr04_read_text = "讀取來自超聲波感應器";
+Blockly.Msg.third_party_hcsr04_read_text_after = "的距離檢測數值 (單位: CM)";
+Blockly.Msg.Set_Auto_Wrap = "自動換欄";
+
+
+/*
+  ____  _     _____ 
+ | __ )| |   | ____|
+ |  _ \| |   |  _|  
+ | |_) | |___| |___ 
+ |____/|_____|_____|
+
+*/
+
+Blockly.Msg.esp32_ble_setup_sender_msg = "BLE(低功耗藍牙)";
+Blockly.Msg.esp32_ble_setup_sender = "發送端初始化";
+Blockly.Msg.esp32_ble_send_data_msg = "BLE 發送數據";
+Blockly.Msg.esp32_ble_setup_receiver_msg = "BLE(低功耗藍牙)";
+Blockly.Msg.esp32_ble_setup_receiver = "接收端初始化";
+Blockly.Msg.esp32_ble_get_data_msg = "獲取從BLE接收的數據";
+Blockly.Msg.esp32_ble_sender_connected_msg = "發送端已經被連接";
+Blockly.Msg.esp32_ble_receiver_connected_msg = "接收端已經被連接";
+Blockly.Msg.esp32_ble_set_uuid = "設定 UUID:";
+Blockly.Msg.esp32_ble_set_name = "設定設備名稱:";
+Blockly.Msg.esp32_ble_set_name_limit = " (不得超過 8 個字元)";
+
+
+
+/* additional text */
+
+Blockly.Msg.text_additional_delimiter_string = "將字串";
+Blockly.Msg.text_additional_delimiter_deli = "使用分隔符:";
+Blockly.Msg.text_additional_delimiter_end = "進行拆分並生成陣列";
+
+
+/* mlx90614 */
+Blockly.Msg.MLX90614_READ_AMBIENT = "從 MLX90614 獲取當前環境溫度";
+Blockly.Msg.MLX90614_READ_OBJECT = "從 MLX90614 獲取目標物體溫度";
+Blockly.Msg.MLX90614_READ_SET_TEMP = "設定溫度單位為:";
+Blockly.Msg.MLX90614_READ_SET_TEMP_C = "攝氏";
+Blockly.Msg.MLX90614_READ_SET_TEMP_F = "華氏";
+Blockly.Msg.MLX90614_SETUP_TEXT_1 = "非接觸式測溫感應器";
+Blockly.Msg.MLX90614_SETUP_TEXT_2 = "MLX90614 初始化設置";
+
+/* DHT11 or DHT22 */
+Blockly.Msg.DHT_SETUP_TEXT_1 = "溫濕度感應器初始化設定";
+Blockly.Msg.DHT_SETUP_TEXT_2 = "感應器型號:";
+Blockly.Msg.DHT_SETUP_TEXT_3 = "初始化";
+Blockly.Msg.DHT_SETUP_TEXT_4 = "設定感應器數據接收引腳 #:";
+
+/* PM2.5 */
+Blockly.Msg.PM25_SETUP_TEXT = "PM2.5灰塵感應器初始化設定";
+
+/* robot dog */
+Blockly.Msg.robot_dog_movement = "語音操控機器狗";
+Blockly.Msg.robot_dog_movement_action = "設定動作指令";
+Blockly.Msg.robot_dog_phonetic_to_pinyin_get_result = "獲取語音識別的結果";
+Blockly.Msg.robot_dog_movement_action_0 = "趴下";
+Blockly.Msg.robot_dog_movement_action_1 = "站起";
+Blockly.Msg.robot_dog_movement_action_2 = "匍匐前進";
+Blockly.Msg.robot_dog_movement_action_3 = "轉圈";
+Blockly.Msg.robot_dog_movement_action_4 = "原地踏步";
+Blockly.Msg.robot_dog_movement_action_5 = "蹲起";
+Blockly.Msg.robot_dog_movement_action_6 = "轉動Roll";
+Blockly.Msg.robot_dog_movement_action_7 = "轉動Pitch";
+Blockly.Msg.robot_dog_movement_action_8 = "轉動Yaw";
+Blockly.Msg.robot_dog_movement_action_9 = "三軸轉動";
+Blockly.Msg.robot_dog_movement_action_10 = "撒尿";
+Blockly.Msg.robot_dog_movement_action_11 = "坐下";
+Blockly.Msg.robot_dog_movement_action_12 = "招手";
+Blockly.Msg.robot_dog_movement_action_13 = "伸懶腰";
+Blockly.Msg.robot_dog_movement_action_14 = "波浪";
+Blockly.Msg.robot_dog_movement_action_15 = "左右搖擺";
+Blockly.Msg.robot_dog_movement_action_16 = "求食";
+Blockly.Msg.robot_dog_movement_action_17 = "覓食";
+Blockly.Msg.robot_dog_movement_action_18 = "握手";
+Blockly.Msg.robot_dog_movement_action_19 = "恢復初始狀態";
+Blockly.Msg.robot_dog_movement_action_20 = "前進";
+Blockly.Msg.robot_dog_movement_action_21 = "後退";
+Blockly.Msg.robot_dog_movement_action_22 = "向左運動";
+Blockly.Msg.robot_dog_movement_action_23 = "向右運動";
+Blockly.Msg.robot_dog_movement_action_24 = "開啟自穩功能";
+Blockly.Msg.robot_dog_movement_action_25 = "關閉自穩功能";
+Blockly.Msg.robot_dog_movement_action_30 = "拜年";
+Blockly.Msg.robot_dog_setup = "機器狗初始化";
+Blockly.Msg.robot_dog_execution = "機器狗執行";
+Blockly.Msg.robot_dog_action = "指令";
+Blockly.Msg.robot_dog_servo_execution = "設定";
+Blockly.Msg.robot_dog_front_left_leg = "左前";
+Blockly.Msg.robot_dog_back_left_leg = "左後";
+Blockly.Msg.robot_dog_front_right_leg = "右前";
+Blockly.Msg.robot_dog_back_right_leg = "右後";
+Blockly.Msg.robot_dog_leg = "腿部";
+Blockly.Msg.robot_dog_up = "上 (-31˚~31˚)";
+Blockly.Msg.robot_dog_up_1 = "上";
+Blockly.Msg.robot_dog_middle = "中 (-66˚~93˚)";
+Blockly.Msg.robot_dog_middle_1 = "中";
+Blockly.Msg.robot_dog_down = "下 (-65˚~73˚)";
+Blockly.Msg.robot_dog_down_1 = "下";
+Blockly.Msg.robot_dog_servo_rotate = "關節伺服馬達轉動至";
+Blockly.Msg.robot_dog_ag = "度";
+Blockly.Msg.robot_dog_angle = "毫米";
+Blockly.Msg.robot_dog_angle_speed = "度/秒";
+Blockly.Msg.robot_dog_servo_set_speed = "設定"
+Blockly.Msg.robot_dog_servo_speed = "伺服馬達速度";
+Blockly.Msg.robot_dog_movement_speed = "邁步頻率";
+Blockly.Msg.robot_dog_servo_to = "為";
+Blockly.Msg.robot_dog_servo_speed_1 = "快";
+Blockly.Msg.robot_dog_servo_speed_2 = "正常";
+Blockly.Msg.robot_dog_servo_speed_3 = "慢";
+Blockly.Msg.robot_dog_servo_movement_location = "方向的位置為";
+Blockly.Msg.robot_dog_leg_f = "腿足尖";
+Blockly.Msg.robot_dog_controll_action_0 = "關閉";
+Blockly.Msg.robot_dog_controll_action_1 = "打開";
+Blockly.Msg.robot_dog_gyroscope = "陀螺儀";
+Blockly.Msg.robot_dog_open_performance_mode = "機器狗表演模式";
+Blockly.Msg.robot_dog_open_calibration_mode = "機器狗標定模式";
+Blockly.Msg.robot_dog_get_power = "獲取機器狗當前的電量";
+Blockly.Msg.robot_dog_get_servo_angle = "關節伺服馬達的角度";
+Blockly.Msg.robot_dog_servo_movement_distance = "設定機器狗執行";
+Blockly.Msg.robot_dog_movement_action_26 = "左移 (0mm~18mm)";
+Blockly.Msg.robot_dog_movement_action_27 = "右移 (-18mm~0mm)";
+Blockly.Msg.robot_dog_movement_action_28 = "前進 (0mm~25mm)";
+Blockly.Msg.robot_dog_movement_action_29 = "後退 (-25mm~0mm)";
+Blockly.Msg.robot_dog_servo_movement_distance_location = "方向平移運動步長為";
+Blockly.Msg.robot_dog_servo_movement_rotate = "設定機器狗執行";
+Blockly.Msg.robot_dog_servo_movement_rotate_location = "方向旋轉運動轉動速度為";
+Blockly.Msg.MOTION_ONDIRECTION_CLOCKWISE1 = "左轉 (0˚/s~150˚/s)";
+Blockly.Msg.MOTION_ONDIRECTION_COUNTERCLOCKWISE1 = "右轉 (-150˚/s~0˚/s)";
+Blockly.Msg.robot_dog_servo_movement_standing_still = "設定機器狗以";
+Blockly.Msg.robot_dog_servo_movement_standing_still_1 = "(10mm~35mm)的抬腿高度以固定頻率執行原地踏步";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_1 = "持續";
+Blockly.Msg.robot_dog_servo_movement_distance_cycle_2 = "秒";
+Blockly.Msg.robot_dog_servo_movement_distance_still = "設定機器狗";
+Blockly.Msg.robot_dog_servo_movement_distance_still_1 = "方向平移";
+Blockly.Msg.robot_dog_servo_movement_distance_still_2 = "(-128~127)釐米";
+Blockly.Msg.robot_dog_servo_movement_rotate_still = "設定機器狗繞";
+Blockly.Msg.robot_dog_servo_movement_rotate_still1 = "軸旋轉";
+Blockly.Msg.robot_dog_servo_movement_rotate_still2 = "(-128~127)";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle = "設定機器狗以週期";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_1 = "秒(1.5s~8s)向";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_2 = "方向往復平移";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle = "秒(1.5s~8s) 繞";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_1 = "軸往復轉動";
+Blockly.Msg.robot_dog_servo_movement_distance_still_cycle_stop = "停止機器狗週期性向";
+Blockly.Msg.robot_dog_servo_movement_rotate_still_cycle_stop = "停止機器狗週期性繞";
+Blockly.Msg.robot_dog_get_rotate_angle = "軸的角度";
+Blockly.Msg.robot_dog_get_rotate_angle_1 = "獲取陀螺儀";
+
+// UAV 
+Blockly.Msg.uav_initialization = "無人機初始化";
+Blockly.Msg.numbers_for = "編號為";
+Blockly.Msg.uav_uav = "無人機";
+Blockly.Msg.uav_height = "高度";
+Blockly.Msg.uav_lock = "鎖定";
+Blockly.Msg.uav_unlock = "解鎖";
+Blockly.Msg.uav_the_nose_direction = "機頭方向";
+Blockly.Msg.uav_landing = "降落";
+Blockly.Msg.uav_brake = "剎車";
+Blockly.Msg.uav_hover = "懸停";
+Blockly.Msg.uav_scram = "急停";
+Blockly.Msg.uav_calibration = "校準";
+Blockly.Msg.Take_off_altitude = "的無人機起飛高度";
+Blockly.Msg.uav_switch = "無人機,切換";
+Blockly.Msg.uav_AI_switch = "無人機,AI 切換到";
+Blockly.Msg.uav_fly_mode = "飛行模式";
+Blockly.Msg.uav_horizontal_velocity = "無人機,水平速度";
+Blockly.Msg.uav_speed_unit = "釐米/秒";
+Blockly.Msg.uav_vertical_speed = "無人機,垂直速度";
+Blockly.Msg.uav_go_to = "無人機,向";
+Blockly.Msg.uav_patrol_flight = "巡線飛行";
+Blockly.Msg.uav_fly = "飛";
+Blockly.Msg.uav_look_for_black_patches = "釐米,尋找黑色小塊";
+Blockly.Msg.uav_look_for = "厘米,尋找";
+Blockly.Msg.uav_the_label = "號標籤";
+Blockly.Msg.uav_look_for_color_piece = "厘米,尋找色塊";
+Blockly.Msg.uav_direct = "無人機,直達";
+Blockly.Msg.uav_rotating = "無人機,旋轉";
+Blockly.Msg.uav_circle = "圈";
+Blockly.Msg.uav_light_color = "的燈光顏色為(";
+Blockly.Msg.uav_off_led = "無人機關閉燈光";
+Blockly.Msg.uav_detection = "無人機檢測";
+Blockly.Msg.uav_black_spots = "黑点";
+Blockly.Msg.uav_black_line = "黑線";
+Blockly.Msg.uav_black_label = "標籤";
+Blockly.Msg.uav_code = "二維碼";
+Blockly.Msg.uav_bar_code = "條形碼";
+Blockly.Msg.uav_electromagnet = "電磁鐵";
+Blockly.Msg.uav_servo_ctrl = "無人機的舵機";
+Blockly.Msg.uav_role_ctrl = "無人機的命令";
+Blockly.Msg.uav_continuous = "連續";
+Blockly.Msg.uav_laser = "發射激光";
+Blockly.Msg.uav_face_recognition = "人臉識別";
+Blockly.Msg.uav_object_tracking = "物體追蹤";
+Blockly.Msg.uav_obj_recognition = "物體識別";
+Blockly.Msg.uav_patrol_tracking = "巡線追蹤";
+Blockly.Msg.uav_color_recognition = "顏色識別";
+Blockly.Msg.uav_label_recognition = "標籤識別";
+Blockly.Msg.uav_object_classification = "物體分類";
+Blockly.Msg.uav_mode = "模式";
+Blockly.Msg.uav_learing_ID = "無人機,學習一次的ID";
+Blockly.Msg.uav_forget_data = "無人機忘記所有學習數據";
+Blockly.Msg.uav_setup_ID = "無人機設置 ID";
+Blockly.Msg.uav_name_is = "的名字為";
+Blockly.Msg.uav_taking_pictures = "拍照";
+Blockly.Msg.uav_screenshots = "截屏";
+Blockly.Msg.uav_save_SD = "保存到 SD 卡";
+Blockly.Msg.optical_flow_localization = "光流定位";
+Blockly.Msg.label_position = "標籤定位";
+Blockly.Msg.autonomous_patrol = "自主巡線";
+Blockly.Msg.normally_on = "常亮";
+Blockly.Msg.breathing_lamp = "呼吸燈";
+Blockly.Msg.colour_change = "七彩變換";
+
+Blockly.Msg.uav_detection_if = "無人機檢測到";
+Blockly.Msg.uav_detection_color_block = "色塊";
+Blockly.Msg.uav_detection_if_line = "邊有線";
+Blockly.Msg.uav_get_distance_of_obstacles = "無人機";
+Blockly.Msg.uav_get_distance_of_obstacles_1 = "障礙物的距離";
+Blockly.Msg.uav_roll_angle = "橫滾角";
+Blockly.Msg.uav_pitch_angle = "俯仰角";
+Blockly.Msg.uav_yaw_angle = "偏航角";
+Blockly.Msg.uav_abscissa = "橫座標";
+Blockly.Msg.uav_ordinate = "縱座標";
+Blockly.Msg.uav_height = "高度";
+Blockly.Msg.uav_voltage = "電壓";
+Blockly.Msg.uav_get_AI_value = "AI識別結果";
+Blockly.Msg.uav_get_electronic_balance_value = "電子秤讀數";
+Blockly.Msg.uav_get_shooting_value = "射擊";
+Blockly.Msg.uav_get_shooting_value_0 = "序號";
+Blockly.Msg.uav_get_shooting_value_1 = "成績";
+Blockly.Msg.uav_get_msg_value = "消息";
+Blockly.Msg.uav_get_msg_value_0 = "內容";
+
+/* expand */
+Blockly.Msg.esp32_expand_io_from_digital_pin = "獲取引腳 #";
+Blockly.Msg.esp32_expand_io_set_digital_pin = "設定引腳 #";
+Blockly.Msg.esp32_expand_io_set_analog_pin = "設定引腳 #";
+Blockly.Msg.esp32_expand_io_set_analog_pin_digital_set_as = "PWM 輸出";
+Blockly.Msg.esp32_expand_io_set_analog_pin_digital_set_af = "(0-255)";
+
+/* KUJU */
+Blockly.Msg.KUJU_title = "連接KUJU";
+Blockly.Msg.KUJU_username = "賬號";
+Blockly.Msg.KUJU_password = "密碼";
+Blockly.Msg.KUJU_controll_title = "傳送數據至KUJU";
+Blockly.Msg.KUJU_controll_content = "控制智能插座的";
+Blockly.Msg.KUJU_controll_action_0 = "關閉";
+Blockly.Msg.KUJU_controll_action_1 = "打開";
+Blockly.Msg.KUJU_get_temperature_humidity_data_title = "獲取溫度感應器的";
+Blockly.Msg.KUJU_get_motion_data_title = "獲取移動感應器的";
+Blockly.Msg.basic_motion_data = "是否移動";
+Blockly.Msg.basic_illumination_intensity = "照明強度";
+Blockly.Msg.KUJU_get_sensor_data_title = "獲取";
+Blockly.Msg.basic_water_sensor = "漏水感應器";
+Blockly.Msg.basic_door_sensor = "門磁";
+
+/* Wetech */
+Blockly.Msg.wifiServices_WeTech_title = "連接WeTech";
+Blockly.Msg.wifiServices_WeTech_username = "用戶名";
+Blockly.Msg.wifiServices_WeTech_password = "密碼";
+Blockly.Msg.WeTech_controll_title = "傳送數據至WeTech";
+Blockly.Msg.WeTech_controll_content = "指令";
+Blockly.Msg.WeTech_controll_action_0 = "關閉";
+Blockly.Msg.WeTech_controll_action_1 = "打開";
+Blockly.Msg.WeTech_controll_action_2 = "停止";
+Blockly.Msg.wifiServices_WeTech_get_gateway_device_id_list_title = "獲取特定網關id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY5 = "中名字爲";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY4 = "的設備id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY6 = "控制的3掣面掣 (for Light) id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY7 = "網關id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY8 = "控制的2掣面掣 (for Exhaust fan) id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY9 = "控制的Curtain Sensor (for projector Screen) id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY10 = "控制的冷氣IR id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY11 = "控制的TV IR (for TV and Projector) id";
+Blockly.Msg.WIFIEASYMODE_WeTech_KEY12 = "Mac地址";
+Blockly.Msg.WeTech_controll_air_content = "模式";
+Blockly.Msg.WeTech_controll_wind_speed_content = "風速";
+Blockly.Msg.WeTech_controll_temp_content = "溫度(16℃-30℃)";
+Blockly.Msg.WeTech_controll_IR_content = "次序(0-255)";
+Blockly.Msg.WeTech_controll_power_meter = "獲取數值";
+Blockly.Msg.WeTech_controll_power_meter_1 = "Power Meter的id";
+Blockly.Msg.Wetech_controll_pm25_sensor = "PM2.5檢測器";
+Blockly.Msg.Wetech_controll_CO2_sensor = "CO2檢測器";
+Blockly.Msg.Wetech_controll_Temperature_sensor = "溫度檢測器";
+Blockly.Msg.Wetech_controll_Humidity_sensor = "溼度檢測器";
+Blockly.Msg.Wetech_controll_sensor_title = "的id";
+
+Blockly.Msg.WeTech_controll_mode_0 = "關閉";
+Blockly.Msg.WeTech_controll_mode_1 = "自動";
+Blockly.Msg.WeTech_controll_mode_2 = "製冷";
+Blockly.Msg.WeTech_controll_mode_3 = "制熱";
+Blockly.Msg.WeTech_controll_mode_4 = "供暖";
+Blockly.Msg.WeTech_controll_mode_5 = "預冷";
+Blockly.Msg.WeTech_controll_mode_6 = "送風";
+Blockly.Msg.WeTech_controll_mode_7 = "除溼";
+Blockly.Msg.WeTech_controll_mode_8 = "睡眠";
+Blockly.Msg.WeTech_controll_mode_9 = "節能";
+Blockly.Msg.WeTech_controll_mode_10 = "低";
+Blockly.Msg.WeTech_controll_mode_11 = "中";
+Blockly.Msg.WeTech_controll_mode_12 = "高";
+Blockly.Msg.WeTech_controll_mode_13 = "自動";
+
+// tuya
+Blockly.Msg.iot_service_tuya_title = "連接塗鴉";
+Blockly.Msg.iot_service_tuya_access_id = "Access ID/Client ID";
+Blockly.Msg.iot_service_tuya_access_secret = "Access Secret/Client Secret";
+Blockly.Msg.iot_service_tuya_setToken_text = "當連接塗鴉獲取到訪問令牌的時候";
+Blockly.Msg.iot_service_tuya_getDeviceList_text = "獲取設備列表";
+Blockly.Msg.iot_service_tuya_controll_light_belt_title = "控制智能燈帶";
+Blockly.Msg.iot_service_tuya_controll_light_belt_device_id = "設備id";
+Blockly.Msg.iot_service_tuya_controll_light_belt_des = "狀態爲";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_0 = "關閉";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_1 = "打開";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_2 = "柔光模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_3 = "繽紛模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_4 = "炫彩模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_5 = "斑斕模式";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_6 = "晚安情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_7 = "閱讀情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_8 = "聚會情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_status_9 = "休閒情景";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_title = "控制智能燈帶";
+Blockly.Msg.iot_service_tuya_controll_light_belt_color_value_title1 = "顏色爲";
+
+// turtle 
+Blockly.Msg.TURTLE_CREATE_NE_TURTLE = "創建新的海龜";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_FORWARD_BY = "讓海龜往前走";
+Blockly.Msg.TURTLE_MAKE_TURTLE_MOVE_BACKWARD_BY = "讓海龜後退";
+Blockly.Msg.TURTLE_MAKE_TURN_LEFT_BY = "讓海龜向左轉";
+Blockly.Msg.TURTLE_DEGREE = "度";
+Blockly.Msg.TURTLE_MAKE_TURN_RIGHT_BY = "讓海龜向右轉";
+Blockly.Msg.TURTLE_MAKE_TURRLE_COLOR = "設置海龜畫筆的顏色為";
+Blockly.Msg.TURTLE_MAKE_TURRLE_PEN = "讓海龜畫筆";
+Blockly.Msg.TURTLE_MAKE_TURTLE_GOTO_LOCATION_X = "讓海龜去地點 X:";
+Blockly.Msg.TURTLE_MAKE_TURTLE_SET_POSITION = "設定海龜畫筆的位置為 X:";
+Blockly.Msg.TURTLE_MAKE_SET_HEADING = "讓海龜旋轉至";
+Blockly.Msg.TURTLE_RESET = "重置畫筆的位置";
+Blockly.Msg.TURTLE_CLEAR = "清除";
+Blockly.Msg.TURTLE_PEN_UP = "抬起";
+Blockly.Msg.TURTLE_PEN_DOWN = "落下";
+
+Blockly.Msg.SYSTEM_RUN = "執行 Python 程式";
+Blockly.Msg.SYSTEM_RUN_F = "程式所在路徑:";
+
+Blockly.Msg.SYSTEM_CREATE = "創建文本檔案";
+Blockly.Msg.SYSTEM_CREATE_FILE = "創建檔案";
+Blockly.Msg.SYSTEM_CREATE_F = "檔名:";
+Blockly.Msg.SYSTEM_CREATE_F_1 = "檔案路徑爲:";
+
+
+Blockly.Msg.SYSTEM_WRITE = "創建文本檔案";
+Blockly.Msg.SYSTEM_OPEN_FILE = "打開檔案";
+Blockly.Msg.SYSTEM_WRITE_FILE = "寫入檔案";
+Blockly.Msg.SYSTEM_CLOSE_FILE = "關閉檔案";
+Blockly.Msg.SYSTEM_WRITE_F = "檔案名稱:";
+Blockly.Msg.SYSTEM_WRITE_W = "寫入內容:";
+Blockly.Msg.SYSTEM_WRITE_S = "分隔符號為:";
+Blockly.Msg.SYSTEM_WRITE_S_N = "換欄";
+Blockly.Msg.SYSTEM_WRITE_S_C = "逗號";
+Blockly.Msg.SYSTEM_WRITE_S_S = "空格";
+Blockly.Msg.SYSTEM_WRITE_S_SE = "分號";
+
+Blockly.Msg.SYSTEM_INPUT = "讀取文本檔案為陣列";
+Blockly.Msg.SYSTEM_INPUT_FILE = "讀取檔案為陣列";
+
+// v831
+// 在線文本轉語音
+Blockly.Msg.Text_to_speech_initialization = "在線文本轉語音初始化";
+Blockly.Msg.Content_of_text = "文本內容";
+Blockly.Msg.text_conversion_voice = "將文本內容轉化爲語音文件";
+Blockly.Msg.Voice_path = "音頻文件保存路徑";
+// 在線人臉識別
+Blockly.Msg.online_face_result = "在線人臉檢測數量";
+Blockly.Msg.online_face_loading = "在線人臉檢測模型加載";
+Blockly.Msg.online_face_init = "在線人臉檢測初始化";
+Blockly.Msg.online_face_init_path = "檢測圖片路徑";
+// 在線語音識別
+Blockly.Msg.online_voice_result = "在線語音識別結果";
+Blockly.Msg.online_voice_loading = "在線語音識別加載";
+Blockly.Msg.online_voice_init = "在線語音識別初始化";
+Blockly.Msg.online_voice_init_path = "識別語音路徑";
+
+// 圖像處理
+Blockly.Msg.read_img_path_to = "讀取圖片文件自";
+Blockly.Msg.take_the_picture = "將圖片";
+
+// 機器翻譯
+Blockly.Msg.machine_translation_result = "在線機器翻譯結果";
+Blockly.Msg.machine_translation_load = "在線機器翻譯加載";
+Blockly.Msg.machine_translation_init = "機器翻譯初始化";
+Blockly.Msg.machine_translation_to = "翻譯至";
+
+// 車牌識別
+Blockly.Msg.online_card_result = "在線車牌識別結果";
+Blockly.Msg.online_card_load = "在線車牌識別加載";
+Blockly.Msg.online_card_init = "在線車牌識別初始化";
+
+// 物體識別
+Blockly.Msg.online_object_init = "在線物體識別初始化";
+Blockly.Msg.online_object_load = "在線物體識別加載";
+Blockly.Msg.online_object_result = "在線物體識別結果";
+
+// 手写文字识别
+Blockly.Msg.handwritten_text_result = "在線手寫文字識別結果";
+Blockly.Msg.handwritten_text_load = "在線手寫文字識別加載";
+Blockly.Msg.handwritten_text_init = "手寫文字識別初始化";
+Blockly.Msg.handwritten_text_language_init = "設置識別語種";
+Blockly.Msg.system_voice = "設置系統音量"
+// 手勢識別
+Blockly.Msg.gesture_result = "手勢識別結果";
+Blockly.Msg.gesture_load = "手勢識別加載";
+Blockly.Msg.gesture_init = "手勢識別初始化";
+// 情緒識別
+Blockly.Msg.emotion_result = "情緒識別結果";
+Blockly.Msg.emotion_load = "情緒識別加載";
+Blockly.Msg.emotion_init = "情緒識別初始化";
+Blockly.Msg.set_dictionary = "設定字典";
+Blockly.Msg.dictionary_contain = "字典包含(age、emotion、gender、expression)";
+Blockly.Msg.emotion_result_age = "年齡";
+Blockly.Msg.emotion_result_emotion = "情緒";
+Blockly.Msg.emotion_result_gender = "性別";
+Blockly.Msg.emotion_result_expression = "表情";
+// 公式識別
+Blockly.Msg.formula_result = "公式識別結果";
+Blockly.Msg.formula_load = "公式識別加載";
+Blockly.Msg.formula_init = "公式識別初始化";
+Blockly.Msg.system_voice = "設置系統音量"
+// 神經網絡
+Blockly.Msg.numpy_mnist_get_result = "獲取識別結果";
+Blockly.Msg.numpy_mnist_loading_model = "加載已保存的模型";
+Blockly.Msg.numpy_mnist_setting_training_argument = "設置訓練參數";
+Blockly.Msg.numpy_mnist_input_trait_dimensionality = "輸入特徵的維度:";
+Blockly.Msg.numpy_mnist_setting_training_argument_number_node = "節點數:";
+Blockly.Msg.numpy_mnist_output_dimensionality = "輸出維度:";
+Blockly.Msg.numpy_mnist_setting_training_argument_learning_rate = "學習率:";
+Blockly.Msg.numpy_mnist_setting_training_argument_frequency = "訓練次數:";
+Blockly.Msg.numpy_mnist_is_training_start = "訓練模組啓動";
+Blockly.Msg.numpy_mnist_loading_train_and_test_set = "加載訓練集和測試集";
+Blockly.Msg.numpy_mnist_train_set_url = "訓練集路徑:";
+Blockly.Msg.numpy_mnist_test_set_url = "測試集路徑:";
+Blockly.Msg.numpy_mnist_model_init = "numpy + mnist 訓練模型初始化";
+Blockly.Msg.numpy_mnist_clear = "清除numpy模組";
+
+export default Blockly.Msg;

+ 13 - 0
src/blockly/pythonCode/ai.js

@@ -0,0 +1,13 @@
+// import Blockly from 'blockly';
+import { pythonGenerator } from "blockly/python";
+
+const Blockly = {
+    Python:pythonGenerator || { Msg: Object.create(null) }
+};
+
+Blockly.Python['custom_text_block'] = function (block) {
+    let code = "1111111"
+    return code
+};
+
+export default Blockly

+ 188 - 0
src/blockly/pythonCode/basicCode.js

@@ -0,0 +1,188 @@
+import { pythonGenerator } from "blockly/python";
+
+const Blockly = {
+    Python: pythonGenerator || { Msg: Object.create(null) }
+};
+Blockly.Python['math_degrad'] = function (block) {
+    var dropdown_rad_deg = block.getFieldValue('rad_deg');
+    var value_convert = Blockly.Python.valueToCode(block, 'convert', Blockly.Python.ORDER_ATOMIC);
+    // TODO: Assemble Python into code variable.
+    Blockly.Python.definitions_['import_math'] = 'import math\n';
+
+    var code = 'math.' + dropdown_rad_deg + '(' + value_convert + ')';
+    // TODO: Change ORDER_NONE to the correct strength.
+    return [code, Blockly.Python.ORDER_NONE];
+};
+
+Blockly.Python.math_angle = function (a) {
+    return [a.getFieldValue("angle"), Blockly.Python.ORDER_ATOMIC]
+};
+
+Blockly.Python.math_keep_decimal = function (a) {
+    var b = Blockly.Python.valueToCode(a, "NUM", Blockly.Python.ORDER_ATOMIC);
+    a = Blockly.Python.valueToCode(a, "PLACE", Blockly.Python.ORDER_ATOMIC);
+    return ["round(" + b + ", " + a + ")", Blockly.Python.ORDER_ATOMIC]
+};
+
+Blockly.Python.math_division_consult = function (a) {
+    var b = Blockly.Python.valueToCode(a, "DIVIDEND", Blockly.Python.ORDER_MULTIPLICATIVE) || "0";
+    a = Blockly.Python.valueToCode(a, "DIVISOR", Blockly.Python.ORDER_MULTIPLICATIVE) || "0";
+    return [b + " // " + a, Blockly.Python.ORDER_MULTIPLICATIVE]
+}
+
+Blockly.Python.labplus_mapping = function (a) {
+    Blockly.Python.definitions_.import_microbit = "from microbit import *";
+    var b = Blockly.Python.valueToCode(a, "inputNum", Blockly.Python.ORDER_ATOMIC);
+    Blockly.Python.valueToCode(a, "outputNum", Blockly.Python.ORDER_ATOMIC);
+    var c = Blockly.Python.valueToCode(a, "bMin", Blockly.Python.ORDER_ATOMIC)
+        , d = Blockly.Python.valueToCode(a, "bMax", Blockly.Python.ORDER_ATOMIC)
+        , e = Blockly.Python.valueToCode(a, "cMin", Blockly.Python.ORDER_ATOMIC);
+    a = Blockly.Python.valueToCode(a, "cMax", Blockly.Python.ORDER_ATOMIC);
+    Blockly.Python.definitions_.labplus_mapping = "def numberMap(inputNum,bMin,bMax,cMin,cMax):\n  outputNum \x3d 0\n  outputNum \x3d((cMax - cMin) / (bMax - bMin))*(inputNum - bMin)+cMin\n  return outputNum\n";
+    return ["numberMap(" + b + "," + c + "," + d + "," + e + "," + a + ")", Blockly.Python.ORDER_ATOMIC]
+}
+
+Blockly.Python.math_random_randrange = function (a) {
+    Blockly.Python.definitions_.import_time = "import time";
+    // Blockly.Python.codeFunctions_.random_seed = "random.seed(time.ticks_cpu())";
+    Blockly.Python.definitions_.import_random = "import random";
+    var b = Blockly.Python.valueToCode(a, "start", Blockly.Python.ORDER_ATOMIC),
+        c = Blockly.Python.valueToCode(a, "stop", Blockly.Python.ORDER_ATOMIC);
+    a = Blockly.Python.valueToCode(a, "step", Blockly.Python.ORDER_ATOMIC);
+    return ["random.randrange(" + b + ", " + c + ", " + a + ")", Blockly.Python.ORDER_ATOMIC]
+};
+
+Blockly.Python.bit_inversion = function (a) {
+    return ["~" + Blockly.Python.valueToCode(a, "data", Blockly.Python.ORDER_ATOMIC), Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_ten_convert_to = function (a) {
+    var b = Blockly.Python.valueToCode(a, "int_num", Blockly.Python.ORDER_ATOMIC);
+    return [a.getFieldValue("ten_convert_to") + "(" + b + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_convert_to_ten = function (a) {
+    var b = Blockly.Python.valueToCode(a, "convert_str", Blockly.Python.ORDER_ATOMIC);
+    a = a.getFieldValue("convert_choice");
+    return ["int(" + b + ", " + a + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_ten_convert_to = function (a) {
+    var b = Blockly.Python.valueToCode(a, "int_num", Blockly.Python.ORDER_ATOMIC);
+    return [a.getFieldValue("ten_convert_to") + "(" + b + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_high_low = function (a) {
+    return [a.getFieldValue("high_low"), Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_baudrate = function (a) {
+    return [a.getFieldValue("baudrate"), Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_start_new_thread = function (a) {
+    Blockly.Python.definitions_.import_thread = "import _thread";
+    var b = a.getFieldValue("thread_name"),
+        c = Blockly.Python.statementToCode(a, "DO"),
+        c = Blockly.Python.addLoopTrap(c, a.id) || Blockly.Python.PASS;
+    Blockly.Python.codeFunctions_["thread_" + b] = "def thread_" + b + "():\n" + c;
+    return "_thread.start_new_thread(thread_" + b + ", ())\n"
+};
+
+Blockly.Python.CocoRobo_ten_converted_to_bytes = function (a) {
+    Blockly.Python.definitions_.import_struct = "import struct";
+    var b = Blockly.Python.valueToCode(a, "convert_num", Blockly.Python.ORDER_ATOMIC);
+    return ["struct.pack(" + a.getFieldValue("convert_choice") + ", " + b + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_int_to_chr = function (a) {
+    return ["chr(" + Blockly.Python.valueToCode(a, "convert_num", Blockly.Python.ORDER_ATOMIC) + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_hcsr04_obj = function (a) {
+    Blockly.Python.definitions_.from_hcsr04_import_HCSR04 = "from hcsr04 import HCSR04";
+    //Blockly.Python.definitions_.import_CocoRobo = "from CocoRobo import *";
+    var b = a.getFieldValue("hcsr04_name"),
+        c = Blockly.Python.valueToCode(a, "trigger", Blockly.Python.ORDER_ATOMIC);
+    a = Blockly.Python.valueToCode(a, "echo", Blockly.Python.ORDER_ATOMIC);
+    Blockly.Python.definitions_["CocoRobo_hcsr04_object" + b] = b + " \x3d HCSR04(trigger_pin\x3dPin.P" + c + ", echo_pin\x3dPin.P" + a + ")";
+    return "\n"
+};
+Blockly.Python.CocoRobo_hcsr04_distance = function (a) {
+    Blockly.Python.definitions_.from_hcsr04_import_HCSR04 = "from hcsr04 import HCSR04";
+    //Blockly.Python.definitions_.import_CocoRobo = "from CocoRobo import *";
+    var b = a.getFieldValue("hcsr04_name");
+    a = a.getFieldValue("unit");
+    return [b + ".distance_" + a + "()", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_hcsr04_distance_mm = function (a) {
+    Blockly.Python.definitions_.from_hcsr04_import_HCSR04 = "from hcsr04 import HCSR04";
+    //Blockly.Python.definitions_.import_CocoRobo = "from CocoRobo import *";
+    return [a.getFieldValue("hcsr04_name") + ".distance_mm()", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_pm2_5_MIC = function (a) {
+    //Blockly.Python.definitions_.import_CocoRobo = "from CocoRobo import *";
+    Blockly.Python.definitions_.machine_Timer = "from machine import Timer";
+    var b = Blockly.Python.valueToCode(a, "rx", Blockly.Python.ORDER_ATOMIC);
+    Blockly.Python.codeFunctions_.CocoRobo_pm2_5 = "uart\x3dUART(1, baudrate\x3d9600, rx\x3dPin.P" + b + ", timeout\x3d200)\n_pm_data \x3d [None, None, None, None, None, None, None, None, None]\ndef timer13_tick(_):\n  global _pm_data\n  try:\n      if uart.any():\n          d \x3d uart.read(0x42)\n          if d[0] \x3d\x3d 0x42 and d[1] \x3d\x3d 0x4d:\n              _pm_data \x3d [d[5], d[7], d[9], d[17], d[19], d[21], d[23], d[25], d[27]]\n  except: pass\n\ntim13 \x3d Timer(13)\ntim13.init(period\x3d1000, mode\x3dTimer.PERIODIC, callback\x3dtimer13_tick)";
+    return [a.getFieldValue("unit"), Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_pm2_5_LitresAir = function (a) {
+    //Blockly.Python.definitions_.import_CocoRobo = "from CocoRobo import *";
+    Blockly.Python.definitions_.machine_Timer = "from machine import Timer";
+    var b = Blockly.Python.valueToCode(a, "rx", Blockly.Python.ORDER_ATOMIC);
+    Blockly.Python.codeFunctions_.CocoRobo_pm2_5 = "uart\x3dUART(1, baudrate\x3d9600, rx\x3dPin.P" + b + ", timeout\x3d200)\n_pm_data \x3d [None, None, None, None, None, None, None, None, None]\ndef timer13_tick(_):\n  global _pm_data\n  try:\n      if uart.any():\n          d \x3d uart.read(0x42)\n          if d[0] \x3d\x3d 0x42 and d[1] \x3d\x3d 0x4d:\n              _pm_data \x3d [d[5], d[7], d[9], d[17], d[19], d[21], d[23], d[25], d[27]]\n  except: pass\n\ntim13 \x3d Timer(13)\ntim13.init(period\x3d1000, mode\x3dTimer.PERIODIC, callback\x3dtimer13_tick)";
+    return [a.getFieldValue("unit"), Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_mac_address = function (a) {
+    Blockly.Python.definitions_.import_machine = "import machine";
+    Blockly.Python.definitions_.import_ubinascii = "import ubinascii";
+    return ["ubinascii.hexlify(machine.unique_id()).decode().upper()", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_ujson_loads = function (a) {
+    Blockly.Python.definitions_.import_ujson = "import json";
+    return ["json.loads(" + Blockly.Python.valueToCode(a, "data", Blockly.Python.ORDER_ATOMIC) + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_code_annotation = function (a) {
+    var code = Blockly.Python.valueToCode(a, "data", Blockly.Python.ORDER_ATOMIC);
+    return "# " + code.replace('"', '').replace('"', '') + "\n";
+};
+Blockly.Python.CocoRobo_ujson_dumps = function (a) {
+    Blockly.Python.definitions_.import_ujson = "import json";
+    return ["json.dumps(" + Blockly.Python.valueToCode(a, "data", Blockly.Python.ORDER_ATOMIC) + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_base64_to_data = function (a) {
+    Blockly.Python.definitions_.v831_import_base64 = "import base64";
+    return ["base64.b64decode(" + Blockly.Python.valueToCode(a, "data", Blockly.Python.ORDER_ATOMIC) + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_data_to_base64 = function (a) {
+    Blockly.Python.definitions_.v831_import_base64 = "import base64";
+    return ["base64.b64encode(" + Blockly.Python.valueToCode(a, "data", Blockly.Python.ORDER_ATOMIC) + ".encode('utf-8'))", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_hex_to_bin_str = function (a) {
+    return ["bytes.fromhex(" + Blockly.Python.valueToCode(a, "convert_chr", Blockly.Python.ORDER_ATOMIC) + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_str_to_hex = function (a) {
+    return [Blockly.Python.valueToCode(a, "convert_chr", Blockly.Python.ORDER_ATOMIC) + ".encode().hex()", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_chr_to_int = function (a) {
+    return ["ord(" + Blockly.Python.valueToCode(a, "convert_chr", Blockly.Python.ORDER_ATOMIC) + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.math_convert = function (a) {
+    var b = a.getFieldValue("TYPE0");
+    a = Blockly.Python.valueToCode(a, "INPUT0", Blockly.Python.ORDER_ATOMIC);
+    return [b + "(" + a + ")", Blockly.Python.ORDER_FUNCTION_CALL]
+};
+Blockly.Python.math_number_bits_ops = function (a) {
+    var b = {
+        " | ": [" | ", Blockly.Python.ORDER_BITWISE_OR],
+        " & ": [" & ", Blockly.Python.ORDER_BITWISE_AND],
+        " ^ ": [" ^ ", Blockly.Python.ORDER_BITWISE_XOR],
+        " >> ": [" >> ", Blockly.Python.ORDER_BITWISE_SHIFT],
+        " << ": [" << ", Blockly.Python.ORDER_BITWISE_SHIFT]
+    }[a.getFieldValue("OP")]
+        , c = b[0];
+    b = b[1];
+    var d = Blockly.Python.valueToCode(a, "A", b) || "0";
+    a = Blockly.Python.valueToCode(a, "B", b) || "0";
+    return [d + c + a, b]
+}
+
+Blockly.Python.controls_repeat_forever = function (a) {
+    var b = Blockly.Python.statementToCode(a, "DO");
+    b = Blockly.Python.addLoopTrap(b, a.id) || Blockly.Python.PASS;
+    return "while True:\n" + b
+}
+export default Blockly

+ 8 - 0
src/blockly/pythonCode/index.js

@@ -0,0 +1,8 @@
+import basicCode from './basicCode'
+import logic from './logic'
+
+const python = {
+    ...basicCode,...logic
+}
+
+export default python

+ 31 - 0
src/blockly/pythonCode/logic.js

@@ -0,0 +1,31 @@
+import { pythonGenerator } from "blockly/python";
+
+const Blockly = {
+    Python: pythonGenerator || { Msg: Object.create(null) }
+};
+Blockly.Python.CocoRobo_type = function(a) {
+    return ["type(" + (Blockly.Python.valueToCode(a, "VAR", Blockly.Python.ORDER_ATOMIC) || "None") + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_type_is = function(a) {
+    var b = Blockly.Python.valueToCode(a, "VAR", Blockly.Python.ORDER_ATOMIC) || "None";
+    a = a.getFieldValue("TYPE");
+    return ["type(" + b + ") \x3d\x3d " + a, Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_eval = function(a) {
+    return ["eval(" + (Blockly.Python.valueToCode(a, "VAR", Blockly.Python.ORDER_ATOMIC) || "None") + ")", Blockly.Python.ORDER_ATOMIC]
+};
+Blockly.Python.CocoRobo_return = function(a) {
+    return "return " + (Blockly.Python.valueToCode(a, "VAR", Blockly.Python.ORDER_ATOMIC) || "None") + "\n"
+};
+Blockly.Python.CocoRobo_try_except = function(a) {
+    var b = Blockly.Python.statementToCode(a, "TRY") || Blockly.Python.PASS;
+    a = Blockly.Python.statementToCode(a, "EXCEPT") || Blockly.Python.PASS;
+    return "try:\n" + b + "except:\n" + a
+};
+Blockly.Python.CocoRobo_try_except_finally = function(a) {
+    var b = Blockly.Python.statementToCode(a, "TRY") || Blockly.Python.PASS,
+        c = Blockly.Python.statementToCode(a, "EXCEPT") || Blockly.Python.PASS;
+    a = Blockly.Python.statementToCode(a, "FINALLY") || Blockly.Python.PASS;
+    return "try:\n" + b + "except:\n" + c + "finally:\n" + a
+};
+export default Blockly

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio