替换Domain详情页的中文文本为英文

This commit is contained in:
jingrow 2026-01-10 00:03:18 +08:00
parent 2881c0529e
commit c5b06c8cf5
3 changed files with 233 additions and 150 deletions

View File

@ -6,7 +6,7 @@
<div class="flex gap-2">
<TextInput
v-model="searchQuery"
placeholder="搜索所有者姓名、单位名称..."
:placeholder="$t('Search owner name, company name...')"
class="flex-1"
>
<template #prefix>
@ -17,9 +17,9 @@
v-model="selectedStatus"
class="rounded-lg border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500"
>
<option value="">全部状态</option>
<option value="1">已实名认证</option>
<option value="0">未实名认证</option>
<option value="">{{ $t('All Status') }}</option>
<option value="1">{{ $t('Real-name Verified') }}</option>
<option value="0">{{ $t('Not Real-name Verified') }}</option>
</select>
</div>
</div>
@ -28,7 +28,7 @@
@click="createDomainOwner"
variant="solid"
iconLeft="plus"
label="新建所有者模板"
:label="$t('Create Owner Template')"
/>
</div>
</div>
@ -37,16 +37,16 @@
<div class="rounded-lg border border-gray-200 bg-white my-4">
<!-- 表头 -->
<div class="grid grid-cols-12 gap-4 border-b border-gray-200 bg-gray-50 px-6 py-3 text-sm font-medium text-gray-700">
<div class="col-span-4">所有者名称</div>
<div class="col-span-3">实名状态</div>
<div class="col-span-3">联系信息</div>
<div class="col-span-2">操作</div>
<div class="col-span-4">{{ $t('Owner Name') }}</div>
<div class="col-span-3">{{ $t('Real-name Status') }}</div>
<div class="col-span-3">{{ $t('Contact Information') }}</div>
<div class="col-span-2">{{ $t('Actions') }}</div>
</div>
<!-- 加载状态 -->
<div v-if="isLoading" class="flex items-center justify-center py-12">
<Loader2Icon class="h-6 w-6 animate-spin text-gray-400" />
<span class="ml-2 text-gray-600">加载中...</span>
<span class="ml-2 text-gray-600">{{ $t('Loading...') }}</span>
</div>
<!-- 错误状态 -->
@ -58,8 +58,8 @@
<!-- 空状态 -->
<div v-else-if="filteredOwners.length === 0" class="flex flex-col items-center justify-center py-12 text-gray-500">
<UsersIcon class="mb-4 h-12 w-12 text-gray-300" />
<p class="text-lg font-medium">暂无所有者模板</p>
<p class="text-sm">点击上方按钮创建第一个模板</p>
<p class="text-lg font-medium">{{ $t('No owner templates yet') }}</p>
<p class="text-sm">{{ $t('Click the button above to create your first template') }}</p>
</div>
<!-- 数据列表 -->
@ -93,7 +93,7 @@
variant="ghost"
size="sm"
class="text-blue-600 hover:text-blue-700"
title="查看详情"
:title="$t('View Details')"
>
<EyeIcon class="h-4 w-4" />
</Button>
@ -102,7 +102,7 @@
variant="ghost"
size="sm"
class="text-gray-600 hover:text-gray-700"
title="编辑"
:title="$t('Edit')"
>
<EditIcon class="h-4 w-4" />
</Button>
@ -116,7 +116,7 @@
? 'text-gray-400 cursor-not-allowed'
: 'text-red-600 hover:text-red-700'
]"
:title="isTemplateUsed(owner) ? '该模板已关联域名,无法删除' : '删除'"
:title="isTemplateUsed(owner) ? $t('This template is associated with domains and cannot be deleted') : $t('Delete')"
>
<Trash2Icon class="h-4 w-4" />
</Button>
@ -128,9 +128,9 @@
<!-- 分页 -->
<div v-if="pagination.total > pagination.limit" class="flex flex-col items-center space-y-4">
<div class="text-sm text-gray-700">
显示第 {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }}
{{ pagination.total }} 条记录
{{ $t('Showing') }} {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }} {{ $t('of') }}
{{ pagination.total }} {{ $t('records') }}
</div>
<div class="flex items-center space-x-2">
<Button
@ -185,7 +185,7 @@
<!-- 标题栏 -->
<div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0">
<div class="flex items-center justify-between">
<h3 class="text-lg font-medium text-gray-900">所有者详细信息</h3>
<h3 class="text-lg font-medium text-gray-900">{{ $t('Owner Details') }}</h3>
<button
@click="closeDetailDialog"
class="text-gray-400 hover:text-gray-600 transition-colors duration-200"
@ -202,22 +202,22 @@
<div class="space-y-6">
<!-- 基本信息 -->
<div>
<h4 class="text-base font-medium text-gray-900 mb-4">基本信息</h4>
<h4 class="text-base font-medium text-gray-900 mb-4">{{ $t('Basic Information') }}</h4>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700">所有者类型</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Owner Type') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ getOwnerTypeText(selectedOwner.c_regtype) }}</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700">实名认证状态</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Real-name Status') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ getRealNameStatusText(selectedOwner.r_status) }}</p>
</div>
<div v-if="selectedOwner.c_regtype === 'E'">
<label class="block text-sm font-medium text-gray-700">单位名称</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Company Name') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_org_m || '-' }}</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700">姓名</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Name') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ getDisplayName(selectedOwner) }}</p>
</div>
</div>
@ -225,26 +225,26 @@
<!-- 联系信息 -->
<div>
<h4 class="text-base font-medium text-gray-900 mb-4">联系信息</h4>
<h4 class="text-base font-medium text-gray-900 mb-4">{{ $t('Contact Information') }}</h4>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700">电子邮箱</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Email') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_em || '-' }}</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700">手机号码</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Phone Number') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_ph || '-' }}</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700">省份</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Province') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_st_m || '-' }}</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700">城市</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('City') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_ct_m || '-' }}</p>
</div>
<div class="col-span-2">
<label class="block text-sm font-medium text-gray-700">通讯地址</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('Address') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_adr_m || '-' }}</p>
</div>
</div>
@ -252,14 +252,14 @@
<!-- 证件信息 -->
<div>
<h4 class="text-base font-medium text-gray-900 mb-4">证件信息</h4>
<h4 class="text-base font-medium text-gray-900 mb-4">{{ $t('ID Information') }}</h4>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700">证件类型</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('ID Type') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ getCertificateTypeName(selectedOwner.c_idtype_gswl) }}</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700">证件号码</label>
<label class="block text-sm font-medium text-gray-700">{{ $t('ID Number') }}</label>
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_idnum_gswl || '-' }}</p>
</div>
</div>
@ -274,13 +274,13 @@
@click="closeDetailDialog"
variant="outline"
>
关闭
{{ $t('Close') }}
</Button>
<Button
@click="editOwner(selectedOwner)"
variant="solid"
>
编辑
{{ $t('Edit') }}
</Button>
</div>
</div>
@ -293,7 +293,7 @@
<!-- 标题栏 -->
<div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0">
<div class="flex items-center justify-between">
<h3 class="text-lg font-medium text-gray-900">编辑域名所有者</h3>
<h3 class="text-lg font-medium text-gray-900">{{ $t('Edit Domain Owner') }}</h3>
<button
@click="closeEditDialog"
class="text-gray-400 hover:text-gray-600 transition-colors duration-200"
@ -310,7 +310,7 @@
<form @submit.prevent="handleEditSubmit" class="space-y-6">
<!-- 所有者类型 -->
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">所有者类型</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Owner Type') }}</label>
<div class="flex gap-4">
<label class="flex items-center">
<input
@ -319,7 +319,7 @@
value="I"
class="mr-2"
>
<span class="text-sm">个人</span>
<span class="text-sm">{{ $t('Individual') }}</span>
</label>
<label class="flex items-center">
<input
@ -328,7 +328,7 @@
value="E"
class="mr-2"
>
<span class="text-sm">企业/组织</span>
<span class="text-sm">{{ $t('Enterprise/Organization') }}</span>
</label>
</div>
</div>
@ -337,33 +337,33 @@
<div class="space-y-4">
<!-- 单位名称企业时显示 -->
<div v-if="editFormData.c_regtype === 'E'" class="w-full">
<label class="block text-sm font-medium text-gray-700 mb-2">所有者单位名称</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Owner Company Name') }}</label>
<input
v-model="editFormData.c_org_m"
type="text"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入单位名称"
:placeholder="$t('Please enter company name')"
>
</div>
<!-- 姓名部分 -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2"></label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Last Name') }}</label>
<input
v-model="editFormData.c_ln_m"
type="text"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入姓"
:placeholder="$t('Please enter last name')"
>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2"></label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('First Name') }}</label>
<input
v-model="editFormData.c_fn_m"
type="text"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入名"
:placeholder="$t('Please enter first name')"
>
</div>
</div>
@ -371,21 +371,21 @@
<!-- 联系信息 -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">电子邮箱</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Email') }}</label>
<input
v-model="editFormData.c_em"
type="email"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入电子邮箱"
:placeholder="$t('Please enter email')"
>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">手机号码</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Phone Number') }}</label>
<input
v-model="editFormData.c_ph"
type="tel"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入手机号码"
:placeholder="$t('Please enter phone number')"
>
</div>
</div>
@ -393,41 +393,41 @@
<!-- 地址信息 -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">省份</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Province') }}</label>
<input
v-model="editFormData.c_st_m"
type="text"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入省份"
:placeholder="$t('Please enter province')"
>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">城市</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('City') }}</label>
<input
v-model="editFormData.c_ct_m"
type="text"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入城市"
:placeholder="$t('Please enter city')"
>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">邮编</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Postal Code') }}</label>
<input
v-model="editFormData.c_pc"
type="text"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入邮编"
:placeholder="$t('Please enter postal code')"
>
</div>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">通讯地址</label>
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Address') }}</label>
<input
v-model="editFormData.c_adr_m"
type="text"
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="请输入通讯地址"
:placeholder="$t('Please enter address')"
>
</div>
</div>
@ -441,14 +441,14 @@
@click="closeEditDialog"
variant="outline"
>
取消
{{ $t('Cancel') }}
</Button>
<Button
@click="handleEditSubmit"
:loading="editLoading"
variant="solid"
>
保存
{{ $t('Save') }}
</Button>
</div>
</div>
@ -559,29 +559,29 @@ export default {
//
getRealNameStatusText(status) {
if (!status || status === '') {
return '未实名认证';
return this.$t('Not Real-name Verified');
}
// r_status
// 0: , 1: , 2: , 3: , 4: , 5:
const statusMap = {
'0': '未实名认证',
'1': '已实名认证',
'2': '实名认证中',
'3': '实名认证失败',
'4': '实名认证过期',
'5': '待审核'
'0': this.$t('Not Real-name Verified'),
'1': this.$t('Real-name Verified'),
'2': this.$t('Real-name Verification in Progress'),
'3': this.$t('Real-name Verification Failed'),
'4': this.$t('Real-name Verification Expired'),
'5': this.$t('Pending Review')
};
return statusMap[status] || '未实名认证';
return statusMap[status] || this.$t('Not Real-name Verified');
},
//
getOwnerTypeText(type) {
if (!type || type === '') return '未知';
if (!type || type === '') return this.$t('Unknown');
const typeMap = {
'I': '个人',
'E': '企业/组织'
'I': this.$t('Individual'),
'E': this.$t('Enterprise/Organization')
};
return typeMap[type] || '未知';
return typeMap[type] || this.$t('Unknown');
},
//
@ -597,25 +597,25 @@ export default {
getCertificateTypeName(type) {
const typeMap = {
//
'SFZ': '身份证',
'HZ': '护照',
'GAJMTX': '港澳居民来往内地通行证',
'TWJMTX': '台湾居民来往大陆通行证',
'WJLSFZ': '外国人永久居留身份证',
'GAJZZ': '港澳台居民居住证',
'ORG': '组织机构代码证',
'YYZZ': '工商营业执照',
'TYDM': '统一社会信用代码',
'SFZ': this.$t('ID Card'),
'HZ': this.$t('Passport'),
'GAJMTX': this.$t('Mainland Travel Permit for Hong Kong and Macao Residents'),
'TWJMTX': this.$t('Mainland Travel Permit for Taiwan Residents'),
'WJLSFZ': this.$t('Permanent Residence ID Card for Foreigners'),
'GAJZZ': this.$t('Residence Permit for Hong Kong, Macao and Taiwan Residents'),
'ORG': this.$t('Organization Code Certificate'),
'YYZZ': this.$t('Business License'),
'TYDM': this.$t('Unified Social Credit Code'),
//
'1': '身份证',
'5': '护照',
'6': '港澳居民来往内地通行证',
'11': '台湾居民来往大陆通行证',
'12': '外国人永久居留身份证',
'30': '港澳台居民居住证',
'2': '组织机构代码证',
'3': '工商营业执照',
'4': '统一社会信用代码'
'1': this.$t('ID Card'),
'5': this.$t('Passport'),
'6': this.$t('Mainland Travel Permit for Hong Kong and Macao Residents'),
'11': this.$t('Mainland Travel Permit for Taiwan Residents'),
'12': this.$t('Permanent Residence ID Card for Foreigners'),
'30': this.$t('Residence Permit for Hong Kong, Macao and Taiwan Residents'),
'2': this.$t('Organization Code Certificate'),
'3': this.$t('Business License'),
'4': this.$t('Unified Social Credit Code')
};
return typeMap[type] || type || '-';
},

View File

@ -6,32 +6,32 @@
</div>
<div class="flex gap-2">
<Button
@click="refreshRecords"
:loading="$resources.dnsRecords.loading"
variant="outline"
size="sm"
>
<RefreshCwIcon class="h-4 w-4 mr-1" />
刷新
</Button>
@click="refreshRecords"
:loading="$resources.dnsRecords.loading"
variant="outline"
size="sm"
>
<RefreshCwIcon class="h-4 w-4 mr-1" />
{{ $t('Refresh') }}
</Button>
<Button
v-if="selectedRecords.length > 0"
@click="batchDeleteRecords"
variant="outline"
size="sm"
class="text-red-600 hover:text-red-700"
>
<Trash2Icon class="h-4 w-4 mr-1" />
删除选中 ({{ selectedRecords.length }})
</Button>
v-if="selectedRecords.length > 0"
@click="batchDeleteRecords"
variant="outline"
size="sm"
class="text-red-600 hover:text-red-700"
>
<Trash2Icon class="h-4 w-4 mr-1" />
{{ $t('Delete Selected') }} ({{ selectedRecords.length }})
</Button>
<Button
@click="addNewRow"
variant="solid"
size="sm"
>
<PlusIcon class="h-4 w-4 mr-1" />
添加记录
</Button>
@click="addNewRow"
variant="solid"
size="sm"
>
<PlusIcon class="h-4 w-4 mr-1" />
{{ $t('Add Record') }}
</Button>
</div>
</div>
@ -39,7 +39,7 @@
<div v-if="$resources.dnsRecords.loading" class="flex items-center justify-center py-12">
<div class="flex items-center space-x-2">
<Loader2Icon class="h-5 w-5 animate-spin text-gray-500" />
<span class="text-gray-500">正在加载DNS记录...</span>
<span class="text-gray-500">{{ $t('Loading DNS records...') }}</span>
</div>
</div>
@ -48,7 +48,7 @@
<div class="flex items-center">
<AlertCircleIcon class="h-5 w-5 text-red-400 mr-2" />
<div>
<h3 class="text-sm font-medium text-red-800">加载失败</h3>
<h3 class="text-sm font-medium text-red-800">{{ $t('Load failed') }}</h3>
<p class="text-sm text-red-700 mt-1">{{ $resources.dnsRecords.error }}</p>
</div>
</div>
@ -70,31 +70,31 @@
/>
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
编号
{{ $t('Number') }}
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
主机名 *
{{ $t('Hostname') }} *
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
类型 *
{{ $t('Type') }} *
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
线路
{{ $t('Line') }}
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
对应值 *
{{ $t('Value') }} *
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
TTL
{{ $t('TTL') }}
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
优先级
{{ $t('Priority') }}
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
状态
{{ $t('Status') }}
</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
操作
{{ $t('Actions') }}
</th>
</tr>
</thead>
@ -121,7 +121,7 @@
type="text"
class="w-24 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
:class="{ 'bg-gray-100 text-gray-500 cursor-not-allowed': !record.isNew }"
placeholder="主机名"
:placeholder="$t('Hostname')"
:disabled="!record.isNew"
/>
</div>
@ -160,7 +160,7 @@
'bg-orange-100 text-orange-800': record.type === 'SRV',
'bg-gray-100 text-gray-800': !record.type
}">
{{ record.type || '未知' }}
{{ record.type || $t('Unknown') }}
</span>
</div>
</td>
@ -171,12 +171,12 @@
v-model="record.line"
class="w-20 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
>
<option value="">默认</option>
<option value="LTEL">电信</option>
<option value="LCNC">联通</option>
<option value="LMOB">移动</option>
<option value="LEDU">教育网</option>
<option value="LSEO">搜索引擎</option>
<option value="">{{ $t('Default') }}</option>
<option value="LTEL">{{ $t('Telecom') }}</option>
<option value="LCNC">{{ $t('Unicom') }}</option>
<option value="LMOB">{{ $t('Mobile') }}</option>
<option value="LEDU">{{ $t('Education Network') }}</option>
<option value="LSEO">{{ $t('Search Engine') }}</option>
</select>
</div>
<div v-else class="text-sm text-gray-500">
@ -190,7 +190,7 @@
v-model="record.value"
type="text"
class="w-32 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="记录值"
:placeholder="$t('Record Value')"
/>
</div>
<div v-else class="text-sm text-gray-900 max-w-xs truncate" :title="record.value">
@ -229,7 +229,7 @@
</td>
<td class="px-4 py-4 whitespace-nowrap text-sm">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">
正常
{{ $t('Normal') }}
</span>
</td>
<td class="px-4 py-4 whitespace-nowrap text-sm">
@ -241,7 +241,7 @@
size="sm"
class="text-blue-600 hover:text-blue-700"
>
编辑
{{ $t('Edit') }}
</Button>
<Button
v-if="record.editing"
@ -250,7 +250,7 @@
size="sm"
class="text-green-600 hover:text-green-700"
>
保存
{{ $t('Save') }}
</Button>
<Button
v-if="record.editing"
@ -259,7 +259,7 @@
size="sm"
class="text-gray-600 hover:text-gray-700"
>
取消
{{ $t('Cancel') }}
</Button>
<Button
v-if="!record.editing && !record.isNew"
@ -268,7 +268,7 @@
size="sm"
class="text-red-600 hover:text-red-700"
>
删除
{{ $t('Delete') }}
</Button>
</div>
</td>
@ -280,9 +280,9 @@
<!-- 分页 -->
<div v-if="pagination.total > pagination.limit" class="flex flex-col items-center space-y-4">
<div class="text-sm text-gray-700">
显示第 {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }}
{{ pagination.total }} 条记录
{{ $t('Showing') }} {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }} {{ $t('of') }}
{{ pagination.total }} {{ $t('records') }}
</div>
<div class="flex items-center space-x-2">
<Button
@ -326,12 +326,12 @@
<!-- 空状态 -->
<div v-else-if="!$resources.dnsRecords.loading && !$resources.dnsRecords.error && dnsRecords.length === 0" class="text-center py-12">
<GlobeIcon class="mx-auto h-12 w-12 text-gray-400" />
<h3 class="mt-2 text-sm font-medium text-gray-900">暂无DNS记录</h3>
<p class="mt-1 text-sm text-gray-500">开始添加您的第一个DNS解析记录</p>
<h3 class="mt-2 text-sm font-medium text-gray-900">{{ $t('No DNS records yet') }}</h3>
<p class="mt-1 text-sm text-gray-500">{{ $t('Start adding your first DNS record') }}</p>
<div class="mt-6">
<Button @click="addNewRow" variant="solid">
<PlusIcon class="h-4 w-4 mr-1" />
添加记录
{{ $t('Add Record') }}
</Button>
</div>
</div>
@ -450,12 +450,12 @@ export default {
// 线
getLineDisplayName(line) {
const lineMap = {
'LTEL': '电信',
'LCNC': '联通',
'LMOB': '移动',
'LEDU': '教育网',
'LSEO': '搜索引擎',
'': '默认'
'LTEL': this.$t('Telecom'),
'LCNC': this.$t('Unicom'),
'LMOB': this.$t('Mobile'),
'LEDU': this.$t('Education Network'),
'LSEO': this.$t('Search Engine'),
'': this.$t('Default')
};
return lineMap[line] || line;
},

View File

@ -302,7 +302,90 @@ Signature,签名,
Sites,网站,
Search,搜索,
Search Sites,搜索站点,
Search owner name, company name...,搜索所有者姓名、单位名称...,搜索所有者姓名、单位名称...,
Site Update,站点更新,
Refresh,刷新,
Delete Selected,删除选中,
Add Record,添加记录,
Loading DNS records...,正在加载DNS记录...,
Load failed,加载失败,
Number,编号,
Hostname,主机名,
Type,类型,
Line,线路,
Value,对应值,
TTL,TTL,
Priority,优先级,
Status,状态,
Actions,操作,
Unknown,未知,
Record Value,记录值,
Normal,正常,
Edit,编辑,
Save,保存,
Cancel,取消,
Delete,删除,
Showing,显示,
of,,
records,条记录,
No DNS records yet,暂无DNS记录,
Start adding your first DNS record,开始添加您的第一个DNS解析记录,
Telecom,电信,
Unicom,联通,
Mobile,移动,
Education Network,教育网,
Search Engine,搜索引擎,
Default,默认,
All Status,全部状态,
Real-name Verified,已实名认证,
Not Real-name Verified,未实名认证,
Create Owner Template,新建所有者模板,
Owner Name,所有者名称,
Real-name Status,实名状态,
Contact Information,联系信息,
View Details,查看详情,
This template is associated with domains and cannot be deleted,该模板已关联域名,无法删除,
Owner Details,所有者详细信息,
Basic Information,基本信息,
Owner Type,所有者类型,
Company Name,单位名称,
Email,电子邮箱,
Phone Number,手机号码,
Province,省份,
City,城市,
ID Information,证件信息,
ID Type,证件类型,
ID Number,证件号码,
Close,关闭,
Edit Domain Owner,编辑域名所有者,
Individual,个人,
Enterprise/Organization,企业/组织,
Owner Company Name,所有者单位名称,
Please enter company name,请输入单位名称,
Last Name,,
First Name,,
Please enter last name,请输入姓,
Please enter first name,请输入名,
Please enter email,请输入电子邮箱,
Please enter phone number,请输入手机号码,
Please enter province,请输入省份,
Please enter city,请输入城市,
Postal Code,邮编,
Please enter postal code,请输入邮编,
Please enter address,请输入通讯地址,
Real-name Verification in Progress,实名认证中,
Real-name Verification Failed,实名认证失败,
Real-name Verification Expired,实名认证过期,
Pending Review,待审核,
ID Card,身份证,
Passport,护照,
Mainland Travel Permit for Hong Kong and Macao Residents,港澳居民来往内地通行证,
Mainland Travel Permit for Taiwan Residents,台湾居民来往大陆通行证,
Permanent Residence ID Card for Foreigners,外国人永久居留身份证,
Residence Permit for Hong Kong, Macao and Taiwan Residents,港澳台居民居住证,
Organization Code Certificate,组织机构代码证,
Business License,工商营业执照,
Unified Social Credit Code,统一社会信用代码,
Site update started,站点更新已启动,
Size,尺寸,
Servers,服务器,

Can't render this file because it has a wrong number of fields in line 305.