国际化优化

This commit is contained in:
2026-01-16 20:48:14 +08:00
parent a7ea68c6b5
commit 68306ea289
6 changed files with 128 additions and 70 deletions

View File

@@ -494,7 +494,6 @@ export default {
hostsCountryinfo: 'Host Country', hostsCountryinfo: 'Host Country',
placeHostsCountry: 'Please select host country', placeHostsCountry: 'Please select host country',
hostsKind: 'Host Type', hostsKind: 'Host Type',
placeHostsKind: 'Please enter live type, e.g., game',
isAssigned: 'Assigned', isAssigned: 'Assigned',
aiOperation: 'Ai Operation', aiOperation: 'Ai Operation',
sortType: 'Sort Type', sortType: 'Sort Type',
@@ -520,7 +519,20 @@ export default {
edit: 'Edit', edit: 'Edit',
delete: 'Del', delete: 'Del',
cancel: 'Cancel', cancel: 'Cancel',
confirm: 'Confirm' confirm: 'Confirm',
batchDelete: 'Batch Delete',
copy: 'Copy',
placeHostsId: 'Please enter host ID',
placeHostsLevel: 'Please enter host level',
placeHostsCoins: 'Please enter host coins',
placeOnlineFans: 'Please enter online viewers',
placeFans: 'Please enter followers',
placeFllowernum: 'Please enter following',
placeYesterdayCoins: 'Please enter yesterday coins',
placeCountry: 'Please enter host country',
placeHostsKind: 'Please enter stream type, e.g., Game',
placeUserId: 'Please enter user Id',
userId: 'User Id'
}, },
employee: { employee: {
hostsId: 'Host ID', hostsId: 'Host ID',
@@ -641,7 +653,24 @@ export default {
batchCopyHostId: 'Batch Copy Host ID', batchCopyHostId: 'Batch Copy Host ID',
deletePage: 'Delete Page', deletePage: 'Delete Page',
placeNegotiation: 'Please select negotiation status', placeNegotiation: 'Please select negotiation status',
allocationAlert: 'The number of successful allocations may be less than selected. Hosts with the same ID cannot be allocated repeatedly.' allocationAlert: 'The number of successful allocations may be less than selected. Hosts with the same ID cannot be allocated repeatedly.',
exportDeleteConfirmMessage: 'Delete the exported data after export?',
exportDeleteConfirmTitle: 'Delete Confirmation',
exportDeleteAndExport: 'Delete and Export',
exportOnlyExport: 'Export Only',
placeDisplayId: 'Please enter big brother display_id',
placeUid: 'Please enter big brother user id',
placeNickname: 'Please enter big brother nickname',
placeLevel: 'Please enter big brother level',
placeHostCoins: 'Please enter coins tipped',
placeFollowerCount: 'Please enter follower count',
placeFollowingCount: 'Please enter following count',
placeRegion: 'Please enter region',
placeHistoricHighCoins: 'Please enter historic high coins',
placeTotalGiftCoins: 'Please enter total gift coins',
placeHostDisplayId: 'Please enter host display_id',
placeOwnerId: 'Please enter owner id',
displayIdRequired: 'Display ID is required'
}, },
system: { system: {
user: { user: {

View File

@@ -494,7 +494,6 @@ export default {
hostsCountryinfo: '主播国家', hostsCountryinfo: '主播国家',
placeHostsCountry: '请选择主播国家', placeHostsCountry: '请选择主播国家',
hostsKind: '主播类型', hostsKind: '主播类型',
placeHostsKind: '请输入直播类型 如:游戏 ',
isAssigned: '是否分配', isAssigned: '是否分配',
aiOperation: '是否AI介入', aiOperation: '是否AI介入',
sortType: '排序类型', sortType: '排序类型',
@@ -520,7 +519,20 @@ export default {
edit: '编辑', edit: '编辑',
delete: '删除', delete: '删除',
cancel: '取消', cancel: '取消',
confirm: '确定' confirm: '确定',
batchDelete: '批量删除',
copy: '复制',
placeHostsId: '请输入主播id',
placeHostsLevel: '请输入主播等级',
placeHostsCoins: '请输入主播金币',
placeOnlineFans: '请输入在线人数',
placeFans: '请输入粉丝数量',
placeFllowernum: '请输入关注数量',
placeYesterdayCoins: '请输入昨日金币',
placeCountry: '请输入主播国家',
placeHostsKind: '请输入直播类型 娱乐,游戏',
placeUserId: '请输入用户 Id',
userId: '用户 Id'
}, },
employee: { employee: {
hostsId: '主播id', hostsId: '主播id',
@@ -642,7 +654,24 @@ export default {
batchCopyHostId: '批量复制主播id', batchCopyHostId: '批量复制主播id',
deletePage: '删除本页', deletePage: '删除本页',
placeNegotiation: '请选择是否洽谈', placeNegotiation: '请选择是否洽谈',
allocationAlert: '分配成功数量可能会小于选择数量同id主播无法被重复分配' allocationAlert: '分配成功数量可能会小于选择数量同id主播无法被重复分配',
exportDeleteConfirmMessage: '导出后是否删除导出的数据?',
exportDeleteConfirmTitle: '删除确认',
exportDeleteAndExport: '删除并导出',
exportOnlyExport: '仅导出',
placeDisplayId: '请输入大哥的display_id',
placeUid: '请输入大哥的用户id',
placeNickname: '请输入大哥的用户昵称',
placeLevel: '请输入大哥的等级',
placeHostCoins: '请输入大哥打赏的金币',
placeFollowerCount: '请输入大哥的粉丝数',
placeFollowingCount: '请输入大哥的关注数',
placeRegion: '请输入大哥所在的地区',
placeHistoricHighCoins: '请输入大哥打赏的历史最高金币',
placeTotalGiftCoins: '请输入大哥历史打赏金币总和',
placeHostDisplayId: '请输入大哥所在的直播间的主播display_id',
placeOwnerId: '请输入该数据所属的账号id',
displayIdRequired: '大哥的display_id不能为空'
}, },
system: { system: {
user: { user: {

View File

@@ -1,46 +1,46 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="dialogVisible"> <Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading"> <el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
<el-form-item label="大哥的display_id" prop="displayId"> <el-form-item :label="t('bigBrother.displayId')" prop="displayId">
<el-input v-model="formData.displayId" placeholder="请输入大哥的display_id" /> <el-input v-model="formData.displayId" :placeholder="t('bigBrother.placeDisplayId')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥的用户id" prop="userIdStr"> <el-form-item :label="t('bigBrother.uid')" prop="userIdStr">
<el-input v-model="formData.userIdStr" placeholder="请输入大哥的用户id" /> <el-input v-model="formData.userIdStr" :placeholder="t('bigBrother.placeUid')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥的用户昵称" prop="nickname"> <el-form-item :label="t('bigBrother.nickname')" prop="nickname">
<el-input v-model="formData.nickname" placeholder="请输入大哥的用户昵称" /> <el-input v-model="formData.nickname" :placeholder="t('bigBrother.placeNickname')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥的等级" prop="level"> <el-form-item :label="t('bigBrother.level')" prop="level">
<el-input v-model="formData.level" placeholder="请输入大哥的等级" /> <el-input v-model="formData.level" :placeholder="t('bigBrother.placeLevel')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥打赏的金币" prop="hostcoins"> <el-form-item :label="t('bigBrother.hostCoins')" prop="hostcoins">
<el-input v-model="formData.hostcoins" placeholder="请输入大哥打赏的金币" /> <el-input v-model="formData.hostcoins" :placeholder="t('bigBrother.placeHostCoins')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥的粉丝数" prop="followerCount"> <el-form-item :label="t('bigBrother.followerCount')" prop="followerCount">
<el-input v-model="formData.followerCount" placeholder="请输入大哥的粉丝数" /> <el-input v-model="formData.followerCount" :placeholder="t('bigBrother.placeFollowerCount')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥的关注数" prop="followingCount"> <el-form-item :label="t('bigBrother.followingCount')" prop="followingCount">
<el-input v-model="formData.followingCount" placeholder="请输入大哥的关注数" /> <el-input v-model="formData.followingCount" :placeholder="t('bigBrother.placeFollowingCount')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥所在的地区" prop="region"> <el-form-item :label="t('bigBrother.region')" prop="region">
<el-input v-model="formData.region" placeholder="请输入大哥所在的地区" /> <el-input v-model="formData.region" :placeholder="t('bigBrother.placeRegion')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥打赏的历史最高金币" prop="historicHighCoins"> <el-form-item :label="t('bigBrother.historicHighCoins')" prop="historicHighCoins">
<el-input v-model="formData.historicHighCoins" placeholder="请输入大哥打赏的历史最高金币" /> <el-input v-model="formData.historicHighCoins" :placeholder="t('bigBrother.placeHistoricHighCoins')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥历史打赏金币总和" prop="totalGiftCoins"> <el-form-item :label="t('bigBrother.totalGiftCoins')" prop="totalGiftCoins">
<el-input v-model="formData.totalGiftCoins" placeholder="请输入大哥历史打赏金币总和" /> <el-input v-model="formData.totalGiftCoins" :placeholder="t('bigBrother.placeTotalGiftCoins')" />
</el-form-item> </el-form-item>
<el-form-item label="大哥所在的直播间的主播display_id" prop="hostDisplayId"> <el-form-item :label="t('bigBrother.hostDisplayId')" prop="hostDisplayId">
<el-input v-model="formData.hostDisplayId" placeholder="请输入大哥所在的直播间的主播display_id" /> <el-input v-model="formData.hostDisplayId" :placeholder="t('bigBrother.placeHostDisplayId')" />
</el-form-item> </el-form-item>
<el-form-item label="该数据所属的账号id" prop="ownerId"> <el-form-item :label="t('bigBrother.ownerId')" prop="ownerId">
<el-input v-model="formData.ownerId" placeholder="请输入该数据所属的账号id" /> <el-input v-model="formData.ownerId" :placeholder="t('bigBrother.placeOwnerId')" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> <el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('common.ok') }}</el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
</template> </template>
</Dialog> </Dialog>
</template> </template>
@@ -73,7 +73,7 @@ const formData = ref({
ownerId: undefined ownerId: undefined
}) })
const formRules = reactive({ const formRules = reactive({
displayId: [{ required: true, message: '大哥的display_id不能为空', trigger: 'blur' }] displayId: [{ required: true, message: t('bigBrother.displayIdRequired'), trigger: 'blur' }]
}) })
const formRef = ref() // 表单 Ref const formRef = ref() // 表单 Ref

View File

@@ -357,12 +357,12 @@ const handleExport = async () => {
// 先确认是否删除导出的数据 // 先确认是否删除导出的数据
await ElMessageBox.confirm( await ElMessageBox.confirm(
'导出后是否删除导出的数据?', t('bigBrother.exportDeleteConfirmMessage'),
'删除确认', t('bigBrother.exportDeleteConfirmTitle'),
{ {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: '删除并导出', confirmButtonText: t('bigBrother.exportDeleteAndExport'),
cancelButtonText: '仅导出', cancelButtonText: t('bigBrother.exportOnlyExport'),
type: 'warning', type: 'warning',
} }
).then(async () => { ).then(async () => {

View File

@@ -1,53 +1,53 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="dialogVisible"> <Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading"> <el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
<el-form-item label="主播id" prop="hostsId"> <el-form-item :label="t('newHosts.hostsId')" prop="hostsId">
<el-input v-model="formData.hostsId" placeholder="请输入主播id" /> <el-input v-model="formData.hostsId" :placeholder="t('newHosts.placeHostsId')" />
</el-form-item> </el-form-item>
<el-form-item label="主播等级" prop="hostsLevel"> <el-form-item :label="t('newHosts.hostsLevel')" prop="hostsLevel">
<el-input v-model="formData.hostsLevel" placeholder="请输入主播等级" /> <el-input v-model="formData.hostsLevel" :placeholder="t('newHosts.placeHostsLevel')" />
</el-form-item> </el-form-item>
<el-form-item label="主播金币" prop="hostsCoins"> <el-form-item :label="t('newHosts.hostsCoins')" prop="hostsCoins">
<el-input v-model="formData.hostsCoins" placeholder="请输入主播金币" /> <el-input v-model="formData.hostsCoins" :placeholder="t('newHosts.placeHostsCoins')" />
</el-form-item> </el-form-item>
<el-form-item label="邀请类型" prop="invitationType"> <el-form-item :label="t('newHosts.invitationType')" prop="invitationType">
<el-select v-model="formData.invitationType" placeholder="请选择邀请类型"> <el-select v-model="formData.invitationType" :placeholder="t('newHosts.placeInvitationType')">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HOSTS_INVITATION_TYPE)" :key="dict.value" <el-option v-for="dict in getIntDictOptions(DICT_TYPE.HOSTS_INVITATION_TYPE)" :key="dict.value"
:label="$t(dict.label)" :value="dict.value" /> :label="$t(dict.label)" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="在线人数" prop="onlineFans"> <el-form-item :label="t('newHosts.onlineFans')" prop="onlineFans">
<el-input v-model="formData.onlineFans" placeholder="请输入在线人数" /> <el-input v-model="formData.onlineFans" :placeholder="t('newHosts.placeOnlineFans')" />
</el-form-item> </el-form-item>
<el-form-item label="粉丝数量" prop="fans"> <el-form-item :label="t('newHosts.fans')" prop="fans">
<el-input v-model="formData.fans" placeholder="请输入粉丝数量" /> <el-input v-model="formData.fans" :placeholder="t('newHosts.placeFans')" />
</el-form-item> </el-form-item>
<el-form-item label="关注数量" prop="fllowernum"> <el-form-item :label="t('newHosts.fllowernum')" prop="fllowernum">
<el-input v-model="formData.fllowernum" placeholder="请输入关注数量" /> <el-input v-model="formData.fllowernum" :placeholder="t('newHosts.placeFllowernum')" />
</el-form-item> </el-form-item>
<el-form-item label="昨日金币" prop="yesterdayCoins"> <el-form-item :label="t('newHosts.yesterdayCoins')" prop="yesterdayCoins">
<el-input v-model="formData.yesterdayCoins" placeholder="请输入昨日金币" /> <el-input v-model="formData.yesterdayCoins" :placeholder="t('newHosts.placeYesterdayCoins')" />
</el-form-item> </el-form-item>
<el-form-item label="主播国家" prop="country"> <el-form-item :label="t('newHosts.hostsCountryinfo')" prop="country">
<el-input v-model="formData.country" placeholder="请输入主播国家" /> <el-input v-model="formData.country" :placeholder="t('newHosts.placeCountry')" />
</el-form-item> </el-form-item>
<el-form-item label="直播类型 " prop="hostsKind"> <el-form-item :label="t('newHosts.hostsKind')" prop="hostsKind">
<el-input v-model="formData.hostsKind" placeholder="请输入直播类型 娱乐,游戏 " /> <el-input v-model="formData.hostsKind" :placeholder="t('newHosts.placeHostsKind')" />
</el-form-item> </el-form-item>
<el-form-item label="分配情况" prop="isAssigned"> <el-form-item :label="t('newHosts.isAssigned')" prop="isAssigned">
<el-select v-model="formData.isAssigned" placeholder="请选择是否已经分配给员工"> <el-select v-model="formData.isAssigned" :placeholder="t('newHosts.placeIsAssigned')">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.INT_TRUE_FLASE)" :key="dict.value" :label="dict.label" <el-option v-for="dict in getIntDictOptions(DICT_TYPE.INT_TRUE_FLASE)" :key="dict.value" :label="dict.label"
:value="dict.value" /> :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="用户 Id" prop="userId"> <el-form-item :label="t('newHosts.userId')" prop="userId">
<el-input v-model="formData.userId" placeholder="请输入用户 Id" /> <el-input v-model="formData.userId" :placeholder="t('newHosts.placeUserId')" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button> <el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('common.ok') }}</el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
</template> </template>
</Dialog> </Dialog>
</template> </template>

View File

@@ -183,7 +183,7 @@
</el-button> </el-button>
<el-button type="danger" plain :disabled="checkedIds.length === 0" @click="handleDeleteBatch" <el-button type="danger" plain :disabled="checkedIds.length === 0" @click="handleDeleteBatch"
v-hasPermi="['server:new-hosts:delete']"> v-hasPermi="['server:new-hosts:delete']">
<Icon icon="ep:delete" class="mr-5px" /> 批量删除 <Icon icon="ep:delete" class="mr-5px" /> {{ t('newHosts.batchDelete') }}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -196,7 +196,7 @@
<el-table-column :label="t('newHosts.hostsId')" align="center" prop="hostsId" /> <el-table-column :label="t('newHosts.hostsId')" align="center" prop="hostsId" />
<el-table-column align="center" prop="hostsId" width="75"> <el-table-column align="center" prop="hostsId" width="75">
<template #default="scope"> <template #default="scope">
<el-link type="primary" @click="handleCopy(scope.row.hostsId)">复制</el-link> <el-link type="primary" @click="handleCopy(scope.row.hostsId)">{{ t('newHosts.copy') }}</el-link>
</template> </template>
</el-table-column> </el-table-column>
@@ -231,7 +231,7 @@
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="AI介入" align="center" prop="aiOperation"> <el-table-column :label="t('newHosts.aiOperation')" align="center" prop="aiOperation">
<template #default="scope"> <template #default="scope">
<el-tag size="small" :type="scope.row.aiOperation == 1 ? 'success' : 'info'"> <el-tag size="small" :type="scope.row.aiOperation == 1 ? 'success' : 'info'">
{{ dictLabelI18n(DICT_TYPE.INT_TRUE_FLASE, scope.row.aiOperation) || '-' }} {{ dictLabelI18n(DICT_TYPE.INT_TRUE_FLASE, scope.row.aiOperation) || '-' }}
@@ -503,12 +503,12 @@ const handleExport = async () => {
try { try {
// 先确认是否删除导出的数据 // 先确认是否删除导出的数据
await ElMessageBox.confirm( await ElMessageBox.confirm(
'导出后是否删除导出的数据?', t('bigBrother.exportDeleteConfirmMessage'),
'删除确认', t('bigBrother.exportDeleteConfirmTitle'),
{ {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: '删除并导出', confirmButtonText: t('bigBrother.exportDeleteAndExport'),
cancelButtonText: '仅导出', cancelButtonText: t('bigBrother.exportOnlyExport'),
type: 'warning', type: 'warning',
} }
).then(async () => { ).then(async () => {