1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-04-27 19:05:16 +00:00

Optimized translate module (#4044)

* combine dtable translate

* update cdoc html

* optimized code
This commit is contained in:
杨顺强 2019-09-02 15:11:37 +08:00 committed by Daniel Pan
parent 54b8044056
commit 64b7222bd2
13 changed files with 106 additions and 441 deletions

1
.gitignore vendored
View File

@ -59,6 +59,7 @@ tags
frontend/webpack-stats.dev.json
frontend/node_modules
frontend/build
frontend/package-lock.json
/.idea

View File

@ -184,9 +184,9 @@
}
},
"@seafile/dtable": {
"version": "0.0.140",
"resolved": "https://registry.npmjs.org/@seafile/dtable/-/dtable-0.0.140.tgz",
"integrity": "sha512-P3dhO+RXhIALLoJW3CccXal1GIt2P4eHiGafZrqROhceQhVT+jSjsYHRwkJUeHopFV6uUi4GQjm+DGCb3t1a9g==",
"version": "0.0.145",
"resolved": "https://registry.npmjs.org/@seafile/dtable/-/dtable-0.0.145.tgz",
"integrity": "sha512-IVo+BUOdYtak/+2kLP+tD+zgHAjTRoqkLE2W2JYXsPmK1+zOgpNlo7QRcqTjP3gJ799cpip3KUMva1jxdsmR5g==",
"requires": {
"@babel/plugin-proposal-export-default-from": "^7.5.2",
"@babel/plugin-proposal-export-namespace-from": "^7.5.2",
@ -198,6 +198,9 @@
"copy-to-clipboard": "^3.2.0",
"deep-copy": "^1.4.2",
"glamor": "^2.20.40",
"i18next": "^17.0.13",
"i18next-browser-languagedetector": "^3.0.3",
"i18next-xhr-backend": "^3.1.2",
"is-hotkey": "^0.1.4",
"keymirror": "^0.1.1",
"moment": "^2.24.0",
@ -210,6 +213,7 @@
"react-contextmenu": "^2.11.0",
"react-dnd": "^2.6.0",
"react-dnd-html5-backend": "^2.6.0",
"react-i18next": "^10.12.2",
"react-image-lightbox": "^5.1.0",
"react-is-deprecated": "^0.1.2",
"react-select": "^2.4.3",
@ -238,351 +242,6 @@
"react-lifecycles-compat": "^3.0.4"
}
},
"@seafile/seafile-editor": {
"version": "0.2.62",
"resolved": "https://registry.npmjs.org/@seafile/seafile-editor/-/seafile-editor-0.2.62.tgz",
"integrity": "sha512-DfcIrmmqGclXonJV0gJ3IT6COAEM42nwMVqAgsHgy5uZoZA5perWTs94lTzAlGjyYtJD83h6/VzFzb+cUQ6nOQ==",
"requires": {
"@seafile/seafile-calendar": "^0.0.6",
"@seafile/slate-react": "^0.1.8",
"autoprefixer": "7.1.6",
"case-sensitive-paths-webpack-plugin": "2.1.1",
"chalk": "1.1.3",
"codemirror": "^5.37.0",
"crypto-js": "^3.1.9-1",
"css-loader": "0.28.7",
"deep-equal": "^1.0.1",
"deepmerge": "^2.1.0",
"detect-indent": "^4.0.0",
"detect-newline": "^2.1.0",
"dotenv": "4.0.0",
"dotenv-expand": "4.2.0",
"ends-with": "^0.2.0",
"extract-text-webpack-plugin": "3.0.2",
"file-loader": "1.1.5",
"fs-extra": "3.0.1",
"glamor": "^2.20.40",
"hast-util-sanitize": "^1.1.2",
"html-webpack-plugin": "2.29.0",
"i18next": "^11.3.2",
"i18next-browser-languagedetector": "^2.2.0",
"i18next-xhr-backend": "^1.5.1",
"image-extensions": "^1.1.0",
"immutable": "^3.8.2",
"is-data-uri": "^0.1.0",
"is-hotkey": "^0.1.3",
"is-url": "^1.2.4",
"jszip": "^3.2.1",
"lodash": "^4.17.5",
"mdast-util-definitions": "^1.2.2",
"moment": "^2.22.2",
"object-assign": "4.1.1",
"package.json": "^2.0.1",
"postcss-flexbugs-fixes": "3.2.0",
"postcss-loader": "2.0.8",
"prismjs": "^1.15.0",
"promise": "8.0.1",
"prop-types": "^15.6.1",
"raf": "3.4.0",
"react": "^16.2.0",
"react-dev-utils": "^5.0.2",
"react-dom": "^16.2.0",
"react-i18next": "^7.6.1",
"react-mentions": "^3.0.2",
"react-s-alert": "^1.4.1",
"react-select": "^2.4.2",
"reactstrap": "^5.0.0-beta.3",
"rehype-format": "^2.2.0",
"rehype-raw": "^2.0.0",
"rehype-stringify": "^3.0.0",
"remark": "^9.0.0",
"remark-breaks": "^1.0.0",
"remark-parse": "^5.0.0",
"remark-rehype": "^3.0.0",
"remark-slug": "^5.0.0",
"request": "^2.88.0",
"seafile-js": "^0.2.97",
"seafile-ui": "^0.1.10",
"slate": "0.44.13",
"slate-base64-serializer": "^0.2.72",
"slate-hotkeys": "0.2.3",
"slate-html-serializer": "0.7.2",
"slate-schema-violations": "0.1.39",
"socket.io-client": "^2.1.1",
"style-loader": "0.19.0",
"toggle-selection": "^1.0.6",
"unified": "^6.1.6",
"url-loader": "0.6.2",
"url-parse": "^1.4.3",
"valid-url": "^1.0.9",
"xtend": "^4.0.1"
},
"dependencies": {
"@seafile/seafile-calendar": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/@seafile/seafile-calendar/-/seafile-calendar-0.0.6.tgz",
"integrity": "sha512-lN/KwrmbQGtTdojdry12Z0ovcqqQwTHKBRrZrRuKaT8qEKX8i27y8R/wcV96dwUAOsXTKH2L3/kPgXL8N+G+eg==",
"requires": {
"babel-runtime": "6.x",
"classnames": "2.x",
"moment": "2.x",
"prop-types": "^15.5.8",
"rc-trigger": "^2.2.0",
"rc-util": "^4.1.1",
"react-lifecycles-compat": "^3.0.4"
}
},
"ajv": {
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.3.0"
}
},
"autoprefixer": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz",
"integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==",
"requires": {
"browserslist": "^2.5.1",
"caniuse-lite": "^1.0.30000748",
"normalize-range": "^0.1.2",
"num2fraction": "^1.2.2",
"postcss": "^6.0.13",
"postcss-value-parser": "^3.2.3"
}
},
"browserslist": {
"version": "2.11.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
"integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
"requires": {
"caniuse-lite": "^1.0.30000792",
"electron-to-chromium": "^1.3.30"
}
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
},
"cosmiconfig": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz",
"integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
"requires": {
"is-directory": "^0.3.1",
"js-yaml": "^3.4.3",
"minimist": "^1.2.0",
"object-assign": "^4.1.0",
"os-homedir": "^1.0.1",
"parse-json": "^2.2.0",
"require-from-string": "^1.1.0"
}
},
"fast-deep-equal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
},
"i18next": {
"version": "11.10.2",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-11.10.2.tgz",
"integrity": "sha512-1rowdX8PqrvsdFhYb3v0A/LlIHLQL1HTa4ia29IzhvNAg2fesNV7R1jXibWLmLQdz3FfTB8RuqSqDEjIawXruA=="
},
"i18next-browser-languagedetector": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-2.2.4.tgz",
"integrity": "sha512-wPbtH18FdOuB245I8Bhma5/XSDdN/HpYlX+wga1eMy+slhaFQSnrWX6fp+aYSL2eEuj0RlfHeEVz6Fo/lxAj6A=="
},
"i18next-xhr-backend": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/i18next-xhr-backend/-/i18next-xhr-backend-1.5.1.tgz",
"integrity": "sha512-9OLdC/9YxDvTFcgsH5t2BHCODHEotHCa6h7Ly0EUlUC7Y2GS09UeoHOGj3gWKQ3HCqXz8NlH4gOrK3NNc9vPuw=="
},
"json-schema-traverse": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
},
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"requires": {
"error-ex": "^1.2.0"
}
},
"postcss": {
"version": "6.0.23",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"requires": {
"chalk": "^2.4.1",
"source-map": "^0.6.1",
"supports-color": "^5.4.0"
},
"dependencies": {
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
}
}
},
"postcss-flexbugs-fixes": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz",
"integrity": "sha512-0AuD9HG1Ey3/3nqPWu9yqf7rL0KCPu5VgjDsjf5mzEcuo9H/z8nco/fljKgjsOUrZypa95MI0kS4xBZeBzz2lw==",
"requires": {
"postcss": "^6.0.1"
}
},
"postcss-load-config": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz",
"integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
"requires": {
"cosmiconfig": "^2.1.0",
"object-assign": "^4.1.0",
"postcss-load-options": "^1.2.0",
"postcss-load-plugins": "^2.3.0"
}
},
"postcss-loader": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.8.tgz",
"integrity": "sha512-KtXBiQ/r/WYW8LxTSJK7h8wLqvCMSub/BqmRnud/Mu8RzwflW9cmXxwsMwbn15TNv287Hcufdb3ZSs7xHKnG8Q==",
"requires": {
"loader-utils": "^1.1.0",
"postcss": "^6.0.0",
"postcss-load-config": "^1.2.0",
"schema-utils": "^0.3.0"
}
},
"postcss-value-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
},
"promise": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz",
"integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=",
"requires": {
"asap": "~2.0.3"
}
},
"react-i18next": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-7.13.0.tgz",
"integrity": "sha512-35M+MZFPqHwVIas7tXWQKFrf+ozCJukNplUTiGqL8mczSk+VRBsHxxXuuQKRkz/4CcWkONGWbp/AzxfM6wZncg==",
"requires": {
"hoist-non-react-statics": "^2.3.1",
"html-parse-stringify2": "2.0.1",
"prop-types": "^15.6.0"
}
},
"react-popper": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-0.8.3.tgz",
"integrity": "sha1-D3MzMTfJ+wr27EB00tBYWgoEYeE=",
"requires": {
"popper.js": "^1.12.9",
"prop-types": "^15.6.0"
}
},
"reactstrap": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-5.0.0.tgz",
"integrity": "sha512-y0eju/LAK7gbEaTFfq2iW92MF7/5Qh0tc1LgYr2mg92IX8NodGc03a+I+cp7bJ0VXHAiLy0bFL9UP89oSm4cBg==",
"requires": {
"classnames": "^2.2.3",
"lodash.isfunction": "^3.0.9",
"lodash.isobject": "^3.0.2",
"lodash.tonumber": "^4.0.3",
"prop-types": "^15.5.8",
"react-popper": "^0.8.3",
"react-transition-group": "^2.2.1"
}
},
"schema-utils": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
"integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
"requires": {
"ajv": "^5.0.0"
}
}
}
},
"@seafile/slate-react": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/@seafile/slate-react/-/slate-react-0.1.8.tgz",
"integrity": "sha512-IHHrEH0gTmZlZB4z6cB6eCsPkO6p558W6CG3ytQKwN8WOLkCJ/EQMtHcz5ZWPsAF+UvdpRUADqR48qfqD6bKJQ==",
"requires": {
"debug": "^3.1.0",
"get-window": "^1.1.1",
"is-window": "^1.0.2",
"lodash": "^4.1.1",
"memoize-one": "^4.0.0",
"prop-types": "^15.5.8",
"react-immutable-proptypes": "^2.1.0",
"selection-is-backward": "^1.0.0",
"slate-base64-serializer": "^0.2.95",
"slate-dev-environment": "^0.2.1",
"slate-hotkeys": "^0.2.8",
"slate-plain-serializer": "^0.6.34",
"slate-prop-types": "^0.5.25",
"slate-react-placeholder": "^0.1.13",
"tiny-invariant": "^1.0.1",
"tiny-warning": "^0.0.3"
},
"dependencies": {
"memoize-one": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz",
"integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw=="
},
"slate-hotkeys": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/slate-hotkeys/-/slate-hotkeys-0.2.9.tgz",
"integrity": "sha512-y+C/s5vJEmBxo8fIqHmUcdViGwALL/A6Qow3sNG1OHYD5SI11tC2gfYtGbPh+2q0H7O4lufffCmFsP5bMaDHqA==",
"requires": {
"is-hotkey": "0.1.4",
"slate-dev-environment": "^0.2.2"
}
}
}
},
"ajv": {
"version": "6.10.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
@ -678,18 +337,10 @@
"warning": "^4.0.3"
}
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"electron-to-chromium": {
"version": "1.3.247",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.247.tgz",
"integrity": "sha512-j/Rzx1FyVTwNifpG/DPQKEMz0mruRwoPpJ6Y1tTVmj6+/zAVzG8/YHZwBMLYCZgQH6seLOqaVxZ3RY3KMrT5IQ=="
"version": "1.3.250",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.250.tgz",
"integrity": "sha512-2OAU91iUw83QvzuWJPfT+FMj+O+DC1EyTx1QBFcc9WZzOQSfZEAWINpdLWElxkgfiqTvQRDOKg0DkMZd9QoNug=="
},
"esprima": {
"version": "4.0.1",
@ -725,21 +376,11 @@
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
"integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA=="
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"moment": {
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"parse-json": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
@ -860,26 +501,6 @@
"ajv-keywords": "^3.1.0"
}
},
"slate": {
"version": "0.44.13",
"resolved": "https://registry.npmjs.org/slate/-/slate-0.44.13.tgz",
"integrity": "sha512-GcDon/8iN6Mmonl7FucSDGs9KYDB7S9gs+fnnJDny5HFsHGGDTDwfBnRXMyKDC307sRZ+yhauqKSulHkoBdB9A==",
"requires": {
"debug": "^3.1.0",
"direction": "^0.1.5",
"esrever": "^0.2.0",
"is-plain-object": "^2.0.4",
"lodash": "^4.17.4",
"tiny-invariant": "^1.0.1",
"tiny-warning": "^0.0.3",
"type-of": "^2.0.1"
}
},
"slate-prop-types": {
"version": "0.5.41",
"resolved": "https://registry.npmjs.org/slate-prop-types/-/slate-prop-types-0.5.41.tgz",
"integrity": "sha512-fLcXlugO9btF5b/by+dA+n8fn2mET75VGWltqFNxGdl6ncyBtrGspWA7mLVRFSqQWOS/Ig4A3URCRumOBBCUfQ=="
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@ -888,37 +509,6 @@
"has-flag": "^3.0.0"
}
},
"unified": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
"integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
"requires": {
"bail": "^1.0.0",
"extend": "^3.0.0",
"is-plain-obj": "^1.1.0",
"trough": "^1.0.0",
"vfile": "^2.0.0",
"x-is-string": "^0.1.0"
}
},
"vfile": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
"integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
"requires": {
"is-buffer": "^1.1.4",
"replace-ext": "1.0.0",
"unist-util-stringify-position": "^1.0.0",
"vfile-message": "^1.0.0"
},
"dependencies": {
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
}
}
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
@ -954,9 +544,9 @@
}
},
"@seafile/seafile-editor": {
"version": "0.2.69",
"resolved": "https://registry.npmjs.org/@seafile/seafile-editor/-/seafile-editor-0.2.69.tgz",
"integrity": "sha512-RQOaoQIKo8CMLSa/V8vbjrIf+yyNf3lnHl4D4H+BmJtDjwCrgypa8n1wZI3wqa4PoK15RmCkfKIrcVh2JuejyQ==",
"version": "0.2.72",
"resolved": "https://registry.npmjs.org/@seafile/seafile-editor/-/seafile-editor-0.2.72.tgz",
"integrity": "sha512-joCJtRfxRyxEMnIuLxv3Z2UaHOcaLqZ8zzhfKrpI0FCIFqdSvWxzHGLIGLKfD0q7kC+AG+Ut9ZJSLzTY0HAVcA==",
"requires": {
"@seafile/seafile-calendar": "^0.0.6",
"@seafile/slate-react": "^0.1.8",
@ -8417,9 +8007,9 @@
}
},
"hoist-non-react-statics": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz",
"integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w=="
"version": "2.5.5",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
"integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
},
"home-or-tmp": {
"version": "2.0.0",
@ -13797,9 +13387,9 @@
}
},
"electron-to-chromium": {
"version": "1.3.247",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.247.tgz",
"integrity": "sha512-j/Rzx1FyVTwNifpG/DPQKEMz0mruRwoPpJ6Y1tTVmj6+/zAVzG8/YHZwBMLYCZgQH6seLOqaVxZ3RY3KMrT5IQ=="
"version": "1.3.250",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.250.tgz",
"integrity": "sha512-2OAU91iUw83QvzuWJPfT+FMj+O+DC1EyTx1QBFcc9WZzOQSfZEAWINpdLWElxkgfiqTvQRDOKg0DkMZd9QoNug=="
},
"postcss": {
"version": "7.0.17",
@ -14203,9 +13793,9 @@
}
},
"electron-to-chromium": {
"version": "1.3.247",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.247.tgz",
"integrity": "sha512-j/Rzx1FyVTwNifpG/DPQKEMz0mruRwoPpJ6Y1tTVmj6+/zAVzG8/YHZwBMLYCZgQH6seLOqaVxZ3RY3KMrT5IQ=="
"version": "1.3.250",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.250.tgz",
"integrity": "sha512-2OAU91iUw83QvzuWJPfT+FMj+O+DC1EyTx1QBFcc9WZzOQSfZEAWINpdLWElxkgfiqTvQRDOKg0DkMZd9QoNug=="
},
"postcss": {
"version": "7.0.17",

View File

@ -4,9 +4,9 @@
"private": true,
"dependencies": {
"@reach/router": "^1.2.0",
"@seafile/dtable": "0.0.140",
"@seafile/dtable": "0.0.145",
"@seafile/resumablejs": "^1.1.13",
"@seafile/seafile-editor": "^0.2.69",
"@seafile/seafile-editor": "^0.2.72",
"MD5": "^1.3.0",
"autoprefixer": "7.1.6",
"classnames": "^2.2.6",

View File

@ -35,7 +35,7 @@ const useYarn = fs.existsSync(paths.yarnLockFile);
const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
const localesPath = paths.appNodeModules + '/@seafile/seafile-editor/public/locales';
const localesPath = '../media/assets/frontend/locales';
const localesBuildPath = paths.appBuild + '/locales';
// Warn and crash if required files are missing
if (!checkRequiredFiles([paths.appIndexJs])) {

View File

@ -0,0 +1,42 @@
import i18n from 'i18next';
import Backend from 'i18next-xhr-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
import { initReactI18next } from 'react-i18next';
let mediaUrl = window.app.pageOptions.mediaUrl;
const lang = window.app.pageOptions.lang;
i18n
.use(Backend)
.use(LanguageDetector)
.use(initReactI18next)
.init({
lng: lang,
fallbackLng: 'en',
ns: ['dtable', 'translations'],
defaultNS: 'dtable',
whitelist: ['en', 'zh-CN', 'fr', 'de', 'cs', 'es', 'es-AR', 'es-MX', 'ru'],
backend: {
loadPath: mediaUrl + 'assets/frontend/locales/{{ lng }}/{{ ns }}.json',
// loadPath: '/media/locales/{{lng}}/{{ns}}.json',
// loadPath: function(lng, ns) {
},
debug: true, // console log if debug: true
interpolation: {
escapeValue: false, // not needed for react!!
},
contextSeparator: " ",
load: 'currentOnly',
react: {
wait: true,
}
});
export default i18n;

View File

@ -3,7 +3,7 @@ import React from 'react';
import ReactDOM from 'react-dom';
import MarkdownEditor from './markdown-editor';
import { I18nextProvider } from 'react-i18next';
import i18n from './i18n';
import i18n from './i18n-seafile-editor';
import './assets/css/fa-solid.css';
import './assets/css/fa-regular.css';
import './assets/css/fontawesome.css';

View File

@ -1,7 +1,7 @@
import React, { Suspense} from 'react';
import ReactDOM from 'react-dom';
import { I18nextProvider } from 'react-i18next';
import i18n from './i18n';
import i18n from './i18n-seafile-editor';
import { seafileAPI } from './utils/seafile-api';
import io from 'socket.io-client';
import { gettext } from './utils/constants';

View File

@ -2,9 +2,11 @@ import React from 'react';
import ReactDOM from 'react-dom';
import { seafileAPI } from './utils/seafile-api';
import ViewFileDtable from '@seafile/dtable/es';
import { I18nextProvider } from 'react-i18next';
import i18n from './i18n-dtable';
import './css/view-file-dtable.css';
const { server, workspaceID, username, userNickName, contactEmail, fileName, filePath, dtableUuid, dtableServer, dtableSocket, mediaUrl } = window.app.pageOptions;
const { server, workspaceID, username, userNickName, contactEmail, fileName, filePath, dtableUuid, dtableServer, dtableSocket, mediaUrl, lang } = window.app.pageOptions;
window.dtable = {};
window.dtable = {
workspaceID: workspaceID,
@ -18,7 +20,8 @@ window.dtable = {
fileName: fileName,
dtableUuid: dtableUuid,
mediaUrl: mediaUrl,
accessToken: ''
accessToken: '',
lang: lang
};
window.seafileAPI = seafileAPI;
@ -33,6 +36,8 @@ class ViewFileSDB extends React.Component {
}
ReactDOM.render(
<ViewFileSDB />,
<I18nextProvider i18n={ i18n }>
<ViewFileSDB />
</I18nextProvider>,
document.getElementById('wrapper')
);

View File

@ -0,0 +1,11 @@
{
"Saving...": "Saving...",
"All changes saved": "All changes saved",
"Insert Row": "Insert Row",
"Duplicate Row": "Duplicate Row",
"Delete Row": "Delete Row",
"Delete Rows": "Delete Rows",
"Insert Row Above": "Insert Row Above",
"Insert Row Below": "Insert Row Below",
"Drag and drop images or click or paste here to add" : "Drag and drop images or click or paste here to add"
}

View File

@ -0,0 +1,11 @@
{
"Saving...": "保存...",
"All changes saved": "保存所有更改",
"Insert Row": "插入行",
"Duplicate Row": "复制行",
"Delete Row": "删除行",
"Delete Rows": "删除多行",
"Insert Row Above": "上方插入行",
"Insert Row Below": "下方插入行",
"Drag and drop images or click or paste here to add": "将图片拖拽或点击或粘贴到此处进行上传"
}

View File

@ -6,6 +6,10 @@
{% render_bundle 'viewCdoc' 'css' %}
{% endblock %}
{% block extra_data %}
lang: '{{ LANGUAGE_CODE }}'
{% endblock %}
{% block render_bundle %}
{% render_bundle 'viewCdoc' 'js' %}
{% endblock %}

View File

@ -41,7 +41,8 @@
dtableUuid: '{{ dtable_uuid }}',
mediaUrl: '{{ media_url }}',
dtableServer: '{{ dtable_server }}',
dtableSocket: '{{ dtable_socket }}'
dtableSocket: '{{ dtable_socket }}',
lang: '{{ LANGUAGE_CODE }}'
}
};
</script>