You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2020/09/01 06:56:54 UTC

[incubator-echarts-doc] branch next updated: feat(editor): add google translate

This is an automated email from the ASF dual-hosted git repository.

shenyi pushed a commit to branch next
in repository https://gitbox.apache.org/repos/asf/incubator-echarts-doc.git


The following commit(s) were added to refs/heads/next by this push:
     new 0f0fb8a  feat(editor): add google translate
0f0fb8a is described below

commit 0f0fb8a4a21d163f78d24a988c834557dccdfdee
Author: pissang <bm...@gmail.com>
AuthorDate: Tue Sep 1 14:56:39 2020 +0800

    feat(editor): add google translate
---
 editor/package-lock.json         | 125 ++++++++++++++++++++++++++++++++++++++-
 editor/package.json              |   2 +
 editor/src/components/Target.vue |  29 +++++++++
 3 files changed, 154 insertions(+), 2 deletions(-)

diff --git a/editor/package-lock.json b/editor/package-lock.json
index 28ee9e1..91ee05b 100644
--- a/editor/package-lock.json
+++ b/editor/package-lock.json
@@ -2378,6 +2378,43 @@
       "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==",
       "dev": true
     },
+    "axios": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
+      "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
+      "requires": {
+        "follow-redirects": "1.5.10",
+        "is-buffer": "^2.0.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.5.10",
+          "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+          "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+          "requires": {
+            "debug": "=3.1.0"
+          }
+        },
+        "is-buffer": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+          "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        }
+      }
+    },
     "babel-eslint": {
       "version": "10.1.0",
       "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
@@ -6955,6 +6992,85 @@
         "minimatch": "~3.0.2"
       }
     },
+    "google-translate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/google-translate/-/google-translate-3.0.0.tgz",
+      "integrity": "sha512-NQrP9gnFBO9LpEAN7Ia4kiyycbubqG+vdmxhQE5hjhAeU6U2n1vM7Kb1wtI3YU7Ghk3+bdfiRiAr6Zhox/UV2w==",
+      "dev": true,
+      "requires": {
+        "async": "3.1.0",
+        "he": "1.2.0",
+        "request": "2.88.0",
+        "underscore": "1.9.1"
+      },
+      "dependencies": {
+        "async": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz",
+          "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==",
+          "dev": true
+        },
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.5.2",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+          "dev": true
+        },
+        "request": {
+          "version": "2.88.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+          "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+          "dev": true,
+          "requires": {
+            "aws-sign2": "~0.7.0",
+            "aws4": "^1.8.0",
+            "caseless": "~0.12.0",
+            "combined-stream": "~1.0.6",
+            "extend": "~3.0.2",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.3.2",
+            "har-validator": "~5.1.0",
+            "http-signature": "~1.2.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.19",
+            "oauth-sign": "~0.9.0",
+            "performance-now": "^2.1.0",
+            "qs": "~6.5.2",
+            "safe-buffer": "^5.1.2",
+            "tough-cookie": "~2.4.3",
+            "tunnel-agent": "^0.6.0",
+            "uuid": "^3.3.2"
+          }
+        },
+        "tough-cookie": {
+          "version": "2.4.3",
+          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+          "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+          "dev": true,
+          "requires": {
+            "psl": "^1.1.24",
+            "punycode": "^1.4.1"
+          }
+        }
+      }
+    },
+    "google-translate-api-browser": {
+      "version": "1.1.71",
+      "resolved": "https://registry.npmjs.org/google-translate-api-browser/-/google-translate-api-browser-1.1.71.tgz",
+      "integrity": "sha512-HJuhbkz6qA5aCkM9K8uX7Hfvt2f+sEpaomCFvvSFaeDDtdXx+2gjYRyyP6WqCXLS63kqNgZmRZ2a4LWwLNoM1w==",
+      "requires": {
+        "axios": "^0.18.0",
+        "querystring": "^0.2.0"
+      }
+    },
     "got": {
       "version": "9.6.0",
       "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
@@ -11036,8 +11152,7 @@
     "querystring": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
-      "dev": true
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
     },
     "querystring-es3": {
       "version": "0.2.1",
@@ -13580,6 +13695,12 @@
         }
       }
     },
+    "underscore": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
+      "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==",
+      "dev": true
+    },
     "unicode-canonical-property-names-ecmascript": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
diff --git a/editor/package.json b/editor/package.json
index 74776ea..5654b77 100644
--- a/editor/package.json
+++ b/editor/package.json
@@ -17,6 +17,7 @@
     "@simonwep/selection-js": "^1.7.1",
     "codemirror": "^5.57.0",
     "core-js": "^3.6.5",
+    "google-translate-api-browser": "^1.1.71",
     "lodash": "^4.17.20",
     "quasar": "^1.0.0",
     "socket.io": "^2.3.0"
@@ -32,6 +33,7 @@
     "eslint-plugin-promise": "^4.0.1",
     "eslint-plugin-standard": "^4.0.0",
     "eslint-plugin-vue": "^6.1.2",
+    "google-translate": "^3.0.0",
     "nodemon": "^2.0.4"
   },
   "browserslist": [
diff --git a/editor/src/components/Target.vue b/editor/src/components/Target.vue
index be908fe..c253a75 100644
--- a/editor/src/components/Target.vue
+++ b/editor/src/components/Target.vue
@@ -13,6 +13,7 @@
             'block-container', 'block-level-' + block.level || 0, 'block-container-' + block.type
         ]">
             <Block :block="block"></Block>
+
             <div class="block-ops row">
                 <q-btn icon="more_vert" color="grey-6" flat round size="xs">
                     <q-menu
@@ -27,6 +28,13 @@
                                 </q-item>
                                 <q-separator spaced />
                             </template>
+                            <template v-if="block.type === 'content'">
+                                <q-item clickable v-close-popup @click="translateContentBlock(block)">
+                                    <q-item-section avatar><q-icon name="translate" /></q-item-section>
+                                    <q-item-section>Translate to English</q-item-section>
+                                </q-item>
+                                <q-separator spaced />
+                            </template>
                             <q-item clickable v-close-popup @click="removeBlock(block)">
                                 <q-item-section avatar><q-icon name="delete" /></q-item-section>
                                 <q-item-section>Delete</q-item-section>
@@ -84,6 +92,11 @@
 import Block from './Block.vue';
 import _ from 'lodash';
 import { store } from '../store/store';
+import { setCORS } from 'google-translate-api-browser';
+import { Notify } from 'quasar';
+// setting up cors-anywhere server address
+const translate = setCORS('http://cors-anywhere.herokuapp.com/');
+
 // import Selection from '@simonwep/selection-js';
 
 export default {
@@ -151,6 +164,22 @@ export default {
 
         },
 
+        translateContentBlock(block) {
+            block.value = translate(block.value, {
+                to: 'en'
+            }).then(res => {
+                block.value = res.text;
+
+                Notify({
+                    message: 'Translation Success'
+                });
+            }).catch(err => {
+                Notify({
+                    message: 'Translation Failed ' + err
+                });
+            })
+        },
+
         removeBlock(block) {
             const idx = this.target.blocks.indexOf(block);
             if (idx >= 0) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org