This commit is contained in:
chermack
2026-07-26 00:09:57 +08:00
commit 059be96536
134 changed files with 19678 additions and 0 deletions
+122
View File
@@ -0,0 +1,122 @@
export default {
name: 'en',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Clear',
},
datepicker: {
now: 'Now',
today: 'Today',
cancel: 'Cancel',
clear: 'Clear',
confirm: 'OK',
selectDate: 'Select date',
selectTime: 'Select time',
startDate: 'Start Date',
startTime: 'Start Time',
endDate: 'End Date',
endTime: 'End Time',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '',
month1: 'January',
month2: 'February',
month3: 'March',
month4: 'April',
month5: 'May',
month6: 'June',
month7: 'July',
month8: 'August',
month9: 'September',
month10: 'October',
month11: 'November',
month12: 'December',
week: 'week',
weeks: {
sun: 'Sun',
mon: 'Mon',
tue: 'Tue',
wed: 'Wed',
thu: 'Thu',
fri: 'Fri',
sat: 'Sat',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'May',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Oct',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Loading',
noMatch: 'No matching data',
noData: 'No data',
placeholder: 'Select',
},
cascader: {
noMatch: 'No matching data',
loading: 'Loading',
placeholder: 'Select',
noData: 'No data',
},
pagination: {
goto: 'Go to',
pagesize: '/page',
total: 'Total {total}',
pageClassifier: '',
deprecationWarning: 'Deprecated usages detected, please refer to the el-pagination documentation for more details',
},
messagebox: {
title: 'Message',
confirm: 'OK',
cancel: 'Cancel',
error: 'Illegal input',
},
upload: {
deleteTip: 'press delete to remove',
delete: 'Delete',
preview: 'Preview',
continue: 'Continue',
},
table: {
emptyText: 'No Data',
confirmFilter: 'Confirm',
resetFilter: 'Reset',
clearFilter: 'All',
sumText: 'Sum',
},
tree: {
emptyText: 'No Data',
},
transfer: {
noMatch: 'No matching data',
noData: 'No data',
titles: ['List 1', 'List 2'],
filterPlaceholder: 'Enter keyword',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked', // to be translated
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back', // to be translated
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
};
+122
View File
@@ -0,0 +1,122 @@
export default {
name: 'zh-cn',
el: {
colorpicker: {
confirm: '确定',
clear: '清空',
},
datepicker: {
now: '此刻',
today: '今天',
cancel: '取消',
clear: '清空',
confirm: '确定',
selectDate: '选择日期',
selectTime: '选择时间',
startDate: '开始日期',
startTime: '开始时间',
endDate: '结束日期',
endTime: '结束时间',
prevYear: '前一年',
nextYear: '后一年',
prevMonth: '上个月',
nextMonth: '下个月',
year: '年',
month1: '1 月',
month2: '2 月',
month3: '3 月',
month4: '4 月',
month5: '5 月',
month6: '6 月',
month7: '7 月',
month8: '8 月',
month9: '9 月',
month10: '10 月',
month11: '11 月',
month12: '12 月',
// week: '周次',
weeks: {
sun: '日',
mon: '一',
tue: '二',
wed: '三',
thu: '四',
fri: '五',
sat: '六',
},
months: {
jan: '一月',
feb: '二月',
mar: '三月',
apr: '四月',
may: '五月',
jun: '六月',
jul: '七月',
aug: '八月',
sep: '九月',
oct: '十月',
nov: '十一月',
dec: '十二月',
},
},
select: {
loading: '加载中',
noMatch: '无匹配数据',
noData: '无数据',
placeholder: '请选择',
},
cascader: {
noMatch: '无匹配数据',
loading: '加载中',
placeholder: '请选择',
noData: '暂无数据',
},
pagination: {
goto: '前往',
pagesize: '条/页',
total: '共 {total} 条',
pageClassifier: '页',
deprecationWarning: '你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档',
},
messagebox: {
title: '提示',
confirm: '确定',
cancel: '取消',
error: '输入的数据不合法!',
},
upload: {
deleteTip: '按 delete 键可删除',
delete: '删除',
preview: '查看图片',
continue: '继续上传',
},
table: {
emptyText: '暂无数据',
confirmFilter: '筛选',
resetFilter: '重置',
clearFilter: '全部',
sumText: '合计',
},
tree: {
emptyText: '暂无数据',
},
transfer: {
noMatch: '无匹配数据',
noData: '无数据',
titles: ['列表 1', '列表 2'],
filterPlaceholder: '请输入搜索内容',
noCheckedFormat: '共 {total} 项',
hasCheckedFormat: '已选 {checked}/{total} 项',
},
image: {
error: '加载失败',
},
pageHeader: {
title: '返回',
},
popconfirm: {
confirmButtonText: '确定',
cancelButtonText: '取消',
},
},
};
+127
View File
@@ -0,0 +1,127 @@
export default {
ok: 'ok',
cancel: 'cancel',
reset: 'reset',
inputPass: 'input password',
inputPassAgain: 'input password again',
passLessError: "password number can't be less than 5",
passDifferentError: 'The two inputs are inconsistent!',
setupPass: 'setup admin password',
inputNotNull: "username or password can't be null!",
route: {
dashboard: 'Dashboard',
trojan: 'Trojan',
user: 'User'
},
navbar: {
version: 'System Version',
setting: 'System Setting',
password: 'Reset Password',
title: 'Change Title',
importExport: 'Import Export',
resetDay: 'Change Reset Day',
clashRules: 'Change Clash Rules',
resetTitle: 'Change data reset day of the month',
changeTitle: 'Change login page title',
changeRules: 'Change clash rules',
changeTitleSuccess: 'Change title success!',
changeRulesSuccess: 'Change clash rules success!',
resetRulesSuccess: 'Reset clash rules success!',
changeDaySuccess: 'Change data reset day success!',
closeResetSuccess: 'Close data reset success!',
inputTitle: 'Input login page title',
versionTitle: 'Trojan-manager Version',
passwordTitle: 'Change admin password',
resetSuccess: 'reset password success!',
meanClose: '0 means close data reset',
exportTip: 'export all database record to csv file',
importTip: 'import csv to database',
importSuccess: 'Import Success',
importCsv: 'import csv file',
exportCsv: 'export csv file'
},
dashboard: {
memory: 'memory',
disk: 'disk',
trojanVersion: 'Trojan Version',
trojanUser: 'Trojan User',
trojanUptime: 'Trojan Uptime',
netSpeed: 'Network Speed',
netCount: 'Connection Count',
load: 'Load',
upload: 'upload',
download: 'download',
total: 'total',
day: ' day',
hour: ' hour',
minute: ' minute',
second: ' second'
},
trojan: {
restartSuccess: 'restart trojan success!',
startSuccess: 'start trojan success!',
stopSuccess: 'stop trojan success!',
updateSuccess: 'update trojan success!',
loglevelSuccess: 'set loglevel success!',
switchSuccess: 'switch trojan type success!'
},
user: {
upload: 'upload',
download: 'download',
total: 'total',
quota: 'quota',
expiryDate: 'expiryDate',
setExpire: 'setExpire',
editExpire: 'editExpire',
cancelExpire: 'cancelExpire',
reset: 'reset data',
unlimit: 'unlimited',
search: 'search username',
limitData: 'limit data',
modifyUser: 'modify user',
trojanShareLink: 'trojan share link',
clashShareLink: 'clash share link',
importClash: 'import to clash',
meanUnlimit: '-1 means unlimited',
inputUsername: 'username',
inputPassword: 'password',
operate: 'operate',
addUser: 'add trojan user',
patchLimitUser: 'patch limit user',
patchDelUser: 'patch delete user?',
modifyUser2: 'modify user ',
userpass: 'username and password',
delUser: 'delete user ',
patchReset: 'patch reset data?',
resetUser: 'reset user ',
data: ' data?',
limitUser: 'limit user ',
limitUser2: 'limit user ',
setupUser: 'setup user ',
limitSuccess: ' data success!',
delUser1: 'delete user ',
success: ' success!',
resetUser1: 'reset user ',
limitAdmin: "can't create username is admin",
passLimit: "password doesn't support chinese!",
addUser2: 'add user ',
week: 'a week',
month: 'a month',
season: 'one season',
halfYear: 'half a year',
year: 'one year',
preset: 'preset',
days: 'days',
setExpireSuccess: 'setup expire success!',
cancelExpireSuccess: 'cancel expire success!',
remaining: 'remaining days'
},
request: {
requestError: 'request error',
authFail: 'auth fail, please login again',
accessDenied: 'access denied',
notFound: '404 not found',
serverError: 'server error',
connectError: 'connect error'
}
}
+42
View File
@@ -0,0 +1,42 @@
import { createI18n } from 'vue-i18n'
import elementEnLocale from './element/en' // element-ui lang
import elementZhLocale from './element/zh-cn'// element-ui lang
import enLocale from './en'
import zhLocale from './zh'
const messages = {
en: {
...enLocale,
...elementEnLocale
},
zh: {
...zhLocale,
...elementZhLocale
}
}
export function getLanguage() {
const chooseLanguage = localStorage.getItem('language')
if (chooseLanguage) return chooseLanguage
// if has not choose language
const language = (navigator.language || navigator.browserLanguage).toLowerCase()
const locales = Object.keys(messages)
for (const locale of locales) {
if (language.indexOf(locale) > -1) {
return locale
}
}
return 'en'
}
const i18n = createI18n({
// set locale
// options: en | zh
locale: getLanguage(),
// set locale messages
messages: messages,
fallbackLocale: 'en',
silentFallbackWarn: true,
silentTranslationWarn: true
})
export default i18n
+147
View File
@@ -0,0 +1,147 @@
export default {
ok: '确定',
cancel: '取消',
reset: '重置',
login: '登录',
register: '注册',
log: '日志',
edit: '编辑',
share: '分享',
terminal: '终端',
refresh: '刷新',
restart: '重启',
start: '启动',
stop: '暂停',
update: '更新',
add: '添加',
username: '用户名',
password: '密码',
loglevel: '日志等级',
all: '所有',
type: '类型',
line: '初始行数',
choice: '请选择',
latest: '最新日志',
delete: '删除',
inputPass: '输入密码',
inputPassAgain: '请再次输入密码',
passLessError: '密码不能小于5位',
passDifferentError: '两次输入不一致!',
setupPass: '设置admin密码',
inputNotNull: '用户名或密码不能为空!',
route: {
dashboard: '首页',
trojan: 'trojan管理',
user: '用户管理'
},
navbar: {
version: '系统版本',
setting: '系统设置',
password: '修改密码',
title: '修改标题',
clashRules: '修改规则',
importExport: '导入导出',
resetDay: '改重置日',
resetTitle: '修改流量重置日',
changeTitle: '修改登录页标题',
changeRules: '修改clash规则',
inputTitle: '输入登录页标题',
changeTitleSuccess: '修改登录页标题成功!',
changeRulesSuccess: '修改clash规则成功!',
resetRulesSuccess: '重置clash规则成功!',
changeDaySuccess: '修改流量重置日成功!',
closeResetSuccess: '关闭流量重置成功',
versionTitle: 'trojan管理程序版本',
passwordTitle: '变更管理员密码',
resetSuccess: '重置密码成功!',
meanClose: '0代表关闭流量重置',
exportTip: '导出数据库里所有记录到csv文件',
importTip: '导入csv文件数据到数据库',
importSuccess: '导入成功',
importCsv: '导入csv文件',
exportCsv: '导出csv文件'
},
dashboard: {
memory: '内存',
disk: '硬盘',
trojanVersion: 'trojan 版本',
trojanUser: 'trojan 用户数',
trojanUptime: 'trojan 已运行',
netSpeed: '网速',
netCount: '连接数',
load: '服务器负载',
upload: '上传',
download: '下载',
total: '总共',
day: '天',
hour: '时',
minute: '分',
second: '秒'
},
trojan: {
restartSuccess: '重启trojan成功!',
startSuccess: '启动trojan成功!',
stopSuccess: '停止trojan成功!',
updateSuccess: '更新trojan成功!',
loglevelSuccess: '设置日志等级成功!',
switchSuccess: '切换trojan类型成功!'
},
user: {
upload: '上传流量',
download: '下载流量',
total: '总流量',
quota: '流量限制',
expiryDate: '到期日期',
setExpire: '设置限期',
editExpire: '修改限期',
cancelExpire: '取消限期',
reset: '重置流量',
unlimit: '无',
search: '输入用户名搜索',
limitData: '限制流量',
modifyUser: '修改账密',
trojanShareLink: 'trojan链接',
clashShareLink: 'clash链接',
importClash: '导到clash',
meanUnlimit: '-1代表无流量限制',
inputUsername: '输入用户名',
inputPassword: '输入密码',
operate: '操作',
addUser: '新增trojan用户',
patchLimitUser: '限制以下用户流量',
patchDelUser: '确定批量删除以下用户?',
modifyUser2: '修改用户 ',
userpass: '的用户名和密码',
delUser: '确定删除用户 ',
patchReset: '确定重置以下用户流量?',
resetUser: '确定重置用户 ',
data: ' 的流量?',
limitUser: '确定限制用户 ',
limitUser2: '限制用户 ',
limitSuccess: '流量成功!',
delUser1: '删除用户',
success: '成功!',
resetUser1: '重置用户',
limitAdmin: '不能创建用户名为admin的用户!',
passLimit: '密码不支持中文!',
addUser2: '新增用户',
week: '单周',
month: '单月',
season: '单季',
halfYear: '半年',
year: '一年',
preset: '预设',
days: '天数',
setExpireSuccess: '设置用户限期成功!',
cancelExpireSuccess: '取消用户限期成功!',
remaining: '剩余天数'
},
request: {
requestError: '请求出错',
authFail: '授权失败,请重新登录',
accessDenied: '拒绝访问',
notFound: '请求错误,未找到该资源',
serverError: '服务端错误',
connectError: '连接服务器失败'
}
}