@smallwei/avue 3.8.1 → 3.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +206 -86
- package/dist/avue.js +37301 -0
- package/dist/avue.js.map +1 -0
- package/dist/avue.min.js +6 -0
- package/dist/avue.min.mjs +2 -0
- package/dist/avue.mjs +2 -0
- package/dist/index.css +1 -0
- package/es/avue.min.mjs +2 -0
- package/es/avue.min.ts +2 -0
- package/es/avue.mjs +2 -0
- package/es/avue.ts +2 -0
- package/es/core/create.mjs +8 -0
- package/es/core/create.ts +16 -0
- package/es/core/dataformat.mjs +184 -0
- package/es/core/dataformat.ts +190 -0
- package/es/core/detail.mjs +74 -0
- package/es/core/detail.ts +81 -0
- package/es/core/dic.mjs +213 -0
- package/es/core/dic.ts +235 -0
- package/es/core/locale.mjs +8 -0
- package/es/core/locale.ts +9 -0
- package/es/core/packages.mjs +61 -0
- package/es/core/packages.ts +62 -0
- package/es/core/slot.mjs +32 -0
- package/es/core/slot.ts +30 -0
- package/es/global/variable.mjs +80 -0
- package/es/global/variable.ts +84 -0
- package/es/icon.mjs +9 -0
- package/es/icon.ts +11 -0
- package/es/index.mjs +127 -0
- package/es/index.ts +177 -0
- package/es/locale/browser/en.mjs +288 -0
- package/es/locale/browser/zh-cn.mjs +288 -0
- package/es/locale/browser/zh.mjs +288 -0
- package/es/locale/index.mjs +141 -0
- package/es/locale/index.ts +196 -0
- package/es/locale/lang/en.mjs +282 -0
- package/es/locale/lang/en.ts +282 -0
- package/es/locale/lang/zh-cn.mjs +282 -0
- package/es/locale/lang/zh-cn.ts +282 -0
- package/es/locale/lang/zh.mjs +282 -0
- package/es/locale/lang/zh.ts +282 -0
- package/es/packages/core/common/event.mjs +58 -0
- package/es/packages/core/common/event.ts +56 -0
- package/es/packages/core/common/init.mjs +134 -0
- package/es/packages/core/common/init.ts +133 -0
- package/es/packages/core/common/props.mjs +239 -0
- package/es/packages/core/common/props.ts +240 -0
- package/es/packages/core/components/dialog-form/index.mjs +29 -0
- package/es/packages/core/components/dialog-form/index.ts +29 -0
- package/es/packages/core/components/dialog-form/index.vue +108 -0
- package/es/packages/core/components/form/custom.mjs +41 -0
- package/es/packages/core/components/form/custom.ts +41 -0
- package/es/packages/core/components/form/index.vue +176 -0
- package/es/packages/core/components/icon/index.vue +37 -0
- package/es/packages/core/components/image-preview/index.mjs +34 -0
- package/es/packages/core/components/image-preview/index.ts +37 -0
- package/es/packages/core/components/image-preview/index.vue +215 -0
- package/es/packages/core/directive/contextmenu.mjs +92 -0
- package/es/packages/core/directive/contextmenu.ts +103 -0
- package/es/packages/core/directive/permission.mjs +19 -0
- package/es/packages/core/directive/permission.ts +18 -0
- package/es/packages/data/box/index.vue +66 -0
- package/es/packages/data/card/index.vue +62 -0
- package/es/packages/data/cardText/index.vue +56 -0
- package/es/packages/data/countdown/index.vue +81 -0
- package/es/packages/data/dashboard/index.vue +72 -0
- package/es/packages/data/display/index.vue +63 -0
- package/es/packages/data/icons/index.vue +68 -0
- package/es/packages/data/imgText/index.vue +72 -0
- package/es/packages/data/list/index.vue +69 -0
- package/es/packages/data/notice/index.vue +63 -0
- package/es/packages/data/operaText/index.vue +62 -0
- package/es/packages/data/panel/index.vue +62 -0
- package/es/packages/data/pay/index.vue +92 -0
- package/es/packages/data/price/index.vue +55 -0
- package/es/packages/data/product/index.vue +106 -0
- package/es/packages/data/profile/index.vue +91 -0
- package/es/packages/data/progress/index.vue +64 -0
- package/es/packages/data/rank/index.vue +92 -0
- package/es/packages/data/rotate/index.vue +69 -0
- package/es/packages/data/statistic/index.vue +71 -0
- package/es/packages/data/tabs/index.vue +64 -0
- package/es/packages/data/task/index.vue +82 -0
- package/es/packages/data/weather/index.vue +103 -0
- package/es/packages/element-plus/array/index.vue +115 -0
- package/es/packages/element-plus/article/index.vue +73 -0
- package/es/packages/element-plus/card/index.vue +103 -0
- package/es/packages/element-plus/cascader/index.vue +132 -0
- package/es/packages/element-plus/chat/index.vue +513 -0
- package/es/packages/element-plus/checkbox/index.vue +84 -0
- package/es/packages/element-plus/comment/index.vue +76 -0
- package/es/packages/element-plus/count-up/index.vue +107 -0
- package/es/packages/element-plus/crud/column/column-default.vue +128 -0
- package/es/packages/element-plus/crud/column/column-dynamic.vue +86 -0
- package/es/packages/element-plus/crud/column/column-menu.vue +267 -0
- package/es/packages/element-plus/crud/column/column-slot.vue +348 -0
- package/es/packages/element-plus/crud/column/column.vue +119 -0
- package/es/packages/element-plus/crud/column/menu.vue +78 -0
- package/es/packages/element-plus/crud/config.mjs +74 -0
- package/es/packages/element-plus/crud/config.ts +74 -0
- package/es/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
- package/es/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
- package/es/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
- package/es/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
- package/es/packages/element-plus/crud/grid/index.vue +271 -0
- package/es/packages/element-plus/crud/grid/item.vue +39 -0
- package/es/packages/element-plus/crud/index.vue +1018 -0
- package/es/packages/element-plus/crud/menu/header-menu.vue +175 -0
- package/es/packages/element-plus/crud/menu/header-search.vue +228 -0
- package/es/packages/element-plus/crud/menu/table-page.vue +108 -0
- package/es/packages/element-plus/date/index.vue +81 -0
- package/es/packages/element-plus/draggable/index.vue +444 -0
- package/es/packages/element-plus/dynamic/index.vue +353 -0
- package/es/packages/element-plus/flow/index.vue +339 -0
- package/es/packages/element-plus/flow/node.vue +84 -0
- package/es/packages/element-plus/form/config.mjs +6 -0
- package/es/packages/element-plus/form/config.ts +6 -0
- package/es/packages/element-plus/form/index.vue +954 -0
- package/es/packages/element-plus/form/menu.vue +63 -0
- package/es/packages/element-plus/group/index.vue +90 -0
- package/es/packages/element-plus/input/index.vue +1264 -0
- package/es/packages/element-plus/input-color/index.vue +70 -0
- package/es/packages/element-plus/input-cron/index.vue +363 -0
- package/es/packages/element-plus/input-icon/index.vue +143 -0
- package/es/packages/element-plus/input-map/index.vue +311 -0
- package/es/packages/element-plus/input-number/index.vue +91 -0
- package/es/packages/element-plus/input-table/index.vue +279 -0
- package/es/packages/element-plus/input-tag/index.vue +79 -0
- package/es/packages/element-plus/input-tree/index.vue +194 -0
- package/es/packages/element-plus/license/index.vue +155 -0
- package/es/packages/element-plus/login/index.vue +203 -0
- package/es/packages/element-plus/mention/index.vue +117 -0
- package/es/packages/element-plus/radio/index.vue +38 -0
- package/es/packages/element-plus/rate/index.vue +51 -0
- package/es/packages/element-plus/search/index.vue +129 -0
- package/es/packages/element-plus/select/index.vue +292 -0
- package/es/packages/element-plus/sign/index.vue +230 -0
- package/es/packages/element-plus/slider/index.vue +66 -0
- package/es/packages/element-plus/switch/index.vue +72 -0
- package/es/packages/element-plus/tabs/index.vue +62 -0
- package/es/packages/element-plus/text-ellipsis/index.vue +104 -0
- package/es/packages/element-plus/time/index.vue +81 -0
- package/es/packages/element-plus/title/index.vue +30 -0
- package/es/packages/element-plus/tree/index.vue +460 -0
- package/es/packages/element-plus/upload/index.vue +728 -0
- package/es/packages/element-plus/verify/index.vue +62 -0
- package/es/packages/element-plus/video/index.vue +90 -0
- package/es/plugin/ali/index.mjs +4 -0
- package/es/plugin/ali/index.ts +6 -0
- package/es/plugin/clipboard/index.mjs +61 -0
- package/es/plugin/clipboard/index.ts +67 -0
- package/es/plugin/export/_blob.mjs +151 -0
- package/es/plugin/export/_blob.ts +176 -0
- package/es/plugin/export/_export2Excel.mjs +141 -0
- package/es/plugin/export/_export2Excel.ts +166 -0
- package/es/plugin/export/index.mjs +263 -0
- package/es/plugin/export/index.ts +274 -0
- package/es/plugin/logs/index.mjs +46 -0
- package/es/plugin/logs/index.ts +66 -0
- package/es/plugin/print/index.mjs +145 -0
- package/es/plugin/print/index.ts +155 -0
- package/es/plugin/qiniu/index.mjs +78 -0
- package/es/plugin/qiniu/index.ts +88 -0
- package/es/plugin/screenshot/index.mjs +8 -0
- package/es/plugin/screenshot/index.ts +9 -0
- package/es/plugin/video/index.mjs +52 -0
- package/es/plugin/video/index.ts +60 -0
- package/es/plugin/watermark/index.mjs +114 -0
- package/es/plugin/watermark/index.ts +127 -0
- package/es/plugin/watermark/watermark.mjs +109 -0
- package/es/plugin/watermark/watermark.ts +121 -0
- package/es/ui/data/index.mjs +49 -0
- package/es/ui/data/index.ts +51 -0
- package/es/ui/element-plus/index.mjs +87 -0
- package/es/ui/element-plus/index.ts +89 -0
- package/es/ui/index.mjs +4 -0
- package/es/ui/index.ts +6 -0
- package/es/utils/bem.mjs +29 -0
- package/es/utils/bem.ts +36 -0
- package/es/utils/mock.mjs +137 -0
- package/es/utils/mock.ts +151 -0
- package/es/utils/util.mjs +370 -0
- package/es/utils/util.ts +392 -0
- package/es/utils/validate.mjs +18 -0
- package/es/utils/validate.ts +23 -0
- package/es/version.mjs +1 -0
- package/es/version.ts +1 -0
- package/lib/avue.js +11 -31398
- package/lib/avue.min.js +11 -6
- package/lib/avue.min.ts +2 -0
- package/lib/avue.ts +2 -0
- package/lib/core/create.js +14 -0
- package/lib/core/create.ts +16 -0
- package/lib/core/dataformat.js +194 -0
- package/lib/core/dataformat.ts +190 -0
- package/lib/core/detail.js +81 -0
- package/lib/core/detail.ts +81 -0
- package/lib/core/dic.js +220 -0
- package/lib/core/dic.ts +235 -0
- package/lib/core/locale.js +10 -0
- package/lib/core/locale.ts +9 -0
- package/lib/core/packages.js +66 -0
- package/lib/core/packages.ts +62 -0
- package/lib/core/slot.js +34 -0
- package/lib/core/slot.ts +30 -0
- package/lib/global/variable.js +83 -0
- package/lib/global/variable.ts +84 -0
- package/lib/icon.js +44 -0
- package/lib/icon.ts +11 -0
- package/lib/index.css +1 -1
- package/lib/index.js +134 -0
- package/lib/index.ts +177 -0
- package/lib/locale/browser/en.js +288 -0
- package/lib/locale/browser/zh-cn.js +288 -0
- package/lib/locale/browser/zh.js +288 -0
- package/lib/locale/index.js +153 -47
- package/lib/locale/index.ts +196 -0
- package/lib/locale/lang/en.js +284 -100
- package/lib/locale/lang/en.ts +282 -0
- package/lib/locale/lang/zh-cn.js +284 -0
- package/lib/locale/lang/zh-cn.ts +282 -0
- package/lib/locale/lang/zh.js +284 -100
- package/lib/locale/lang/zh.ts +282 -0
- package/lib/packages/core/common/event.js +61 -0
- package/lib/packages/core/common/event.ts +56 -0
- package/lib/packages/core/common/init.js +140 -0
- package/lib/packages/core/common/init.ts +133 -0
- package/lib/packages/core/common/props.js +245 -0
- package/lib/packages/core/common/props.ts +240 -0
- package/lib/packages/core/components/dialog-form/index.js +35 -0
- package/lib/packages/core/components/dialog-form/index.ts +29 -0
- package/lib/packages/core/components/dialog-form/index.vue +108 -0
- package/lib/packages/core/components/form/custom.js +43 -0
- package/lib/packages/core/components/form/custom.ts +41 -0
- package/lib/packages/core/components/form/index.vue +176 -0
- package/lib/packages/core/components/icon/index.vue +37 -0
- package/lib/packages/core/components/image-preview/index.js +40 -0
- package/lib/packages/core/components/image-preview/index.ts +37 -0
- package/lib/packages/core/components/image-preview/index.vue +215 -0
- package/lib/packages/core/directive/contextmenu.js +94 -0
- package/lib/packages/core/directive/contextmenu.ts +103 -0
- package/lib/packages/core/directive/permission.js +21 -0
- package/lib/packages/core/directive/permission.ts +18 -0
- package/lib/packages/data/box/index.vue +66 -0
- package/lib/packages/data/card/index.vue +62 -0
- package/lib/packages/data/cardText/index.vue +56 -0
- package/lib/packages/data/countdown/index.vue +81 -0
- package/lib/packages/data/dashboard/index.vue +72 -0
- package/lib/packages/data/display/index.vue +63 -0
- package/lib/packages/data/icons/index.vue +68 -0
- package/lib/packages/data/imgText/index.vue +72 -0
- package/lib/packages/data/list/index.vue +69 -0
- package/lib/packages/data/notice/index.vue +63 -0
- package/lib/packages/data/operaText/index.vue +62 -0
- package/lib/packages/data/panel/index.vue +62 -0
- package/lib/packages/data/pay/index.vue +92 -0
- package/lib/packages/data/price/index.vue +55 -0
- package/lib/packages/data/product/index.vue +106 -0
- package/lib/packages/data/profile/index.vue +91 -0
- package/lib/packages/data/progress/index.vue +64 -0
- package/lib/packages/data/rank/index.vue +92 -0
- package/lib/packages/data/rotate/index.vue +69 -0
- package/lib/packages/data/statistic/index.vue +71 -0
- package/lib/packages/data/tabs/index.vue +64 -0
- package/lib/packages/data/task/index.vue +82 -0
- package/lib/packages/data/weather/index.vue +103 -0
- package/lib/packages/element-plus/array/index.vue +115 -0
- package/lib/packages/element-plus/article/index.vue +73 -0
- package/lib/packages/element-plus/card/index.vue +103 -0
- package/lib/packages/element-plus/cascader/index.vue +132 -0
- package/lib/packages/element-plus/chat/index.vue +513 -0
- package/lib/packages/element-plus/checkbox/index.vue +84 -0
- package/lib/packages/element-plus/comment/index.vue +76 -0
- package/lib/packages/element-plus/count-up/index.vue +107 -0
- package/lib/packages/element-plus/crud/column/column-default.vue +128 -0
- package/lib/packages/element-plus/crud/column/column-dynamic.vue +86 -0
- package/lib/packages/element-plus/crud/column/column-menu.vue +267 -0
- package/lib/packages/element-plus/crud/column/column-slot.vue +348 -0
- package/lib/packages/element-plus/crud/column/column.vue +119 -0
- package/lib/packages/element-plus/crud/column/menu.vue +78 -0
- package/lib/packages/element-plus/crud/config.js +76 -0
- package/lib/packages/element-plus/crud/config.ts +74 -0
- package/lib/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
- package/lib/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
- package/lib/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
- package/lib/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
- package/lib/packages/element-plus/crud/grid/index.vue +271 -0
- package/lib/packages/element-plus/crud/grid/item.vue +39 -0
- package/lib/packages/element-plus/crud/index.vue +1018 -0
- package/lib/packages/element-plus/crud/menu/header-menu.vue +175 -0
- package/lib/packages/element-plus/crud/menu/header-search.vue +228 -0
- package/lib/packages/element-plus/crud/menu/table-page.vue +108 -0
- package/lib/packages/element-plus/date/index.vue +81 -0
- package/lib/packages/element-plus/draggable/index.vue +444 -0
- package/lib/packages/element-plus/dynamic/index.vue +353 -0
- package/lib/packages/element-plus/flow/index.vue +339 -0
- package/lib/packages/element-plus/flow/node.vue +84 -0
- package/lib/packages/element-plus/form/config.js +8 -0
- package/lib/packages/element-plus/form/config.ts +6 -0
- package/lib/packages/element-plus/form/index.vue +954 -0
- package/lib/packages/element-plus/form/menu.vue +63 -0
- package/lib/packages/element-plus/group/index.vue +90 -0
- package/lib/packages/element-plus/input/index.vue +1264 -0
- package/lib/packages/element-plus/input-color/index.vue +70 -0
- package/lib/packages/element-plus/input-cron/index.vue +363 -0
- package/lib/packages/element-plus/input-icon/index.vue +143 -0
- package/lib/packages/element-plus/input-map/index.vue +311 -0
- package/lib/packages/element-plus/input-number/index.vue +91 -0
- package/lib/packages/element-plus/input-table/index.vue +279 -0
- package/lib/packages/element-plus/input-tag/index.vue +79 -0
- package/lib/packages/element-plus/input-tree/index.vue +194 -0
- package/lib/packages/element-plus/license/index.vue +155 -0
- package/lib/packages/element-plus/login/index.vue +203 -0
- package/lib/packages/element-plus/mention/index.vue +117 -0
- package/lib/packages/element-plus/radio/index.vue +38 -0
- package/lib/packages/element-plus/rate/index.vue +51 -0
- package/lib/packages/element-plus/search/index.vue +129 -0
- package/lib/packages/element-plus/select/index.vue +292 -0
- package/lib/packages/element-plus/sign/index.vue +230 -0
- package/lib/packages/element-plus/slider/index.vue +66 -0
- package/lib/packages/element-plus/switch/index.vue +72 -0
- package/lib/packages/element-plus/tabs/index.vue +62 -0
- package/lib/packages/element-plus/text-ellipsis/index.vue +104 -0
- package/lib/packages/element-plus/time/index.vue +81 -0
- package/lib/packages/element-plus/title/index.vue +30 -0
- package/lib/packages/element-plus/tree/index.vue +460 -0
- package/lib/packages/element-plus/upload/index.vue +728 -0
- package/lib/packages/element-plus/verify/index.vue +62 -0
- package/lib/packages/element-plus/video/index.vue +90 -0
- package/lib/plugin/ali/index.js +8 -0
- package/lib/plugin/ali/index.ts +6 -0
- package/lib/plugin/clipboard/index.js +64 -0
- package/lib/plugin/clipboard/index.ts +67 -0
- package/lib/plugin/export/_blob.js +151 -0
- package/lib/plugin/export/_blob.ts +176 -0
- package/lib/plugin/export/_export2Excel.js +145 -0
- package/lib/plugin/export/_export2Excel.ts +166 -0
- package/lib/plugin/export/index.js +268 -0
- package/lib/plugin/export/index.ts +274 -0
- package/lib/plugin/logs/index.js +48 -0
- package/lib/plugin/logs/index.ts +66 -0
- package/lib/plugin/print/index.js +147 -0
- package/lib/plugin/print/index.ts +155 -0
- package/lib/plugin/qiniu/index.js +82 -0
- package/lib/plugin/qiniu/index.ts +88 -0
- package/lib/plugin/screenshot/index.js +14 -0
- package/lib/plugin/screenshot/index.ts +9 -0
- package/lib/plugin/video/index.js +55 -0
- package/lib/plugin/video/index.ts +60 -0
- package/lib/plugin/watermark/index.js +121 -0
- package/lib/plugin/watermark/index.ts +127 -0
- package/lib/plugin/watermark/watermark.js +111 -0
- package/lib/plugin/watermark/watermark.ts +121 -0
- package/lib/ui/data/index.js +54 -0
- package/lib/ui/data/index.ts +51 -0
- package/lib/ui/element-plus/index.js +92 -0
- package/lib/ui/element-plus/index.ts +89 -0
- package/lib/ui/index.js +9 -0
- package/lib/ui/index.ts +6 -0
- package/lib/utils/bem.js +31 -0
- package/lib/utils/bem.ts +36 -0
- package/lib/utils/mock.js +142 -0
- package/lib/utils/mock.ts +151 -0
- package/lib/utils/util.js +403 -0
- package/lib/utils/util.ts +392 -0
- package/lib/utils/validate.js +21 -0
- package/lib/utils/validate.ts +23 -0
- package/lib/version.js +4 -0
- package/lib/version.ts +1 -0
- package/package.json +24 -11
- package/types/index.d.ts +141 -0
- package/types/shims-aliases.d.ts +4 -0
- package/types/shims-vue.d.ts +6 -0
- package/lib/avue.js.map +0 -1
- package/lib/locale/format.js +0 -44
package/lib/locale/index.js
CHANGED
|
@@ -1,47 +1,153 @@
|
|
|
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
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getLocaleCode = exports.getLocale = exports.i18n = exports.use = exports.t = exports.register = void 0;
|
|
7
|
+
const en_js_1 = __importDefault(require("./lang/en.js"));
|
|
8
|
+
const zh_js_1 = __importDefault(require("./lang/zh.js"));
|
|
9
|
+
const zh_cn_js_1 = __importDefault(require("./lang/zh-cn.js"));
|
|
10
|
+
const merge_1 = __importDefault(require("lodash/merge"));
|
|
11
|
+
const DEFAULT_LOCALE = 'zh-cn';
|
|
12
|
+
const RE_NARGS = /(%|)\{([0-9a-zA-Z_]+)\}/g;
|
|
13
|
+
const format = (string = '', ...args) => {
|
|
14
|
+
let formatArgs = args;
|
|
15
|
+
if (args.length === 1 && typeof args[0] === 'object') {
|
|
16
|
+
formatArgs = args[0];
|
|
17
|
+
}
|
|
18
|
+
if (!formatArgs || typeof formatArgs !== 'object') {
|
|
19
|
+
formatArgs = {};
|
|
20
|
+
}
|
|
21
|
+
return string.replace(RE_NARGS, (match, _prefix, key, index) => {
|
|
22
|
+
if (string[index - 1] === '{' && string[index + match.length] === '}') {
|
|
23
|
+
return key;
|
|
24
|
+
}
|
|
25
|
+
const result = Object.prototype.hasOwnProperty.call(formatArgs, key)
|
|
26
|
+
? formatArgs[key]
|
|
27
|
+
: null;
|
|
28
|
+
return result == null ? '' : String(result);
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
const isPlainObject = (value) => Object.prototype.toString.call(value) === '[object Object]';
|
|
32
|
+
const resolveByPath = (path, locale) => {
|
|
33
|
+
return path.split('.').reduce((current, key) => {
|
|
34
|
+
if (current == null)
|
|
35
|
+
return undefined;
|
|
36
|
+
return current[key];
|
|
37
|
+
}, locale);
|
|
38
|
+
};
|
|
39
|
+
const normalizeLocaleCode = (code) => code.trim().toLowerCase();
|
|
40
|
+
const getGlobalLocaleRegistry = () => {
|
|
41
|
+
const globalObject = typeof globalThis !== 'undefined'
|
|
42
|
+
? globalThis
|
|
43
|
+
: typeof window !== 'undefined'
|
|
44
|
+
? window
|
|
45
|
+
: undefined;
|
|
46
|
+
if (!globalObject)
|
|
47
|
+
return {};
|
|
48
|
+
if (!isPlainObject(globalObject.AVUE_LANG)) {
|
|
49
|
+
globalObject.AVUE_LANG = {};
|
|
50
|
+
}
|
|
51
|
+
return globalObject.AVUE_LANG;
|
|
52
|
+
};
|
|
53
|
+
const localeRegistry = {};
|
|
54
|
+
const rememberLocale = (code, locale) => {
|
|
55
|
+
localeRegistry[code] = locale;
|
|
56
|
+
const globalRegistry = getGlobalLocaleRegistry();
|
|
57
|
+
globalRegistry[code] = locale;
|
|
58
|
+
};
|
|
59
|
+
const resolveRegisteredLocale = (code) => {
|
|
60
|
+
if (typeof code !== 'string' || !code.trim())
|
|
61
|
+
return null;
|
|
62
|
+
const normalizedCode = normalizeLocaleCode(code);
|
|
63
|
+
const shortCode = normalizedCode.split('-')[0];
|
|
64
|
+
const candidates = shortCode !== normalizedCode ? [normalizedCode, shortCode] : [normalizedCode];
|
|
65
|
+
const globalRegistry = getGlobalLocaleRegistry();
|
|
66
|
+
for (const candidate of candidates) {
|
|
67
|
+
const registered = localeRegistry[candidate] ||
|
|
68
|
+
(isPlainObject(globalRegistry[candidate]) ? globalRegistry[candidate] : undefined);
|
|
69
|
+
if (registered) {
|
|
70
|
+
localeRegistry[candidate] = registered;
|
|
71
|
+
return {
|
|
72
|
+
code: candidate,
|
|
73
|
+
locale: registered
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
};
|
|
79
|
+
const buildLocaleState = (code) => {
|
|
80
|
+
const merged = (0, merge_1.default)({}, zh_cn_js_1.default);
|
|
81
|
+
const resolved = resolveRegisteredLocale(code);
|
|
82
|
+
if (resolved) {
|
|
83
|
+
return {
|
|
84
|
+
code: resolved.code,
|
|
85
|
+
locale: (0, merge_1.default)({}, merged, resolved.locale)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
code: DEFAULT_LOCALE,
|
|
90
|
+
locale: merged
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
const register = function (code, locale, aliases = []) {
|
|
94
|
+
if (!code || !isPlainObject(locale))
|
|
95
|
+
return locale;
|
|
96
|
+
[code, ...aliases]
|
|
97
|
+
.map((name) => normalizeLocaleCode(name))
|
|
98
|
+
.filter(Boolean)
|
|
99
|
+
.forEach((name) => rememberLocale(name, locale));
|
|
100
|
+
return locale;
|
|
101
|
+
};
|
|
102
|
+
exports.register = register;
|
|
103
|
+
(0, exports.register)('en', en_js_1.default);
|
|
104
|
+
(0, exports.register)('zh', zh_js_1.default);
|
|
105
|
+
(0, exports.register)(DEFAULT_LOCALE, zh_cn_js_1.default);
|
|
106
|
+
let currentCode = DEFAULT_LOCALE;
|
|
107
|
+
let currentLang = buildLocaleState(DEFAULT_LOCALE).locale;
|
|
108
|
+
let i18nHandler = null;
|
|
109
|
+
const t = function (path, options) {
|
|
110
|
+
if (typeof i18nHandler === 'function') {
|
|
111
|
+
const translated = i18nHandler.call(this, path, options, currentLang);
|
|
112
|
+
if (translated !== undefined && translated !== null && translated !== path) {
|
|
113
|
+
return typeof translated === 'string'
|
|
114
|
+
? format(translated, options)
|
|
115
|
+
: translated;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const value = resolveByPath(path, currentLang);
|
|
119
|
+
if (typeof value === 'string')
|
|
120
|
+
return format(value, options);
|
|
121
|
+
if (value === undefined || value === null)
|
|
122
|
+
return '';
|
|
123
|
+
return value;
|
|
124
|
+
};
|
|
125
|
+
exports.t = t;
|
|
126
|
+
const use = function (locale, override) {
|
|
127
|
+
const localeState = typeof locale === 'string' ? buildLocaleState(locale) : buildLocaleState(currentCode);
|
|
128
|
+
currentCode = localeState.code;
|
|
129
|
+
currentLang = localeState.locale;
|
|
130
|
+
const extraLocale = typeof locale === 'string' ? override : locale;
|
|
131
|
+
if (isPlainObject(extraLocale)) {
|
|
132
|
+
currentLang = (0, merge_1.default)({}, currentLang, extraLocale);
|
|
133
|
+
}
|
|
134
|
+
return currentLang;
|
|
135
|
+
};
|
|
136
|
+
exports.use = use;
|
|
137
|
+
const i18n = function (fn) {
|
|
138
|
+
i18nHandler = typeof fn === 'function' ? fn : null;
|
|
139
|
+
return i18nHandler;
|
|
140
|
+
};
|
|
141
|
+
exports.i18n = i18n;
|
|
142
|
+
const getLocale = function (code) {
|
|
143
|
+
if (typeof code === 'string') {
|
|
144
|
+
return buildLocaleState(code).locale;
|
|
145
|
+
}
|
|
146
|
+
return currentLang;
|
|
147
|
+
};
|
|
148
|
+
exports.getLocale = getLocale;
|
|
149
|
+
const getLocaleCode = function () {
|
|
150
|
+
return currentCode;
|
|
151
|
+
};
|
|
152
|
+
exports.getLocaleCode = getLocaleCode;
|
|
153
|
+
exports.default = { register: exports.register, use: exports.use, t: exports.t, i18n: exports.i18n, getLocale: exports.getLocale, getLocaleCode: exports.getLocaleCode };
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import enLang from './lang/en';
|
|
2
|
+
import zhLang from './lang/zh';
|
|
3
|
+
import defaultLang from './lang/zh-cn';
|
|
4
|
+
import _merge from 'lodash/merge';
|
|
5
|
+
|
|
6
|
+
type TemplateArgs = Record<string, any> | any[];
|
|
7
|
+
type LocalePrimitive = string | number | boolean;
|
|
8
|
+
interface LocaleMessages {
|
|
9
|
+
[key: string]: LocalePrimitive | LocaleMessages | Array<LocalePrimitive | LocaleMessages>;
|
|
10
|
+
}
|
|
11
|
+
type LocaleInput = string | LocaleMessages | null | undefined;
|
|
12
|
+
type LocaleRegistry = Record<string, LocaleMessages>;
|
|
13
|
+
type TranslateHandler = (
|
|
14
|
+
this: any,
|
|
15
|
+
path: string,
|
|
16
|
+
options?: any,
|
|
17
|
+
locale?: LocaleMessages
|
|
18
|
+
) => unknown;
|
|
19
|
+
|
|
20
|
+
const DEFAULT_LOCALE = 'zh-cn';
|
|
21
|
+
const RE_NARGS = /(%|)\{([0-9a-zA-Z_]+)\}/g;
|
|
22
|
+
|
|
23
|
+
const format = (string = '', ...args: any[]): string => {
|
|
24
|
+
let formatArgs: TemplateArgs = args;
|
|
25
|
+
|
|
26
|
+
if (args.length === 1 && typeof args[0] === 'object') {
|
|
27
|
+
formatArgs = args[0];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (!formatArgs || typeof formatArgs !== 'object') {
|
|
31
|
+
formatArgs = {};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return string.replace(RE_NARGS, (match, _prefix, key, index) => {
|
|
35
|
+
if (string[index - 1] === '{' && string[index + match.length] === '}') {
|
|
36
|
+
return key;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const result = Object.prototype.hasOwnProperty.call(formatArgs, key)
|
|
40
|
+
? (formatArgs as Record<string, any>)[key]
|
|
41
|
+
: null;
|
|
42
|
+
|
|
43
|
+
return result == null ? '' : String(result);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const isPlainObject = (value: unknown): value is Record<string, any> =>
|
|
48
|
+
Object.prototype.toString.call(value) === '[object Object]';
|
|
49
|
+
|
|
50
|
+
const resolveByPath = (path: string, locale: LocaleMessages) => {
|
|
51
|
+
return path.split('.').reduce<any>((current, key) => {
|
|
52
|
+
if (current == null) return undefined;
|
|
53
|
+
return current[key];
|
|
54
|
+
}, locale);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const normalizeLocaleCode = (code: string) => code.trim().toLowerCase();
|
|
58
|
+
|
|
59
|
+
const getGlobalLocaleRegistry = (): LocaleRegistry => {
|
|
60
|
+
const globalObject =
|
|
61
|
+
typeof globalThis !== 'undefined'
|
|
62
|
+
? (globalThis as Record<string, any>)
|
|
63
|
+
: typeof window !== 'undefined'
|
|
64
|
+
? (window as unknown as Record<string, any>)
|
|
65
|
+
: undefined;
|
|
66
|
+
|
|
67
|
+
if (!globalObject) return {};
|
|
68
|
+
if (!isPlainObject(globalObject.AVUE_LANG)) {
|
|
69
|
+
globalObject.AVUE_LANG = {};
|
|
70
|
+
}
|
|
71
|
+
return globalObject.AVUE_LANG as LocaleRegistry;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const localeRegistry: LocaleRegistry = {};
|
|
75
|
+
|
|
76
|
+
const rememberLocale = (code: string, locale: LocaleMessages) => {
|
|
77
|
+
localeRegistry[code] = locale;
|
|
78
|
+
const globalRegistry = getGlobalLocaleRegistry();
|
|
79
|
+
globalRegistry[code] = locale;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const resolveRegisteredLocale = (
|
|
83
|
+
code?: string
|
|
84
|
+
): { code: string; locale: LocaleMessages } | null => {
|
|
85
|
+
if (typeof code !== 'string' || !code.trim()) return null;
|
|
86
|
+
|
|
87
|
+
const normalizedCode = normalizeLocaleCode(code);
|
|
88
|
+
const shortCode = normalizedCode.split('-')[0];
|
|
89
|
+
const candidates = shortCode !== normalizedCode ? [normalizedCode, shortCode] : [normalizedCode];
|
|
90
|
+
const globalRegistry = getGlobalLocaleRegistry();
|
|
91
|
+
|
|
92
|
+
for (const candidate of candidates) {
|
|
93
|
+
const registered =
|
|
94
|
+
localeRegistry[candidate] ||
|
|
95
|
+
(isPlainObject(globalRegistry[candidate]) ? globalRegistry[candidate] : undefined);
|
|
96
|
+
|
|
97
|
+
if (registered) {
|
|
98
|
+
localeRegistry[candidate] = registered;
|
|
99
|
+
return {
|
|
100
|
+
code: candidate,
|
|
101
|
+
locale: registered
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return null;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const buildLocaleState = (code?: string) => {
|
|
110
|
+
const merged = _merge({}, defaultLang);
|
|
111
|
+
const resolved = resolveRegisteredLocale(code);
|
|
112
|
+
|
|
113
|
+
if (resolved) {
|
|
114
|
+
return {
|
|
115
|
+
code: resolved.code,
|
|
116
|
+
locale: _merge({}, merged, resolved.locale)
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return {
|
|
121
|
+
code: DEFAULT_LOCALE,
|
|
122
|
+
locale: merged
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export const register = function (
|
|
127
|
+
code: string,
|
|
128
|
+
locale: LocaleMessages,
|
|
129
|
+
aliases: string[] = []
|
|
130
|
+
) {
|
|
131
|
+
if (!code || !isPlainObject(locale)) return locale;
|
|
132
|
+
|
|
133
|
+
[code, ...aliases]
|
|
134
|
+
.map((name) => normalizeLocaleCode(name))
|
|
135
|
+
.filter(Boolean)
|
|
136
|
+
.forEach((name) => rememberLocale(name, locale));
|
|
137
|
+
|
|
138
|
+
return locale;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
register('en', enLang);
|
|
142
|
+
register('zh', zhLang);
|
|
143
|
+
register(DEFAULT_LOCALE, defaultLang);
|
|
144
|
+
|
|
145
|
+
let currentCode = DEFAULT_LOCALE;
|
|
146
|
+
let currentLang = buildLocaleState(DEFAULT_LOCALE).locale;
|
|
147
|
+
let i18nHandler: TranslateHandler | null = null;
|
|
148
|
+
|
|
149
|
+
export const t = function (this: any, path: string, options?: any) {
|
|
150
|
+
if (typeof i18nHandler === 'function') {
|
|
151
|
+
const translated = i18nHandler.call(this, path, options, currentLang);
|
|
152
|
+
if (translated !== undefined && translated !== null && translated !== path) {
|
|
153
|
+
return typeof translated === 'string'
|
|
154
|
+
? format(translated, options)
|
|
155
|
+
: translated;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const value = resolveByPath(path, currentLang);
|
|
160
|
+
if (typeof value === 'string') return format(value, options);
|
|
161
|
+
if (value === undefined || value === null) return '';
|
|
162
|
+
return value;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
export const use = function (locale?: LocaleInput, override?: LocaleMessages) {
|
|
166
|
+
const localeState =
|
|
167
|
+
typeof locale === 'string' ? buildLocaleState(locale) : buildLocaleState(currentCode);
|
|
168
|
+
|
|
169
|
+
currentCode = localeState.code;
|
|
170
|
+
currentLang = localeState.locale;
|
|
171
|
+
|
|
172
|
+
const extraLocale = typeof locale === 'string' ? override : locale;
|
|
173
|
+
if (isPlainObject(extraLocale)) {
|
|
174
|
+
currentLang = _merge({}, currentLang, extraLocale);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return currentLang;
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export const i18n = function (fn?: TranslateHandler | null) {
|
|
181
|
+
i18nHandler = typeof fn === 'function' ? fn : null;
|
|
182
|
+
return i18nHandler;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
export const getLocale = function (code?: string) {
|
|
186
|
+
if (typeof code === 'string') {
|
|
187
|
+
return buildLocaleState(code).locale;
|
|
188
|
+
}
|
|
189
|
+
return currentLang;
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export const getLocaleCode = function () {
|
|
193
|
+
return currentCode;
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
export default { register, use, t, i18n, getLocale, getLocaleCode };
|