更新翻译函数
This commit is contained in:
parent
4a51739f03
commit
47a4fd1c99
@ -12,6 +12,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"art-template": "^4.13.2",
|
"art-template": "^4.13.2",
|
||||||
|
"dayjs": "^1.10.8",
|
||||||
"deepmerge": "^4.2.2",
|
"deepmerge": "^4.2.2",
|
||||||
"glob": "^7.2.0",
|
"glob": "^7.2.0",
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
|
239
pnpm-lock.yaml
generated
239
pnpm-lock.yaml
generated
@ -4,6 +4,7 @@ specifiers:
|
|||||||
'@babel/cli': ^7.17.6
|
'@babel/cli': ^7.17.6
|
||||||
'@babel/core': ^7.17.5
|
'@babel/core': ^7.17.5
|
||||||
art-template: ^4.13.2
|
art-template: ^4.13.2
|
||||||
|
dayjs: ^1.10.8
|
||||||
deepmerge: ^4.2.2
|
deepmerge: ^4.2.2
|
||||||
glob: ^7.2.0
|
glob: ^7.2.0
|
||||||
gulp: ^4.0.2
|
gulp: ^4.0.2
|
||||||
@ -15,6 +16,7 @@ specifiers:
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
art-template: 4.13.2
|
art-template: 4.13.2
|
||||||
|
dayjs: registry.npmmirror.com/dayjs/1.10.8
|
||||||
deepmerge: 4.2.2
|
deepmerge: 4.2.2
|
||||||
glob: 7.2.0
|
glob: 7.2.0
|
||||||
gulp: 4.0.2
|
gulp: 4.0.2
|
||||||
@ -54,8 +56,8 @@ packages:
|
|||||||
slash: 2.0.0
|
slash: 2.0.0
|
||||||
source-map: 0.5.7
|
source-map: 0.5.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3
|
'@nicolo-ribaudo/chokidar-2': registry.npmmirror.com/@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3
|
||||||
chokidar: 3.5.3
|
chokidar: registry.npmmirror.com/chokidar/3.5.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@babel/code-frame/7.16.7:
|
/@babel/code-frame/7.16.7:
|
||||||
@ -529,7 +531,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
callsites: 3.1.0
|
callsites: 3.1.0
|
||||||
graceful-fs: 4.2.9
|
graceful-fs: 4.2.9
|
||||||
source-map: 0.6.1
|
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@jest/test-result/27.5.1:
|
/@jest/test-result/27.5.1:
|
||||||
@ -604,12 +606,6 @@ packages:
|
|||||||
'@jridgewell/sourcemap-codec': 1.4.11
|
'@jridgewell/sourcemap-codec': 1.4.11
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3:
|
|
||||||
resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==}
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@sinonjs/commons/1.8.3:
|
/@sinonjs/commons/1.8.3:
|
||||||
resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==}
|
resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1063,14 +1059,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/bindings/1.5.0:
|
|
||||||
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
|
|
||||||
requiresBuild: true
|
|
||||||
dependencies:
|
|
||||||
file-uri-to-path: 1.0.0
|
|
||||||
dev: false
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/brace-expansion/1.1.11:
|
/brace-expansion/1.1.11:
|
||||||
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1205,42 +1193,6 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/chokidar/2.1.8:
|
|
||||||
resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==}
|
|
||||||
deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
|
|
||||||
dependencies:
|
|
||||||
anymatch: 2.0.0
|
|
||||||
async-each: 1.0.3
|
|
||||||
braces: 2.3.2
|
|
||||||
glob-parent: 3.1.0
|
|
||||||
inherits: 2.0.4
|
|
||||||
is-binary-path: 1.0.1
|
|
||||||
is-glob: 4.0.3
|
|
||||||
normalize-path: 3.0.0
|
|
||||||
path-is-absolute: 1.0.1
|
|
||||||
readdirp: 2.2.1
|
|
||||||
upath: 1.2.0
|
|
||||||
optionalDependencies:
|
|
||||||
fsevents: 1.2.13
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/chokidar/3.5.3:
|
|
||||||
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
|
|
||||||
engines: {node: '>= 8.10.0'}
|
|
||||||
requiresBuild: true
|
|
||||||
dependencies:
|
|
||||||
anymatch: 3.1.2
|
|
||||||
braces: 3.0.2
|
|
||||||
glob-parent: 5.1.2
|
|
||||||
is-binary-path: 2.1.0
|
|
||||||
is-glob: 4.0.3
|
|
||||||
normalize-path: 3.0.0
|
|
||||||
readdirp: 3.6.0
|
|
||||||
optionalDependencies:
|
|
||||||
fsevents: 2.3.2
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/ci-info/3.3.0:
|
/ci-info/3.3.0:
|
||||||
resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==}
|
resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -1263,7 +1215,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==}
|
resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==}
|
||||||
engines: {node: '>= 4.0'}
|
engines: {node: '>= 4.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
source-map: 0.6.1
|
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/cliui/3.2.0:
|
/cliui/3.2.0:
|
||||||
@ -1662,7 +1614,7 @@ packages:
|
|||||||
esutils: 2.0.3
|
esutils: 2.0.3
|
||||||
optionator: 0.8.3
|
optionator: 0.8.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
source-map: 0.6.1
|
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/escodegen/2.0.0:
|
/escodegen/2.0.0:
|
||||||
@ -1675,7 +1627,7 @@ packages:
|
|||||||
esutils: 2.0.3
|
esutils: 2.0.3
|
||||||
optionator: 0.8.3
|
optionator: 0.8.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
source-map: 0.6.1
|
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/esprima/4.0.1:
|
/esprima/4.0.1:
|
||||||
@ -1813,12 +1765,6 @@ packages:
|
|||||||
bser: 2.1.1
|
bser: 2.1.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/file-uri-to-path/1.0.0:
|
|
||||||
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
|
|
||||||
requiresBuild: true
|
|
||||||
dev: false
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/fill-range/4.0.0:
|
/fill-range/4.0.0:
|
||||||
resolution: {integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=}
|
resolution: {integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -1938,26 +1884,6 @@ packages:
|
|||||||
/fs.realpath/1.0.0:
|
/fs.realpath/1.0.0:
|
||||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||||
|
|
||||||
/fsevents/1.2.13:
|
|
||||||
resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==}
|
|
||||||
engines: {node: '>= 4.0'}
|
|
||||||
os: [darwin]
|
|
||||||
deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
|
|
||||||
requiresBuild: true
|
|
||||||
dependencies:
|
|
||||||
bindings: 1.5.0
|
|
||||||
nan: 2.15.0
|
|
||||||
dev: false
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/fsevents/2.3.2:
|
|
||||||
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
|
|
||||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/function-bind/1.1.1:
|
/function-bind/1.1.1:
|
||||||
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
|
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
|
||||||
|
|
||||||
@ -2035,7 +1961,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
anymatch: 2.0.0
|
anymatch: 2.0.0
|
||||||
async-done: 1.3.2
|
async-done: 1.3.2
|
||||||
chokidar: 2.1.8
|
chokidar: registry.npmmirror.com/chokidar/2.1.8
|
||||||
is-negated-glob: 1.0.0
|
is-negated-glob: 1.0.0
|
||||||
just-debounce: 1.1.0
|
just-debounce: 1.1.0
|
||||||
normalize-path: 3.0.0
|
normalize-path: 3.0.0
|
||||||
@ -2551,7 +2477,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.3.3
|
debug: 4.3.3
|
||||||
istanbul-lib-coverage: 3.2.0
|
istanbul-lib-coverage: 3.2.0
|
||||||
source-map: 0.6.1
|
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@ -2750,7 +2676,7 @@ packages:
|
|||||||
micromatch: 4.0.4
|
micromatch: 4.0.4
|
||||||
walker: 1.0.8
|
walker: 1.0.8
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.2
|
fsevents: registry.npmmirror.com/fsevents/2.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/jest-jasmine2/27.5.1:
|
/jest-jasmine2/27.5.1:
|
||||||
@ -3378,12 +3304,6 @@ packages:
|
|||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/nan/2.15.0:
|
|
||||||
resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==}
|
|
||||||
requiresBuild: true
|
|
||||||
dev: false
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/nanomatch/1.2.13:
|
/nanomatch/1.2.13:
|
||||||
resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
|
resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -4089,7 +4009,7 @@ packages:
|
|||||||
define-property: 0.2.5
|
define-property: 0.2.5
|
||||||
extend-shallow: 2.0.1
|
extend-shallow: 2.0.1
|
||||||
map-cache: 0.2.2
|
map-cache: 0.2.2
|
||||||
source-map: 0.5.7
|
source-map: registry.npmmirror.com/source-map/0.5.7
|
||||||
source-map-resolve: 0.5.3
|
source-map-resolve: 0.5.3
|
||||||
use: 3.1.1
|
use: 3.1.1
|
||||||
dev: false
|
dev: false
|
||||||
@ -4109,7 +4029,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
|
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
buffer-from: 1.1.2
|
buffer-from: 1.1.2
|
||||||
source-map: 0.6.1
|
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/source-map-url/0.4.1:
|
/source-map-url/0.4.1:
|
||||||
@ -4125,11 +4045,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
|
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
/source-map/0.7.3:
|
|
||||||
resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==}
|
|
||||||
engines: {node: '>= 8'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/sparkles/1.0.1:
|
/sparkles/1.0.1:
|
||||||
resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==}
|
resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
@ -4464,7 +4379,7 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
commander: 2.19.0
|
commander: 2.19.0
|
||||||
source-map: 0.6.1
|
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/unc-path-regex/0.1.2:
|
/unc-path-regex/0.1.2:
|
||||||
@ -4551,7 +4466,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/istanbul-lib-coverage': 2.0.4
|
'@types/istanbul-lib-coverage': 2.0.4
|
||||||
convert-source-map: 1.8.0
|
convert-source-map: 1.8.0
|
||||||
source-map: 0.7.3
|
source-map: registry.npmmirror.com/source-map/0.7.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/v8flags/3.2.0:
|
/v8flags/3.2.0:
|
||||||
@ -4812,12 +4727,70 @@ packages:
|
|||||||
regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.9
|
regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.9
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3:
|
||||||
|
resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz}
|
||||||
|
name: '@nicolo-ribaudo/chokidar-2'
|
||||||
|
version: 2.1.8-no-fsevents.3
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
registry.npmmirror.com/ansicolor/1.1.100:
|
registry.npmmirror.com/ansicolor/1.1.100:
|
||||||
resolution: {integrity: sha512-Jl0pxRfa9WaQVUX57AB8/V2my6FJxrOR1Pp2qqFbig20QB4HzUoQ48THTKAgHlUCJeQm/s2WoOPcoIDhyCL/kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansicolor/-/ansicolor-1.1.100.tgz}
|
resolution: {integrity: sha512-Jl0pxRfa9WaQVUX57AB8/V2my6FJxrOR1Pp2qqFbig20QB4HzUoQ48THTKAgHlUCJeQm/s2WoOPcoIDhyCL/kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansicolor/-/ansicolor-1.1.100.tgz}
|
||||||
name: ansicolor
|
name: ansicolor
|
||||||
version: 1.1.100
|
version: 1.1.100
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/bindings/1.5.0:
|
||||||
|
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz}
|
||||||
|
name: bindings
|
||||||
|
version: 1.5.0
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
file-uri-to-path: registry.npmmirror.com/file-uri-to-path/1.0.0
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
registry.npmmirror.com/chokidar/2.1.8:
|
||||||
|
resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz}
|
||||||
|
name: chokidar
|
||||||
|
version: 2.1.8
|
||||||
|
deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
|
||||||
|
dependencies:
|
||||||
|
anymatch: 2.0.0
|
||||||
|
async-each: 1.0.3
|
||||||
|
braces: 2.3.2
|
||||||
|
glob-parent: 3.1.0
|
||||||
|
inherits: 2.0.4
|
||||||
|
is-binary-path: 1.0.1
|
||||||
|
is-glob: 4.0.3
|
||||||
|
normalize-path: 3.0.0
|
||||||
|
path-is-absolute: 1.0.1
|
||||||
|
readdirp: 2.2.1
|
||||||
|
upath: 1.2.0
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents: registry.npmmirror.com/fsevents/1.2.13
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/chokidar/3.5.3:
|
||||||
|
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz}
|
||||||
|
name: chokidar
|
||||||
|
version: 3.5.3
|
||||||
|
engines: {node: '>= 8.10.0'}
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
anymatch: 3.1.2
|
||||||
|
braces: 3.0.2
|
||||||
|
glob-parent: 5.1.2
|
||||||
|
is-binary-path: 2.1.0
|
||||||
|
is-glob: 4.0.3
|
||||||
|
normalize-path: 3.0.0
|
||||||
|
readdirp: 3.6.0
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents: registry.npmmirror.com/fsevents/2.3.2
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
registry.npmmirror.com/core-js-pure/3.21.1:
|
registry.npmmirror.com/core-js-pure/3.21.1:
|
||||||
resolution: {integrity: sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.21.1.tgz}
|
resolution: {integrity: sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.21.1.tgz}
|
||||||
name: core-js-pure
|
name: core-js-pure
|
||||||
@ -4832,6 +4805,12 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/dayjs/1.10.8:
|
||||||
|
resolution: {integrity: sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.10.8.tgz}
|
||||||
|
name: dayjs
|
||||||
|
version: 1.10.8
|
||||||
|
dev: false
|
||||||
|
|
||||||
registry.npmmirror.com/deepmerge/4.2.2:
|
registry.npmmirror.com/deepmerge/4.2.2:
|
||||||
resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz}
|
resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz}
|
||||||
name: deepmerge
|
name: deepmerge
|
||||||
@ -4839,12 +4818,52 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/file-uri-to-path/1.0.0:
|
||||||
|
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz}
|
||||||
|
name: file-uri-to-path
|
||||||
|
version: 1.0.0
|
||||||
|
requiresBuild: true
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
registry.npmmirror.com/fsevents/1.2.13:
|
||||||
|
resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz}
|
||||||
|
name: fsevents
|
||||||
|
version: 1.2.13
|
||||||
|
engines: {node: '>= 4.0'}
|
||||||
|
os: [darwin]
|
||||||
|
deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
bindings: registry.npmmirror.com/bindings/1.5.0
|
||||||
|
nan: registry.npmmirror.com/nan/2.15.0
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
registry.npmmirror.com/fsevents/2.3.2:
|
||||||
|
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
|
||||||
|
name: fsevents
|
||||||
|
version: 2.3.2
|
||||||
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||||
|
os: [darwin]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
registry.npmmirror.com/jju/1.4.0:
|
registry.npmmirror.com/jju/1.4.0:
|
||||||
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/jju/-/jju-1.4.0.tgz}
|
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/jju/-/jju-1.4.0.tgz}
|
||||||
name: jju
|
name: jju
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/nan/2.15.0:
|
||||||
|
resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz}
|
||||||
|
name: nan
|
||||||
|
version: 2.15.0
|
||||||
|
requiresBuild: true
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
registry.npmmirror.com/readjson/2.2.2:
|
registry.npmmirror.com/readjson/2.2.2:
|
||||||
resolution: {integrity: sha512-PdeC9tsmLWBiL8vMhJvocq+OezQ3HhsH2HrN7YkhfYcTjQSa/iraB15A7Qvt7Xpr0Yd2rDNt6GbFwVQDg3HcAw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/readjson/-/readjson-2.2.2.tgz}
|
resolution: {integrity: sha512-PdeC9tsmLWBiL8vMhJvocq+OezQ3HhsH2HrN7YkhfYcTjQSa/iraB15A7Qvt7Xpr0Yd2rDNt6GbFwVQDg3HcAw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/readjson/-/readjson-2.2.2.tgz}
|
||||||
name: readjson
|
name: readjson
|
||||||
@ -4861,6 +4880,26 @@ packages:
|
|||||||
version: 0.13.9
|
version: 0.13.9
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/source-map/0.5.7:
|
||||||
|
resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz}
|
||||||
|
name: source-map
|
||||||
|
version: 0.5.7
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/source-map/0.6.1:
|
||||||
|
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz}
|
||||||
|
name: source-map
|
||||||
|
version: 0.6.1
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
registry.npmmirror.com/source-map/0.7.3:
|
||||||
|
resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.7.3.tgz}
|
||||||
|
name: source-map
|
||||||
|
version: 0.7.3
|
||||||
|
engines: {node: '>= 8'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
registry.npmmirror.com/try-catch/3.0.0:
|
registry.npmmirror.com/try-catch/3.0.0:
|
||||||
resolution: {integrity: sha512-3uAqUnoemzca1ENvZ72EVimR+E8lqBbzwZ9v4CEbLjkaV3Q+FtdmPUt7jRtoSoTiYjyIMxEkf6YgUpe/voJ1ng==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/try-catch/-/try-catch-3.0.0.tgz}
|
resolution: {integrity: sha512-3uAqUnoemzca1ENvZ72EVimR+E8lqBbzwZ9v4CEbLjkaV3Q+FtdmPUt7jRtoSoTiYjyIMxEkf6YgUpe/voJ1ng==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/try-catch/-/try-catch-3.0.0.tgz}
|
||||||
name: try-catch
|
name: try-catch
|
||||||
|
@ -13,12 +13,14 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export default {
|
const dayjs = require("dayjs");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
cn:{
|
cn:{
|
||||||
Date:{
|
Date:{
|
||||||
default:(value)=>dayjs(value).format("YYYY年MM年DD日"), // 默认的变量格式化器
|
default:(value)=>dayjs(value).format("YYYY年MM年DD日"), // 默认的格式化器
|
||||||
time:(value)=>dayjs(value).format("HH:mm:ss"),
|
time:(value)=>dayjs(value).format("HH:mm:ss"),
|
||||||
short:(value)=>dayjs(value).format("YYYY/MM/DD"),
|
date:(value)=>dayjs(value).format("YYYY/MM/DD")
|
||||||
},
|
},
|
||||||
Number:{
|
Number:{
|
||||||
|
|
||||||
|
59
src/index.js
59
src/index.js
@ -1,4 +1,5 @@
|
|||||||
import deepMerge from "deepmerge"
|
const deepMerge = require("deepmerge")
|
||||||
|
const formatters = require("./formatters")
|
||||||
|
|
||||||
|
|
||||||
// 用来提取字符里面的插值变量参数 , 支持管道符 { var | formatter | formatter }
|
// 用来提取字符里面的插值变量参数 , 支持管道符 { var | formatter | formatter }
|
||||||
@ -46,18 +47,21 @@ function getDataTypeName(v){
|
|||||||
* @param {*} str
|
* @param {*} str
|
||||||
* @returns {Array} [[变量名称,[]],[变量名称,[formatter,formatter,...]],...]
|
* @returns {Array} [[变量名称,[]],[变量名称,[formatter,formatter,...]],...]
|
||||||
*/
|
*/
|
||||||
function getInterpolatedVars(str){
|
module.exports.getInterpolatedVars = function(str){
|
||||||
let result = []
|
let results = []
|
||||||
let match
|
let match
|
||||||
while ((match = varWidthPipeRegexp.exec(str)) !== null) {
|
while ((match = varWidthPipeRegexp.exec(str)) !== null) {
|
||||||
if (match.index === varWidthPipeRegexp.lastIndex) {
|
if (match.index === varWidthPipeRegexp.lastIndex) {
|
||||||
varWidthPipeRegexp.lastIndex++;
|
varWidthPipeRegexp.lastIndex++;
|
||||||
}
|
}
|
||||||
if(match.groups.varname) {
|
const varname = match.groups.varname
|
||||||
result.push(match.groups.formatters ? [match.groups.varname,match.groups.formatters.trim().split("|")] : [match.groups.varname,[]])
|
const formatters = match.groups.formatters ? match.groups.formatters.trim().substr(1).trim().split("|").map(r=>r.trim()) : []
|
||||||
|
if(varname) {
|
||||||
|
const varDefine = formatters ? [varname,formatters] : [varname,[]]
|
||||||
|
if(results.findIndex(item=>item[0]===varDefine[0] && item[1].join()===varDefine[1].join()) === -1) results.push(varDefine)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return results
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 将要翻译内容提供了一个非文本内容时进行默认的转换
|
* 将要翻译内容提供了一个非文本内容时进行默认的转换
|
||||||
@ -97,31 +101,39 @@ function transformVarValue(value){
|
|||||||
* @param {*} template
|
* @param {*} template
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
function replaceInterpolateVars(template,...args) {
|
module.exports.replaceInterpolateVars = function(template,...args) {
|
||||||
const scope = this
|
const scope = this
|
||||||
|
const activeLanguage = scope.activeLanguage
|
||||||
let result=template
|
let result=template
|
||||||
if(!hasInterpolation(template)) return template
|
if(!hasInterpolation(template)) return template
|
||||||
|
// 变量插值
|
||||||
if(args.length===1 && typeof(args[0]) === "object" && !Array.isArray(args[0])){ // 变量插值
|
if(args.length===1 && typeof(args[0]) === "object" && !Array.isArray(args[0])){
|
||||||
// 取得里面的插值变量
|
// 格式化器只能用在字典变量中
|
||||||
let varNames = getInterpolatedVars(template)
|
// {var1:[formatter,formatter,...],var2:[formatter,formatter,...],...}
|
||||||
|
let varNames = getInterpolatedVars(template)
|
||||||
let varValues = args[0]
|
let varValues = args[0]
|
||||||
if(varNames.length===0) return template
|
if(varNames.length===0) return template
|
||||||
for(let [name,formatters] of varNames){
|
for(let [name,formatters] of varNames){
|
||||||
// 计算出变量值
|
// 计算出变量值
|
||||||
let value = (name in varValues) ? varValues[name] : ''
|
let value = (name in varValues) ? varValues[name] : ''
|
||||||
if(formatters.length >0 ){
|
// 针对每种数据类型的默认格式化器
|
||||||
|
let dataType= getDataTypeName(value)
|
||||||
|
if(dataType in scope.formatters[activeLanguage]){
|
||||||
|
const formatter = scope.formatters[activeLanguage][dataType]
|
||||||
|
formatters.splice(0,0,formatter)
|
||||||
|
}
|
||||||
|
if(formatters.length > 0 ){
|
||||||
formatters.reduce((v,formatter)=>{
|
formatters.reduce((v,formatter)=>{
|
||||||
if(formatter in scope.formatters){
|
if(formatter in scope.formatters){
|
||||||
return scope.formatters[formatter](v)
|
return scope.formatters[formatter](v)
|
||||||
}else{
|
}else{
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
},"")
|
},value)
|
||||||
}
|
}
|
||||||
// 如果变量中包括|管道符,则需要进行转换以适配更宽松的写法,比如data|time能匹配"data |time","data | time"等
|
// 如果变量中包括|管道符,则需要进行转换以适配更宽松的写法,比如data|time能匹配"data |time","data | time"等
|
||||||
let nameRegexp = name.includes("|") ? name.split("|").join("\\s*\\|\\s*") : name
|
let nameRegexp =new RegExp(`${name}\\s*\\|\\s*${formatters.join("\\s*\\|\\s*")}`,"g")
|
||||||
result=result.replaceAll(new RegExp(varReplaceRegexp.replaceAll("{varname}",nameRegexp),"g"),transformVarValue(args[0][name]))
|
result=result.replaceAll(nameRegexp,"gm"),transformVarValue(value))
|
||||||
}
|
}
|
||||||
}else{ // 位置插值
|
}else{ // 位置插值
|
||||||
const params=(args.length===1 && Array.isArray(args[0])) ? [...args[0]] : args
|
const params=(args.length===1 && Array.isArray(args[0])) ? [...args[0]] : args
|
||||||
@ -138,13 +150,14 @@ function replaceInterpolateVars(template,...args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 默认语言配置
|
// 默认语言配置
|
||||||
export const defaultLanguageSettings = {
|
module.exports.defaultLanguageSettings = {
|
||||||
defaultLanguage: "cn",
|
defaultLanguage: "cn",
|
||||||
activeLanguage: "cn",
|
activeLanguage: "cn",
|
||||||
languages:{
|
languages:{
|
||||||
cn:{name:"cn",title:"中文",default:true},
|
cn:{name:"cn",title:"中文",default:true},
|
||||||
en:{name:"en",title:"英文"},
|
en:{name:"en",title:"英文"},
|
||||||
}
|
},
|
||||||
|
formatters
|
||||||
}
|
}
|
||||||
|
|
||||||
function isMessageId(content){
|
function isMessageId(content){
|
||||||
@ -165,7 +178,7 @@ function isMessageId(content){
|
|||||||
* this===scope 当前绑定的scope
|
* this===scope 当前绑定的scope
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function translate(message) {
|
module.exports.translate = function(message) {
|
||||||
const scope = this
|
const scope = this
|
||||||
const activeLanguage = scope.settings.activeLanguage
|
const activeLanguage = scope.settings.activeLanguage
|
||||||
let vars={} // 插值变量
|
let vars={} // 插值变量
|
||||||
@ -175,7 +188,11 @@ export function translate(message) {
|
|||||||
Object.assign(vars,arguments[1])
|
Object.assign(vars,arguments[1])
|
||||||
Object.entries(vars).forEach(([key,value])=>{
|
Object.entries(vars).forEach(([key,value])=>{
|
||||||
if(typeof(value)==="function"){
|
if(typeof(value)==="function"){
|
||||||
vars[key] =try{value()}catch(e){value}
|
try{
|
||||||
|
vars[key] = value()
|
||||||
|
}catch(e){
|
||||||
|
vars[key] = value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(key.startsWith("$")) pluralVars.push(key) // 复数变量
|
if(key.startsWith("$")) pluralVars.push(key) // 复数变量
|
||||||
})
|
})
|
||||||
@ -226,7 +243,7 @@ export function translate(message) {
|
|||||||
* VoerkaI18n.off("change",(language)=>{})
|
* VoerkaI18n.off("change",(language)=>{})
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
export class I18n{
|
module.exports.i18n = class I18n{
|
||||||
static instance = null; // 单例引用
|
static instance = null; // 单例引用
|
||||||
callbacks = [] // 当切换语言时的回调事件
|
callbacks = [] // 当切换语言时的回调事件
|
||||||
constructor(settings={}){
|
constructor(settings={}){
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
const { getInterpolatedVars, replaceInterpolateVars} = require('../src/index.js')
|
||||||
|
|
||||||
|
|
||||||
|
test("获取表达式中的插值变量",done=>{
|
||||||
|
const results = getInterpolatedVars("中华人民共和国成立于{date | year | time }年,首都是{city}市");
|
||||||
|
expect(results.map(r=>r[0]).join(",")).toBe("date,city");
|
||||||
|
expect(results[0][0]).toEqual("date");
|
||||||
|
expect(results[0][1]).toEqual(["year","time"]);
|
||||||
|
expect(results[1][0]).toEqual("city");
|
||||||
|
expect(results[1][1]).toEqual([]);
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
test("表达式中定义了重复的插值变量",done=>{
|
||||||
|
const results = getInterpolatedVars("{a}{a}{a|x}{a|x}{a|x|y}{a|x|y}");
|
||||||
|
expect(results.length).toEqual(3);
|
||||||
|
expect(results[0][0]).toEqual("a");
|
||||||
|
expect(results[0][1]).toEqual([]);
|
||||||
|
expect(results[1][0]).toEqual("a");
|
||||||
|
expect(results[1][1]).toEqual(["x"]);
|
||||||
|
expect(results[2][0]).toEqual("a");
|
||||||
|
expect(results[2][1]).toEqual(["x","y"]);
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
// test("替代表达式中的插值变量",done=>{
|
||||||
|
// const results = replaceInterpolateVars("中华人民共和国成立于{date}年,首都是{city}市",{
|
||||||
|
// date:1949,
|
||||||
|
// city:"北京"
|
||||||
|
// });
|
||||||
|
// expect(results).toBe("中华人民共和国成立于1949年,首都是北京市");
|
||||||
|
// done()
|
||||||
|
// }
|
@ -33,7 +33,6 @@ test("启用名称空间后扫描提取翻译文本",(done)=>{
|
|||||||
"core":"a/b", // 名称空间
|
"core":"a/b", // 名称空间
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
expect("core" in texts).toBeFalsy()
|
|
||||||
expect("core" in texts).toBeTruthy()
|
expect("core" in texts).toBeTruthy()
|
||||||
expect(Object.keys(texts.core).join()).toBe("a,b,c,d")
|
expect(Object.keys(texts.core).join()).toBe("a,b,c,d")
|
||||||
Object.entries(texts.core).forEach(([text,langs])=>{
|
Object.entries(texts.core).forEach(([text,langs])=>{
|
||||||
|
@ -3,16 +3,16 @@ import { translate } from "../src/index.js"
|
|||||||
|
|
||||||
|
|
||||||
test("默认语言翻译",done=>{
|
test("默认语言翻译",done=>{
|
||||||
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
test("启用位置插值变量翻译",done=>{
|
test("启用位置插值变量翻译",done=>{
|
||||||
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
test("启用字典插值变量翻译",done=>{
|
test("启用字典插值变量翻译",done=>{
|
||||||
|
done()
|
||||||
})
|
})
|
Loading…
x
Reference in New Issue
Block a user