lt-a-baseui 1.0.36 → 1.0.38
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/package.json +3 -2
- package/packages/locales/config.ts +21 -0
- package/packages/locales/helper.ts +36 -0
- package/packages/locales/index.ts +41 -0
- package/packages/locales/lang/en-US/common.js +23 -0
- package/packages/locales/lang/en-US/component.js +52 -0
- package/packages/locales/lang/en-US/layout.js +115 -0
- package/packages/locales/lang/en-US/routes/account.js +4 -0
- package/packages/locales/lang/en-US/routes/basic.js +4 -0
- package/packages/locales/lang/en-US/routes/dashboard.js +6 -0
- package/packages/locales/lang/en-US/routes/demo.js +19 -0
- package/packages/locales/lang/en_US.js +35 -0
- package/packages/locales/lang/zh-CN/common.js +23 -0
- package/packages/locales/lang/zh-CN/component.js +54 -0
- package/packages/locales/lang/zh-CN/layout.js +115 -0
- package/packages/locales/lang/zh-CN/routes/account.js +4 -0
- package/packages/locales/lang/zh-CN/routes/basic.js +4 -0
- package/packages/locales/lang/zh-CN/routes/dashboard.js +6 -0
- package/packages/locales/lang/zh-CN/routes/demo.js +19 -0
- package/packages/locales/lang/zh_CN.js +33 -0
- package/packages/locales/useLocale.ts +68 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lt-a-baseui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.38",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "a lib base on longtec",
|
|
6
6
|
"main": "lib/lt-a-baseui.umd.min.js",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"typescript": "~4.5.5"
|
|
61
61
|
},
|
|
62
62
|
"files": [
|
|
63
|
-
"lib"
|
|
63
|
+
"lib",
|
|
64
|
+
"packages/locales"
|
|
64
65
|
]
|
|
65
66
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type LocaleType = keyof typeof localeMap;
|
|
2
|
+
|
|
3
|
+
export const localeMap = {
|
|
4
|
+
zh_CN: 'zh_CN',
|
|
5
|
+
en_US: 'en_US',
|
|
6
|
+
} as const;
|
|
7
|
+
|
|
8
|
+
export const localeList = [
|
|
9
|
+
{
|
|
10
|
+
lang: localeMap.en_US,
|
|
11
|
+
label: 'English',
|
|
12
|
+
icon: '🇺🇸',
|
|
13
|
+
title: 'Language',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
lang: localeMap.zh_CN,
|
|
17
|
+
label: '简体中文',
|
|
18
|
+
icon: '🇨🇳',
|
|
19
|
+
title: '语言',
|
|
20
|
+
},
|
|
21
|
+
] as const;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { set } from 'lodash-es';
|
|
2
|
+
import type { LocaleType } from './config';
|
|
3
|
+
|
|
4
|
+
export const loadLocalePool: LocaleType[] = [];
|
|
5
|
+
|
|
6
|
+
export function setHtmlPageLang(locale: LocaleType) {
|
|
7
|
+
document.querySelector('html')?.setAttribute('lang', locale);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function setLoadLocalePool(cb: (loadLocalePool: LocaleType[]) => void) {
|
|
11
|
+
cb(loadLocalePool);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function genMessage(langs: __WebpackModuleApi.RequireContext, prefix = 'lang') {
|
|
15
|
+
const obj: Recordable = {};
|
|
16
|
+
|
|
17
|
+
langs.keys().forEach((key) => {
|
|
18
|
+
const langFileModule = langs(key).default;
|
|
19
|
+
let fileName = key.replace(`./${prefix}/`, '').replace(/^\.\//, '');
|
|
20
|
+
const lastIndex = fileName.lastIndexOf('.');
|
|
21
|
+
fileName = fileName.substring(0, lastIndex);
|
|
22
|
+
const keyList = fileName.split('/');
|
|
23
|
+
const moduleName = keyList.shift();
|
|
24
|
+
const objKey = keyList.join('.');
|
|
25
|
+
|
|
26
|
+
if (moduleName) {
|
|
27
|
+
if (objKey) {
|
|
28
|
+
set(obj, moduleName, obj[moduleName] || {});
|
|
29
|
+
set(obj[moduleName], objKey, langFileModule);
|
|
30
|
+
} else {
|
|
31
|
+
set(obj, moduleName, langFileModule || {});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type App } from "vue";
|
|
2
|
+
import { createI18n } from "vue-i18n";
|
|
3
|
+
import { localeMap } from "./config";
|
|
4
|
+
import { setHtmlPageLang, setLoadLocalePool } from "./helper";
|
|
5
|
+
import { useLocaleStoreWithOut } from "../store/modules/locale";
|
|
6
|
+
const enUS = require("./lang/en_US");
|
|
7
|
+
const zhCN = require("./lang/zh_CN");
|
|
8
|
+
|
|
9
|
+
function createI18nOptions() {
|
|
10
|
+
const localeStore = useLocaleStoreWithOut();
|
|
11
|
+
const locale = localeStore.getLocale;
|
|
12
|
+
const defaultLocal = locale == "zh_CN" ? zhCN : enUS;
|
|
13
|
+
// await import(`./lang/${locale}.ts`);
|
|
14
|
+
const message = defaultLocal.default?.message ?? {};
|
|
15
|
+
|
|
16
|
+
setHtmlPageLang(locale);
|
|
17
|
+
setLoadLocalePool((loadLocalePool) => {
|
|
18
|
+
loadLocalePool.push(locale);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
locale,
|
|
23
|
+
legacy: false,
|
|
24
|
+
fallbackLocale: localeMap.zh_CN, // set fallback locale
|
|
25
|
+
messages: {
|
|
26
|
+
[locale]: message as { [key: string]: string },
|
|
27
|
+
},
|
|
28
|
+
globalInjection: true,
|
|
29
|
+
silentTranslationWarn: true, // true - warning off
|
|
30
|
+
missingWarn: false,
|
|
31
|
+
silentFallbackWarn: true,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const options = createI18nOptions();
|
|
36
|
+
export const i18n = createI18n(options);
|
|
37
|
+
|
|
38
|
+
// setup i18n instance with global
|
|
39
|
+
export function setupI18n(app: App) {
|
|
40
|
+
app.use(i18n);
|
|
41
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
okText: 'OK',
|
|
3
|
+
closeText: 'Close',
|
|
4
|
+
cancelText: 'Cancel',
|
|
5
|
+
loadingText: 'Loading...',
|
|
6
|
+
saveText: 'Save',
|
|
7
|
+
delText: 'Delete',
|
|
8
|
+
resetText: 'Reset',
|
|
9
|
+
searchText: 'Search',
|
|
10
|
+
queryText: 'Search',
|
|
11
|
+
inputText: 'Please enter',
|
|
12
|
+
chooseText: 'Please choose',
|
|
13
|
+
redo: 'Refresh',
|
|
14
|
+
back: 'Back',
|
|
15
|
+
light: 'Light',
|
|
16
|
+
dark: 'Dark',
|
|
17
|
+
edit:"Edit",
|
|
18
|
+
fullScreen:"fullScreen",
|
|
19
|
+
exitfullScreen:"exitfullScreen",
|
|
20
|
+
LockScreen:"LockScreen",
|
|
21
|
+
ExitSystem:"ExitSystem",
|
|
22
|
+
changeLuaguage:"changeLuaguage"
|
|
23
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
excel: {
|
|
3
|
+
exportModalTitle: 'Export data',
|
|
4
|
+
fileType: 'File type',
|
|
5
|
+
fileName: 'File name',
|
|
6
|
+
exportCurrent: 'Export Current',
|
|
7
|
+
exportAll: 'Export All',
|
|
8
|
+
export:"Export"
|
|
9
|
+
},
|
|
10
|
+
form: {
|
|
11
|
+
putAway: 'Put away',
|
|
12
|
+
unfold: 'Unfold',
|
|
13
|
+
maxTip: 'The number of characters should be less than {0}',
|
|
14
|
+
apiSelectNotFound: 'Wait for data loading to complete...',
|
|
15
|
+
},
|
|
16
|
+
table: {
|
|
17
|
+
settingDens: 'Density',
|
|
18
|
+
settingDensDefault: 'Default',
|
|
19
|
+
settingDensMiddle: 'Middle',
|
|
20
|
+
settingDensSmall: 'Compact',
|
|
21
|
+
settingColumn: 'Column settings',
|
|
22
|
+
settingColumnShow: 'Column display',
|
|
23
|
+
settingIndexColumnShow: 'Index Column',
|
|
24
|
+
settingFixedLeft: 'Fixed Left',
|
|
25
|
+
settingFixedRight: 'Fixed Right',
|
|
26
|
+
settingFullScreen: 'Full Screen',
|
|
27
|
+
settingBordered: 'Bordered',
|
|
28
|
+
index: 'Index',
|
|
29
|
+
total: 'total of {total}',
|
|
30
|
+
allLabel: 'All',
|
|
31
|
+
YesLabel: 'Yes',
|
|
32
|
+
NoLabel: 'NO',
|
|
33
|
+
settingOrder: 'Order setting',
|
|
34
|
+
union: 'union',
|
|
35
|
+
confirm: 'confirm',
|
|
36
|
+
cancel: 'cancel',
|
|
37
|
+
Ascending: 'Ascending',
|
|
38
|
+
Descending: 'Descending',
|
|
39
|
+
singleAscending: 'single Ascending',
|
|
40
|
+
fullScreen: 'full screen',
|
|
41
|
+
exitFullScreen: 'Exit full screen',
|
|
42
|
+
IntWarning: 'Please input int number in {1}',
|
|
43
|
+
LengthWarning: "{1}'length is larger then max,please check",
|
|
44
|
+
FloatWarning: 'Please float int number in {1}',
|
|
45
|
+
batchQueryItem: 'Query by batch',
|
|
46
|
+
selectColInfo: 'Please select query cols',
|
|
47
|
+
editInDlg: 'Edit in dialog',
|
|
48
|
+
show: 'show',
|
|
49
|
+
showInDlg: 'Detils info',
|
|
50
|
+
validWarning:"Please check the form data"
|
|
51
|
+
},
|
|
52
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
footer: { onlinePreview: 'Preview', onlineDocument: 'Document' },
|
|
3
|
+
header: {
|
|
4
|
+
// user dropdown
|
|
5
|
+
dropdownItemDoc: 'Document',
|
|
6
|
+
dropdownItemLoginOut: 'Login Out',
|
|
7
|
+
|
|
8
|
+
tooltipErrorLog: 'Error log',
|
|
9
|
+
tooltipLock: 'Lock screen',
|
|
10
|
+
tooltipNotify: 'Notification',
|
|
11
|
+
|
|
12
|
+
tooltipEntryFull: 'Full Screen',
|
|
13
|
+
tooltipExitFull: 'Exit Full Screen',
|
|
14
|
+
|
|
15
|
+
// lock
|
|
16
|
+
lockScreenPassword: 'Lock screen password',
|
|
17
|
+
lockScreen: 'Lock screen',
|
|
18
|
+
lockScreenBtn: 'Locking',
|
|
19
|
+
|
|
20
|
+
home: 'Home',
|
|
21
|
+
},
|
|
22
|
+
multipleTab: {
|
|
23
|
+
reload: 'Refresh current',
|
|
24
|
+
close: 'Close current',
|
|
25
|
+
closeLeft: 'Close Left',
|
|
26
|
+
closeRight: 'Close Right',
|
|
27
|
+
closeOther: 'Close Other',
|
|
28
|
+
closeAll: 'Close All',
|
|
29
|
+
},
|
|
30
|
+
setting: {
|
|
31
|
+
// content mode
|
|
32
|
+
contentModeFull: 'Full',
|
|
33
|
+
contentModeFixed: 'Fixed width',
|
|
34
|
+
// topMenu align
|
|
35
|
+
topMenuAlignLeft: 'Left',
|
|
36
|
+
topMenuAlignRight: 'Center',
|
|
37
|
+
topMenuAlignCenter: 'Right',
|
|
38
|
+
// menu trigger
|
|
39
|
+
menuTriggerNone: 'Not Show',
|
|
40
|
+
menuTriggerBottom: 'Bottom',
|
|
41
|
+
menuTriggerTop: 'Top',
|
|
42
|
+
// menu type
|
|
43
|
+
menuTypeSidebar: 'Left menu mode',
|
|
44
|
+
menuTypeMixSidebar: 'Left menu mixed mode',
|
|
45
|
+
menuTypeMix: 'Top Menu Mix mode',
|
|
46
|
+
menuTypeTopMenu: 'Top menu mode',
|
|
47
|
+
|
|
48
|
+
on: 'On',
|
|
49
|
+
off: 'Off',
|
|
50
|
+
minute: 'Minute',
|
|
51
|
+
|
|
52
|
+
operatingTitle: 'Successful!',
|
|
53
|
+
operatingContent:
|
|
54
|
+
'The copy is successful, please go to src/settings/projectSetting.ts to modify the configuration!',
|
|
55
|
+
resetSuccess: 'Successfully reset!',
|
|
56
|
+
|
|
57
|
+
copyBtn: 'Copy',
|
|
58
|
+
clearBtn: 'Clear cache and to the login page',
|
|
59
|
+
|
|
60
|
+
drawerTitle: 'Configuration',
|
|
61
|
+
|
|
62
|
+
darkMode: 'Dark mode',
|
|
63
|
+
navMode: 'Navigation mode',
|
|
64
|
+
interfaceFunction: 'Interface function',
|
|
65
|
+
interfaceDisplay: 'Interface display',
|
|
66
|
+
animation: 'Animation',
|
|
67
|
+
splitMenu: 'Split menu',
|
|
68
|
+
closeMixSidebarOnChange: 'Switch page to close menu',
|
|
69
|
+
|
|
70
|
+
sysTheme: 'System theme',
|
|
71
|
+
headerTheme: 'Header theme',
|
|
72
|
+
sidebarTheme: 'Menu theme',
|
|
73
|
+
|
|
74
|
+
menuDrag: 'Drag Sidebar',
|
|
75
|
+
menuSearch: 'Menu search',
|
|
76
|
+
menuAccordion: 'Sidebar accordion',
|
|
77
|
+
menuCollapse: 'Collapse menu',
|
|
78
|
+
collapseMenuDisplayName: 'Collapse menu display name',
|
|
79
|
+
topMenuLayout: 'Top menu layout',
|
|
80
|
+
menuCollapseButton: 'Menu collapse button',
|
|
81
|
+
contentMode: 'Content area width',
|
|
82
|
+
expandedMenuWidth: 'Expanded menu width',
|
|
83
|
+
|
|
84
|
+
breadcrumb: 'Breadcrumbs',
|
|
85
|
+
breadcrumbIcon: 'Breadcrumbs Icon',
|
|
86
|
+
tabs: 'Tabs',
|
|
87
|
+
tabDetail: 'Tab Detail',
|
|
88
|
+
tabsQuickBtn: 'Tabs quick button',
|
|
89
|
+
tabsRedoBtn: 'Tabs redo button',
|
|
90
|
+
tabsFoldBtn: 'Tabs flod button',
|
|
91
|
+
sidebar: 'Sidebar',
|
|
92
|
+
header: 'Header',
|
|
93
|
+
footer: 'Footer',
|
|
94
|
+
fullContent: 'Full content',
|
|
95
|
+
grayMode: 'Gray mode',
|
|
96
|
+
colorWeak: 'Color Weak Mode',
|
|
97
|
+
|
|
98
|
+
progress: 'Progress',
|
|
99
|
+
switchLoading: 'Switch Loading',
|
|
100
|
+
switchAnimation: 'Switch animation',
|
|
101
|
+
animationType: 'Animation type',
|
|
102
|
+
|
|
103
|
+
autoScreenLock: 'Auto screen lock',
|
|
104
|
+
notAutoScreenLock: 'Not auto lock',
|
|
105
|
+
|
|
106
|
+
fixedHeader: 'Fixed header',
|
|
107
|
+
fixedSideBar: 'Fixed Sidebar',
|
|
108
|
+
|
|
109
|
+
mixSidebarTrigger: 'Mixed menu Trigger',
|
|
110
|
+
triggerHover: 'Hover',
|
|
111
|
+
triggerClick: 'Click',
|
|
112
|
+
|
|
113
|
+
mixSidebarFixed: 'Fixed expanded menu',
|
|
114
|
+
},
|
|
115
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
demo: 'Demo',
|
|
3
|
+
button: 'Button Extension',
|
|
4
|
+
modal: 'Draggable Modal',
|
|
5
|
+
form: {
|
|
6
|
+
demo: 'Form Demo',
|
|
7
|
+
basic: 'Basic Form',
|
|
8
|
+
rule: 'Rule Form',
|
|
9
|
+
dynamic: 'Dynamic Form',
|
|
10
|
+
customForm: 'Custom Form Component',
|
|
11
|
+
},
|
|
12
|
+
table: {
|
|
13
|
+
demo: 'Table Demo',
|
|
14
|
+
searchTable: 'Search Table',
|
|
15
|
+
wzry: 'Honor of Kings',
|
|
16
|
+
lol: 'League of Legends',
|
|
17
|
+
},
|
|
18
|
+
icon: 'Custom Icon',
|
|
19
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import antdLocale from 'ant-design-vue/es/locale/en_US';
|
|
2
|
+
// import { genMessage } from '../helper';
|
|
3
|
+
import { set } from 'lodash-es';
|
|
4
|
+
function genMessage(langs, prefix = 'lang') {
|
|
5
|
+
const obj = {};
|
|
6
|
+
langs.keys().forEach((key) => {
|
|
7
|
+
const langFileModule = langs(key).default;
|
|
8
|
+
let fileName = key.replace(`./${prefix}/`, '').replace(/^\.\//, '');
|
|
9
|
+
const lastIndex = fileName.lastIndexOf('.');
|
|
10
|
+
fileName = fileName.substring(0, lastIndex);
|
|
11
|
+
const keyList = fileName.split('/');
|
|
12
|
+
const moduleName = keyList.shift();
|
|
13
|
+
const objKey = keyList.join('.');
|
|
14
|
+
|
|
15
|
+
if (moduleName) {
|
|
16
|
+
if (objKey) {
|
|
17
|
+
set(obj, moduleName, obj[moduleName] || {});
|
|
18
|
+
set(obj[moduleName], objKey, langFileModule);
|
|
19
|
+
} else {
|
|
20
|
+
set(obj, moduleName, langFileModule || {});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return obj;
|
|
25
|
+
}
|
|
26
|
+
const modulesFiles = require.context('./en-US', true, /\.js$/);
|
|
27
|
+
|
|
28
|
+
export default {
|
|
29
|
+
message: {
|
|
30
|
+
...genMessage(modulesFiles, 'en-US'),
|
|
31
|
+
antdLocale,
|
|
32
|
+
},
|
|
33
|
+
dateLocale: null,
|
|
34
|
+
dateLocaleName: 'en-US',
|
|
35
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
okText: '确认',
|
|
3
|
+
closeText: '关闭',
|
|
4
|
+
cancelText: '取消',
|
|
5
|
+
loadingText: '加载中...',
|
|
6
|
+
saveText: '保存',
|
|
7
|
+
delText: '删除',
|
|
8
|
+
resetText: '重置',
|
|
9
|
+
searchText: '搜索',
|
|
10
|
+
queryText: '查询',
|
|
11
|
+
inputText: '请输入',
|
|
12
|
+
chooseText: '请选择',
|
|
13
|
+
redo: '刷新',
|
|
14
|
+
back: '返回',
|
|
15
|
+
light: '亮色主题',
|
|
16
|
+
dark: '黑暗主题',
|
|
17
|
+
edit:"编辑",
|
|
18
|
+
fullScreen:"全屏",
|
|
19
|
+
exitfullScreen:"退出全屏",
|
|
20
|
+
LockScreen:"锁屏",
|
|
21
|
+
ExitSystem:"退出系统",
|
|
22
|
+
changeLuaguage:"切换语言"
|
|
23
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
excel: {
|
|
3
|
+
exportModalTitle: '导出数据',
|
|
4
|
+
fileType: '文件类型',
|
|
5
|
+
fileName: '文件名',
|
|
6
|
+
exportCurrent: '导出当前数据',
|
|
7
|
+
exportAll: '导出所有数据',
|
|
8
|
+
export:"导出"
|
|
9
|
+
},
|
|
10
|
+
form: {
|
|
11
|
+
putAway: '收起',
|
|
12
|
+
unfold: '展开',
|
|
13
|
+
|
|
14
|
+
maxTip: '字符数应小于{0}位',
|
|
15
|
+
|
|
16
|
+
apiSelectNotFound: '请等待数据加载完成...',
|
|
17
|
+
},
|
|
18
|
+
table: {
|
|
19
|
+
settingDens: '密度',
|
|
20
|
+
settingDensDefault: '默认',
|
|
21
|
+
settingDensMiddle: '中等',
|
|
22
|
+
settingDensSmall: '紧凑',
|
|
23
|
+
settingColumn: '列设置',
|
|
24
|
+
settingColumnShow: '列展示',
|
|
25
|
+
settingIndexColumnShow: '序号列',
|
|
26
|
+
settingFixedLeft: '固定到左侧',
|
|
27
|
+
settingFixedRight: '固定到右侧',
|
|
28
|
+
settingFullScreen: '全屏',
|
|
29
|
+
settingBordered: '边框',
|
|
30
|
+
index: '序号',
|
|
31
|
+
total: '共 {total} 条数据',
|
|
32
|
+
allLabel: '全部',
|
|
33
|
+
YesLabel: '是',
|
|
34
|
+
NoLabel: '否',
|
|
35
|
+
settingOrder: '排序设置',
|
|
36
|
+
union: '联合排序',
|
|
37
|
+
confirm: '确定',
|
|
38
|
+
cancel: '取消',
|
|
39
|
+
Ascending: '升序',
|
|
40
|
+
Descending: '降序',
|
|
41
|
+
singleAscending: '单独排序',
|
|
42
|
+
fullScreen: '全屏',
|
|
43
|
+
exitFullScreen: '退出全屏',
|
|
44
|
+
IntWarning: '请在{1}中输入正确的整型值',
|
|
45
|
+
LengthWarning: '{1}的长度超过最大值,请重新输入',
|
|
46
|
+
FloatWarning: '请在{1}中输入正确的浮点数',
|
|
47
|
+
batchQueryItem: '批量查询条件',
|
|
48
|
+
selectColInfo: '请选择查询列',
|
|
49
|
+
editInDlg: '在弹窗中编辑',
|
|
50
|
+
show: '查看',
|
|
51
|
+
showInDlg: '详细信息',
|
|
52
|
+
validWarning:"请检查界面数据"
|
|
53
|
+
},
|
|
54
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
footer: { onlinePreview: '在线预览', onlineDocument: '在线文档' },
|
|
3
|
+
header: {
|
|
4
|
+
// user dropdown
|
|
5
|
+
dropdownItemDoc: '文档',
|
|
6
|
+
dropdownItemLoginOut: '退出系统',
|
|
7
|
+
|
|
8
|
+
// tooltip
|
|
9
|
+
tooltipErrorLog: '错误日志',
|
|
10
|
+
tooltipLock: '锁定屏幕',
|
|
11
|
+
tooltipNotify: '消息通知',
|
|
12
|
+
|
|
13
|
+
tooltipEntryFull: '全屏',
|
|
14
|
+
tooltipExitFull: '退出全屏',
|
|
15
|
+
|
|
16
|
+
// lock
|
|
17
|
+
lockScreenPassword: '锁屏密码',
|
|
18
|
+
lockScreen: '锁定屏幕',
|
|
19
|
+
lockScreenBtn: '锁定',
|
|
20
|
+
|
|
21
|
+
home: '首页',
|
|
22
|
+
},
|
|
23
|
+
multipleTab: {
|
|
24
|
+
reload: '重新加载',
|
|
25
|
+
close: '关闭标签页',
|
|
26
|
+
closeLeft: '关闭左侧标签页',
|
|
27
|
+
closeRight: '关闭右侧标签页',
|
|
28
|
+
closeOther: '关闭其它标签页',
|
|
29
|
+
closeAll: '关闭全部标签页',
|
|
30
|
+
},
|
|
31
|
+
setting: {
|
|
32
|
+
// content mode
|
|
33
|
+
contentModeFull: '流式',
|
|
34
|
+
contentModeFixed: '定宽',
|
|
35
|
+
// topMenu align
|
|
36
|
+
topMenuAlignLeft: '居左',
|
|
37
|
+
topMenuAlignRight: '居中',
|
|
38
|
+
topMenuAlignCenter: '居右',
|
|
39
|
+
// menu trigger
|
|
40
|
+
menuTriggerNone: '不显示',
|
|
41
|
+
menuTriggerBottom: '底部',
|
|
42
|
+
menuTriggerTop: '顶部',
|
|
43
|
+
// menu type
|
|
44
|
+
menuTypeSidebar: '左侧菜单模式',
|
|
45
|
+
menuTypeMixSidebar: '左侧菜单混合模式',
|
|
46
|
+
menuTypeMix: '顶部菜单混合模式',
|
|
47
|
+
menuTypeTopMenu: '顶部菜单模式',
|
|
48
|
+
|
|
49
|
+
on: '开',
|
|
50
|
+
off: '关',
|
|
51
|
+
minute: '分钟',
|
|
52
|
+
|
|
53
|
+
operatingTitle: '操作成功',
|
|
54
|
+
operatingContent: '复制成功,请到 src/settings/projectSetting.ts 中修改配置!',
|
|
55
|
+
resetSuccess: '重置成功!',
|
|
56
|
+
|
|
57
|
+
copyBtn: '拷贝',
|
|
58
|
+
clearBtn: '清空缓存并返回登录页',
|
|
59
|
+
|
|
60
|
+
drawerTitle: '项目配置',
|
|
61
|
+
|
|
62
|
+
darkMode: '主题',
|
|
63
|
+
navMode: '导航栏模式',
|
|
64
|
+
interfaceFunction: '界面功能',
|
|
65
|
+
interfaceDisplay: '界面显示',
|
|
66
|
+
animation: '动画',
|
|
67
|
+
splitMenu: '分割菜单',
|
|
68
|
+
closeMixSidebarOnChange: '切换页面关闭菜单',
|
|
69
|
+
|
|
70
|
+
sysTheme: '系统主题',
|
|
71
|
+
headerTheme: '顶栏主题',
|
|
72
|
+
sidebarTheme: '菜单主题',
|
|
73
|
+
|
|
74
|
+
menuDrag: '侧边菜单拖拽',
|
|
75
|
+
menuSearch: '菜单搜索',
|
|
76
|
+
menuAccordion: '侧边菜单手风琴模式',
|
|
77
|
+
menuCollapse: '折叠菜单',
|
|
78
|
+
collapseMenuDisplayName: '折叠菜单显示名称',
|
|
79
|
+
topMenuLayout: '顶部菜单布局',
|
|
80
|
+
menuCollapseButton: '菜单折叠按钮',
|
|
81
|
+
contentMode: '内容区域宽度',
|
|
82
|
+
expandedMenuWidth: '菜单展开宽度',
|
|
83
|
+
|
|
84
|
+
breadcrumb: '面包屑',
|
|
85
|
+
breadcrumbIcon: '面包屑图标',
|
|
86
|
+
tabs: '标签页',
|
|
87
|
+
tabDetail: '标签详情页',
|
|
88
|
+
tabsQuickBtn: '标签页快捷按钮',
|
|
89
|
+
tabsRedoBtn: '标签页刷新按钮',
|
|
90
|
+
tabsFoldBtn: '标签页折叠按钮',
|
|
91
|
+
sidebar: '左侧菜单',
|
|
92
|
+
header: '顶栏',
|
|
93
|
+
footer: '页脚',
|
|
94
|
+
fullContent: '全屏内容',
|
|
95
|
+
grayMode: '灰色模式',
|
|
96
|
+
colorWeak: '色弱模式',
|
|
97
|
+
|
|
98
|
+
progress: '顶部进度条',
|
|
99
|
+
switchLoading: '切换loading',
|
|
100
|
+
switchAnimation: '切换动画',
|
|
101
|
+
animationType: '动画类型',
|
|
102
|
+
|
|
103
|
+
autoScreenLock: '自动锁屏',
|
|
104
|
+
notAutoScreenLock: '不自动锁屏',
|
|
105
|
+
|
|
106
|
+
fixedHeader: '固定header',
|
|
107
|
+
fixedSideBar: '固定Sidebar',
|
|
108
|
+
|
|
109
|
+
mixSidebarTrigger: '混合菜单触发方式',
|
|
110
|
+
triggerHover: '悬停',
|
|
111
|
+
triggerClick: '点击',
|
|
112
|
+
|
|
113
|
+
mixSidebarFixed: '固定展开菜单',
|
|
114
|
+
},
|
|
115
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
demo: 'demo演示',
|
|
3
|
+
button: '按钮的扩展',
|
|
4
|
+
modal: '可拖拽弹窗',
|
|
5
|
+
form: {
|
|
6
|
+
demo: '表单演示',
|
|
7
|
+
basic: '基础表单',
|
|
8
|
+
rule: '表单校验',
|
|
9
|
+
dynamic: '动态表单',
|
|
10
|
+
customForm: '自定义表单组件',
|
|
11
|
+
},
|
|
12
|
+
table: {
|
|
13
|
+
demo: '表格演示',
|
|
14
|
+
searchTable: '查询表格',
|
|
15
|
+
wzry: '王者荣耀',
|
|
16
|
+
lol: '英雄联盟',
|
|
17
|
+
},
|
|
18
|
+
icon: '自定义图标',
|
|
19
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import antdLocale from 'ant-design-vue/es/locale/zh_CN';
|
|
2
|
+
import { set } from 'lodash-es';
|
|
3
|
+
|
|
4
|
+
function genMessage(langs, prefix = 'lang') {
|
|
5
|
+
const obj = {};
|
|
6
|
+
langs.keys().forEach((key) => {
|
|
7
|
+
const langFileModule = langs(key).default;
|
|
8
|
+
let fileName = key.replace(`./${prefix}/`, '').replace(/^\.\//, '');
|
|
9
|
+
const lastIndex = fileName.lastIndexOf('.');
|
|
10
|
+
fileName = fileName.substring(0, lastIndex);
|
|
11
|
+
const keyList = fileName.split('/');
|
|
12
|
+
const moduleName = keyList.shift();
|
|
13
|
+
const objKey = keyList.join('.');
|
|
14
|
+
if (moduleName) {
|
|
15
|
+
if (objKey) {
|
|
16
|
+
set(obj, moduleName, obj[moduleName] || {});
|
|
17
|
+
set(obj[moduleName], objKey, langFileModule);
|
|
18
|
+
} else {
|
|
19
|
+
set(obj, moduleName, langFileModule || {});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const modulesFiles = require.context('./zh-CN', true, /\.js$/);
|
|
27
|
+
|
|
28
|
+
export default {
|
|
29
|
+
message: {
|
|
30
|
+
...genMessage(modulesFiles, 'zh-CN'),
|
|
31
|
+
antdLocale,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-language related operations
|
|
3
|
+
*/
|
|
4
|
+
import { unref, computed } from 'vue';
|
|
5
|
+
import { loadLocalePool, setHtmlPageLang } from './helper';
|
|
6
|
+
import { i18n } from './';
|
|
7
|
+
import type { LocaleType } from './config';
|
|
8
|
+
import type { Locale } from 'ant-design-vue/es/locale-provider';
|
|
9
|
+
|
|
10
|
+
import { useLocaleStoreWithOut } from '@/store/modules/locale';
|
|
11
|
+
|
|
12
|
+
interface LangModule {
|
|
13
|
+
message: Recordable;
|
|
14
|
+
dateLocale: Recordable;
|
|
15
|
+
dateLocaleName: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function setI18nLanguage(locale: LocaleType) {
|
|
19
|
+
const localeStore = useLocaleStoreWithOut();
|
|
20
|
+
|
|
21
|
+
if (i18n.mode === 'legacy') {
|
|
22
|
+
i18n.global.locale = locale;
|
|
23
|
+
} else {
|
|
24
|
+
(i18n.global.locale as any).value = locale;
|
|
25
|
+
}
|
|
26
|
+
localeStore.setLocale(locale);
|
|
27
|
+
setHtmlPageLang(locale);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function useLocale() {
|
|
31
|
+
const localeStore = useLocaleStoreWithOut();
|
|
32
|
+
const getLocale = computed(() => localeStore.getLocale);
|
|
33
|
+
|
|
34
|
+
const getAntdLocale = computed<Locale>((): any => {
|
|
35
|
+
return i18n.global.getLocaleMessage<{ antdLocale: Locale }>(unref(getLocale)).antdLocale;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Switching the language will change the locale of useI18n
|
|
39
|
+
// And submit to configuration modification
|
|
40
|
+
async function changeLocale(locale: LocaleType) {
|
|
41
|
+
const globalI18n = i18n.global;
|
|
42
|
+
const currentLocale = unref(globalI18n.locale);
|
|
43
|
+
if (currentLocale === locale) {
|
|
44
|
+
return locale;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (loadLocalePool.includes(locale)) {
|
|
48
|
+
setI18nLanguage(locale);
|
|
49
|
+
return locale;
|
|
50
|
+
}
|
|
51
|
+
const langModule = ((await import(`./lang/${locale}.ts`)) as any).default as LangModule;
|
|
52
|
+
if (!langModule) return;
|
|
53
|
+
|
|
54
|
+
const { message } = langModule;
|
|
55
|
+
|
|
56
|
+
globalI18n.setLocaleMessage(locale, message);
|
|
57
|
+
loadLocalePool.push(locale);
|
|
58
|
+
|
|
59
|
+
setI18nLanguage(locale);
|
|
60
|
+
return locale;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
getLocale,
|
|
65
|
+
changeLocale,
|
|
66
|
+
getAntdLocale,
|
|
67
|
+
};
|
|
68
|
+
}
|