chore(config): 初始化项目配置文件
- 添加 .editorconfig 文件统一代码风格 - 配置 .env.development 环境变量文件 - 创建 .env.example 环境变量示例文件 - 设置 .eslintignore 忽略检查规则 - 配置 .eslintrc.js 代码检查规则 - 添加 .gitignore 文件忽略版本控制 - 设置 .prettierignore 忽略格式化规则 - 新增隐私政策HTML页面文件 - 创建API密钥编辑组件基础结构
This commit is contained in:
20
src/i18n/index.ts
Normal file
20
src/i18n/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* 国际化配置
|
||||
*/
|
||||
import { createI18n } from 'vue-i18n';
|
||||
import { I18N_CACHE_NAME } from '@/config/setting';
|
||||
import zh_CN from './lang/zh_CN';
|
||||
// import zh_TW from './lang/zh_TW';
|
||||
import en from './lang/en';
|
||||
|
||||
const messages = { zh_CN, en };
|
||||
|
||||
const i18n = createI18n({
|
||||
messages,
|
||||
legacy: false,
|
||||
silentTranslationWarn: true,
|
||||
// 默认语言
|
||||
locale: localStorage.getItem(I18N_CACHE_NAME) || 'zh_CN'
|
||||
});
|
||||
|
||||
export default i18n;
|
||||
14
src/i18n/lang/en/index.ts
Normal file
14
src/i18n/lang/en/index.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* 英语
|
||||
*/
|
||||
import route from './route';
|
||||
import layout from './layout';
|
||||
import login from './login';
|
||||
import list from './list';
|
||||
|
||||
export default {
|
||||
route,
|
||||
layout,
|
||||
login,
|
||||
list
|
||||
};
|
||||
80
src/i18n/lang/en/layout.ts
Normal file
80
src/i18n/lang/en/layout.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
/* 主框架 */
|
||||
export default {
|
||||
system: 'WebsoftCMS',
|
||||
home: 'Home',
|
||||
header: {
|
||||
profile: 'Profile',
|
||||
password: 'Password',
|
||||
accessKey: 'AccessKey',
|
||||
system: 'Setting',
|
||||
logout: 'SignOut'
|
||||
},
|
||||
footer: {
|
||||
website: 'Website',
|
||||
document: 'Document',
|
||||
authorization: 'Authorization',
|
||||
copyright: 'Copyright © 2021 WebSoft Inc.'
|
||||
},
|
||||
logout: {
|
||||
title: 'Confirm',
|
||||
message: 'Are you sure you want to log out?'
|
||||
},
|
||||
setting: {
|
||||
title: 'Theme Setting',
|
||||
sideStyles: {
|
||||
dark: 'Dark Sidebar',
|
||||
light: 'Light Sidebar'
|
||||
},
|
||||
headStyles: {
|
||||
light: 'Light Header',
|
||||
dark: 'Dark Header',
|
||||
primary: 'Primary Header'
|
||||
},
|
||||
layoutStyles: {
|
||||
side: 'Side Menu Layout',
|
||||
top: 'Top Menu Layout',
|
||||
mix: 'Mix Menu Layout'
|
||||
},
|
||||
colors: {
|
||||
default: 'Daybreak Blue',
|
||||
dust: 'Dust Blue',
|
||||
sunset: 'Sunset Orange',
|
||||
volcano: 'Volcano',
|
||||
purple: 'Golden Purple',
|
||||
cyan: 'Cyan',
|
||||
green: 'Polar Green',
|
||||
geekblue: 'Geek Blue'
|
||||
},
|
||||
darkMode: 'Dark Mode',
|
||||
layoutStyle: 'Navigation Mode',
|
||||
sideMenuStyle: 'Sidebar Double Menu',
|
||||
bodyFull: 'Body Fixed Width',
|
||||
other: 'Other Setting',
|
||||
fixedHeader: 'Fixed Header',
|
||||
fixedSidebar: 'Fixed Sidebar',
|
||||
fixedBody: 'Fixed Body',
|
||||
logoAutoSize: 'Logo In Header',
|
||||
styleResponsive: 'Responsive',
|
||||
colorfulIcon: 'Colorful Icon',
|
||||
sideUniqueOpen: 'Menu Unique Open',
|
||||
weakMode: 'Weak Mode',
|
||||
showFooter: 'Show Footer',
|
||||
showTabs: 'Show Tabs',
|
||||
tabStyle: 'Tab Style',
|
||||
tabStyles: {
|
||||
default: 'Default',
|
||||
dot: 'Dot',
|
||||
card: 'Card'
|
||||
},
|
||||
transitionName: 'Transition',
|
||||
transitions: {
|
||||
slideRight: 'Slide Right',
|
||||
slideBottom: 'Slide Bottom',
|
||||
zoomIn: 'Zoom In',
|
||||
zoomOut: 'Zoom Out',
|
||||
fade: 'Fade'
|
||||
},
|
||||
reset: 'Reset',
|
||||
tips: 'It will remember your configuration the next time you open it.'
|
||||
}
|
||||
};
|
||||
17
src/i18n/lang/en/list.ts
Normal file
17
src/i18n/lang/en/list.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
/* 列表页面 */
|
||||
export default {
|
||||
// 基础列表
|
||||
basic: {
|
||||
table: {
|
||||
avatar: 'Avatar',
|
||||
username: 'Username',
|
||||
nickname: 'Nickname',
|
||||
organizationName: 'Organization',
|
||||
phone: 'Phone',
|
||||
sexName: 'Sex',
|
||||
createTime: 'CreateTime',
|
||||
status: 'Status',
|
||||
action: 'Action'
|
||||
}
|
||||
}
|
||||
};
|
||||
14
src/i18n/lang/en/login.ts
Normal file
14
src/i18n/lang/en/login.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/* 登录界面 */
|
||||
export default {
|
||||
title: 'User Login',
|
||||
username: 'please input username',
|
||||
password: 'please input password',
|
||||
code: 'please input code',
|
||||
remember: 'remember',
|
||||
forget: 'forget',
|
||||
login: 'login',
|
||||
loading: 'loading',
|
||||
oldPassword: 'Old',
|
||||
newPassword: 'New',
|
||||
confirm: 'Confirm',
|
||||
};
|
||||
22
src/i18n/lang/en/route.ts
Normal file
22
src/i18n/lang/en/route.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
/* 菜单路由 */
|
||||
export default {
|
||||
login: { _name: 'Login' },
|
||||
forget: { _name: 'Forget' },
|
||||
dashboard: {
|
||||
_name: 'Dashboard',
|
||||
workplace: { _name: 'Workplace' },
|
||||
analysis: { _name: 'Analysis' },
|
||||
monitor: { _name: 'Monitor' }
|
||||
},
|
||||
result: {
|
||||
_name: 'Result',
|
||||
success: { _name: 'Success' },
|
||||
fail: { _name: 'Fail' }
|
||||
},
|
||||
exception: {
|
||||
_name: 'Exception',
|
||||
'403': { _name: '403' },
|
||||
'404': { _name: '404' },
|
||||
'500': { _name: '500' }
|
||||
}
|
||||
};
|
||||
14
src/i18n/lang/zh_CN/index.ts
Normal file
14
src/i18n/lang/zh_CN/index.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* 简体中文
|
||||
*/
|
||||
import route from './route';
|
||||
import layout from './layout';
|
||||
import login from './login';
|
||||
import list from './list';
|
||||
|
||||
export default {
|
||||
route,
|
||||
layout,
|
||||
login,
|
||||
list
|
||||
};
|
||||
81
src/i18n/lang/zh_CN/layout.ts
Normal file
81
src/i18n/lang/zh_CN/layout.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
const storeName = localStorage.getItem('StoreName') || 'WebSoft Inc';
|
||||
/* 主框架 */
|
||||
export default {
|
||||
system: '小程序开发',
|
||||
home: '主页',
|
||||
header: {
|
||||
profile: '个人资料',
|
||||
password: '修改密码',
|
||||
accessKey: '秘钥管理',
|
||||
system: '系统设置',
|
||||
logout: '退出登录'
|
||||
},
|
||||
footer: {
|
||||
website: '官网',
|
||||
document: '文档',
|
||||
authorization: '授权',
|
||||
copyright: `© 2013-${new Date().getFullYear()} ${storeName}`
|
||||
},
|
||||
logout: {
|
||||
title: '提示',
|
||||
message: '确定要退出登录吗?'
|
||||
},
|
||||
setting: {
|
||||
title: '整体风格设置',
|
||||
sideStyles: {
|
||||
dark: '暗色侧边栏',
|
||||
light: '亮色侧边栏'
|
||||
},
|
||||
headStyles: {
|
||||
light: '亮色顶栏',
|
||||
dark: '暗色顶栏',
|
||||
primary: '主色顶栏'
|
||||
},
|
||||
layoutStyles: {
|
||||
side: '左侧菜单布局',
|
||||
top: '顶部菜单布局',
|
||||
mix: '混合菜单布局'
|
||||
},
|
||||
colors: {
|
||||
default: '拂晓蓝',
|
||||
dust: '薄暮',
|
||||
sunset: '日暮',
|
||||
volcano: '火山',
|
||||
purple: '酱紫',
|
||||
cyan: '明青',
|
||||
green: '极光绿',
|
||||
geekblue: '极客蓝'
|
||||
},
|
||||
darkMode: '开启暗黑模式',
|
||||
layoutStyle: '导航模式',
|
||||
sideMenuStyle: '侧栏双排菜单',
|
||||
bodyFull: '内容区域定宽',
|
||||
other: '其它配置',
|
||||
fixedHeader: '固定顶栏区域',
|
||||
fixedSidebar: '固定侧栏区域',
|
||||
fixedBody: '固定主体区域',
|
||||
logoAutoSize: 'Logo置于顶栏',
|
||||
styleResponsive: '移动端响应式',
|
||||
colorfulIcon: '侧栏彩色图标',
|
||||
sideUniqueOpen: '侧栏排他展开',
|
||||
weakMode: '开启色弱模式',
|
||||
showFooter: '开启全局页脚',
|
||||
showTabs: '开启多页签栏',
|
||||
tabStyle: '页签显示风格',
|
||||
tabStyles: {
|
||||
default: '默认',
|
||||
dot: '圆点',
|
||||
card: '卡片'
|
||||
},
|
||||
transitionName: '路由切换动画',
|
||||
transitions: {
|
||||
slideRight: '滑动消退',
|
||||
slideBottom: '底部消退',
|
||||
zoomIn: '放大渐变',
|
||||
zoomOut: '缩小渐变',
|
||||
fade: '淡入淡出'
|
||||
},
|
||||
reset: '重置',
|
||||
tips: '该功能可实时预览各种布局效果, 修改后会缓存在本地, 下次打开会记忆主题配置.'
|
||||
}
|
||||
};
|
||||
17
src/i18n/lang/zh_CN/list.ts
Normal file
17
src/i18n/lang/zh_CN/list.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
/* 列表页面 */
|
||||
export default {
|
||||
// 基础列表
|
||||
basic: {
|
||||
table: {
|
||||
avatar: '头像',
|
||||
username: '账号',
|
||||
nickname: '昵称',
|
||||
organizationName: '成员与部门',
|
||||
phone: '手机号',
|
||||
sexName: '性别',
|
||||
createTime: '创建时间',
|
||||
status: '状态',
|
||||
action: '操作'
|
||||
}
|
||||
}
|
||||
};
|
||||
14
src/i18n/lang/zh_CN/login.ts
Normal file
14
src/i18n/lang/zh_CN/login.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/* 登录界面 */
|
||||
export default {
|
||||
title: '用户登录',
|
||||
username: '请输入登录账号',
|
||||
password: '请输入登录密码',
|
||||
code: '请输入验证码',
|
||||
remember: '记住密码',
|
||||
forget: '忘记密码',
|
||||
login: '登录',
|
||||
loading: '登录中',
|
||||
oldPassword: '旧密码',
|
||||
newPassword: '新密码',
|
||||
confirm: '确认密码',
|
||||
};
|
||||
16
src/i18n/lang/zh_CN/route.ts
Normal file
16
src/i18n/lang/zh_CN/route.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
/* 菜单路由 */
|
||||
export default {
|
||||
login: { _name: '登录' },
|
||||
forget: { _name: '忘记密码' },
|
||||
result: {
|
||||
_name: '结果页面',
|
||||
success: { _name: '成功页' },
|
||||
fail: { _name: '失败页' }
|
||||
},
|
||||
exception: {
|
||||
_name: '异常页面',
|
||||
'403': { _name: '403' },
|
||||
'404': { _name: '404' },
|
||||
'500': { _name: '500' }
|
||||
}
|
||||
};
|
||||
35
src/i18n/use-locale.ts
Normal file
35
src/i18n/use-locale.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* AntDesignVue、WebSoftAdmin、Dayjs 国际化配置
|
||||
*/
|
||||
import { ref, watch } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import type { Locale } from 'ant-design-vue/es/locale-provider';
|
||||
import type { EleLocale } from 'ele-admin-pro/es';
|
||||
// AntDesignVue
|
||||
import zh_CN from 'ant-design-vue/es/locale/zh_CN';
|
||||
import en from 'ant-design-vue/es/locale/en_US';
|
||||
// WebSoftAdmin
|
||||
import eleZh_CN from 'ele-admin-pro/es/lang/zh_CN';
|
||||
import eleEn from 'ele-admin-pro/es/lang/en_US';
|
||||
// Dayjs
|
||||
import dayjs from 'dayjs';
|
||||
import 'dayjs/locale/zh-cn';
|
||||
const antLocales = { zh_CN, en };
|
||||
const eleLocales = { zh_CN: eleZh_CN, en: eleEn };
|
||||
|
||||
export function useLocale() {
|
||||
const { locale } = useI18n();
|
||||
const antLocale = ref<Locale>();
|
||||
const eleLocale = ref<EleLocale>();
|
||||
|
||||
watch(
|
||||
locale,
|
||||
() => {
|
||||
antLocale.value = antLocales[locale.value];
|
||||
eleLocale.value = eleLocales[locale.value];
|
||||
dayjs.locale(locale.value.toLowerCase().replace(/_/g, '-'));
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
return { antLocale, eleLocale };
|
||||
}
|
||||
Reference in New Issue
Block a user