update:上下文源功能的国际化

This commit is contained in:
3030332422
2025-12-10 10:26:27 +08:00
parent 401deff2c3
commit bfa04743e2
7 changed files with 115 additions and 15 deletions
@@ -2,14 +2,14 @@
<el-dialog <el-dialog
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="900px" width="900px"
title="编辑源" :title="$t('contextProviderDialog.title')"
:close-on-click-modal="false" :close-on-click-modal="false"
custom-class="context-provider-dialog" custom-class="context-provider-dialog"
append-to-body append-to-body
> >
<div class="dialog-content"> <div class="dialog-content">
<el-empty v-if="localProviders.length === 0" description="暂无上下文API"> <el-empty v-if="localProviders.length === 0" :description="$t('contextProviderDialog.noContextApi')">
<el-button type="primary" icon="el-icon-plus" @click="addProvider(0)">添加</el-button> <el-button type="primary" icon="el-icon-plus" @click="addProvider(0)">{{ $t('contextProviderDialog.add') }}</el-button>
</el-empty> </el-empty>
<div <div
@@ -20,10 +20,10 @@
<el-card class="provider-card" shadow="hover" :body-style="{ padding: '15px 20px' }"> <el-card class="provider-card" shadow="hover" :body-style="{ padding: '15px 20px' }">
<!-- URL Row --> <!-- URL Row -->
<div class="input-row"> <div class="input-row">
<span class="label-text">接口地址</span> <span class="label-text">{{ $t('contextProviderDialog.apiUrl') }}</span>
<el-input <el-input
v-model="provider.url" v-model="provider.url"
placeholder="http://api.example.com/data" :placeholder="$t('contextProviderDialog.apiUrlPlaceholder')"
size="small" size="small"
class="flex-1" class="flex-1"
></el-input> ></el-input>
@@ -31,7 +31,7 @@
<!-- Headers Section --> <!-- Headers Section -->
<div class="headers-section"> <div class="headers-section">
<div class="label-text" style="margin-top: 6px;">请求头</div> <div class="label-text" style="margin-top: 6px;">{{ $t('contextProviderDialog.requestHeaders') }}</div>
<div class="headers-list"> <div class="headers-list">
<div <div
v-for="(header, hIndex) in provider.headers" v-for="(header, hIndex) in provider.headers"
@@ -40,14 +40,14 @@
> >
<el-input <el-input
v-model="header.key" v-model="header.key"
placeholder="Key" :placeholder="$t('contextProviderDialog.headerKeyPlaceholder')"
size="small" size="small"
style="width: 180px;" style="width: 180px;"
></el-input> ></el-input>
<span class="separator">:</span> <span class="separator">:</span>
<el-input <el-input
v-model="header.value" v-model="header.value"
placeholder="Value" :placeholder="$t('contextProviderDialog.headerValuePlaceholder')"
size="small" size="small"
class="flex-1" class="flex-1"
></el-input> ></el-input>
@@ -73,13 +73,13 @@
</div> </div>
<!-- Empty Headers State --> <!-- Empty Headers State -->
<div v-if="provider.headers.length === 0" class="header-row empty-header"> <div v-if="provider.headers.length === 0" class="header-row empty-header">
<span class="no-header-text">暂无 Headers</span> <span class="no-header-text">{{ $t('contextProviderDialog.noHeaders') }}</span>
<el-button <el-button
type="text" type="text"
icon="el-icon-plus" icon="el-icon-plus"
size="mini" size="mini"
@click="addHeader(pIndex, 0)" @click="addHeader(pIndex, 0)"
>添加 Header</el-button> >{{ $t('contextProviderDialog.addHeader') }}</el-button>
</div> </div>
</div> </div>
</div> </div>
@@ -106,8 +106,8 @@
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">{{ $t('contextProviderDialog.cancel') }}</el-button>
<el-button type="primary" @click="handleConfirm">确定</el-button> <el-button type="primary" @click="handleConfirm">{{ $t('contextProviderDialog.confirm') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
+20
View File
@@ -230,6 +230,26 @@ export default {
'voicePrintDialog.requiredName': 'Bitte Namen eingeben', 'voicePrintDialog.requiredName': 'Bitte Namen eingeben',
'voicePrintDialog.requiredAudioVector': 'Bitte Audio-Vektor auswählen', 'voicePrintDialog.requiredAudioVector': 'Bitte Audio-Vektor auswählen',
// Context provider dialog related
'contextProviderDialog.title': 'Quelle bearbeiten',
'contextProviderDialog.noContextApi': 'Keine Kontext-API',
'contextProviderDialog.add': 'Hinzufügen',
'contextProviderDialog.apiUrl': 'API-URL',
'contextProviderDialog.apiUrlPlaceholder': 'http://api.example.com/data',
'contextProviderDialog.requestHeaders': 'Anfrage-Header',
'contextProviderDialog.headerKeyPlaceholder': 'Schlüssel',
'contextProviderDialog.headerValuePlaceholder': 'Wert',
'contextProviderDialog.noHeaders': 'Keine Headers',
'contextProviderDialog.addHeader': 'Header hinzufügen',
'contextProviderDialog.cancel': 'Abbrechen',
'contextProviderDialog.confirm': 'Bestätigen',
// Role config page - context provider related
'roleConfig.contextProvider': 'Kontext',
'roleConfig.contextProviderSuccess': '{count} Quellen erfolgreich hinzugefügt.',
'roleConfig.contextProviderDocLink': 'Wie man Kontextquellen bereitstellt',
'roleConfig.editContextProvider': 'Quelle bearbeiten',
// Voice print page related // Voice print page related
'voicePrint.pageTitle': 'Stimmabdruck-Erkennung', 'voicePrint.pageTitle': 'Stimmabdruck-Erkennung',
'voicePrint.name': 'Name', 'voicePrint.name': 'Name',
+20
View File
@@ -230,6 +230,26 @@ export default {
'voicePrintDialog.requiredName': 'Please enter name', 'voicePrintDialog.requiredName': 'Please enter name',
'voicePrintDialog.requiredAudioVector': 'Please select audio vector', 'voicePrintDialog.requiredAudioVector': 'Please select audio vector',
// Context provider dialog related
'contextProviderDialog.title': 'Edit Source',
'contextProviderDialog.noContextApi': 'No Context API',
'contextProviderDialog.add': 'Add',
'contextProviderDialog.apiUrl': 'API URL',
'contextProviderDialog.apiUrlPlaceholder': 'http://api.example.com/data',
'contextProviderDialog.requestHeaders': 'Request Headers',
'contextProviderDialog.headerKeyPlaceholder': 'Key',
'contextProviderDialog.headerValuePlaceholder': 'Value',
'contextProviderDialog.noHeaders': 'No Headers',
'contextProviderDialog.addHeader': 'Add Header',
'contextProviderDialog.cancel': 'Cancel',
'contextProviderDialog.confirm': 'Confirm',
// Role config page - context provider related
'roleConfig.contextProvider': 'Context',
'roleConfig.contextProviderSuccess': 'Successfully added {count} sources.',
'roleConfig.contextProviderDocLink': 'How to deploy context provider',
'roleConfig.editContextProvider': 'Edit Source',
// Voice print page related // Voice print page related
'voicePrint.pageTitle': 'Voice Print Recognition', 'voicePrint.pageTitle': 'Voice Print Recognition',
'voicePrint.name': 'Name', 'voicePrint.name': 'Name',
+20
View File
@@ -230,6 +230,26 @@ export default {
'voicePrintDialog.requiredName': 'Vui lòng nhập tên', 'voicePrintDialog.requiredName': 'Vui lòng nhập tên',
'voicePrintDialog.requiredAudioVector': 'Vui lòng chọn vector âm thanh', 'voicePrintDialog.requiredAudioVector': 'Vui lòng chọn vector âm thanh',
// Context provider dialog related
'contextProviderDialog.title': 'Chỉnh sửa nguồn',
'contextProviderDialog.noContextApi': 'Không có API ngữ cảnh',
'contextProviderDialog.add': 'Thêm',
'contextProviderDialog.apiUrl': 'Địa chỉ API',
'contextProviderDialog.apiUrlPlaceholder': 'http://api.example.com/data',
'contextProviderDialog.requestHeaders': 'Header yêu cầu',
'contextProviderDialog.headerKeyPlaceholder': 'Khóa',
'contextProviderDialog.headerValuePlaceholder': 'Giá trị',
'contextProviderDialog.noHeaders': 'Không có Headers',
'contextProviderDialog.addHeader': 'Thêm Header',
'contextProviderDialog.cancel': 'Hủy bỏ',
'contextProviderDialog.confirm': 'Xác nhận',
// Role config page - context provider related
'roleConfig.contextProvider': 'Bối cảnh',
'roleConfig.contextProviderSuccess': 'Đã thêm thành công {count} nguồn.',
'roleConfig.contextProviderDocLink': 'Cách triển khai nguồn ngữ cảnh',
'roleConfig.editContextProvider': 'Chỉnh sửa nguồn',
// Voice print page related // Voice print page related
'voicePrint.pageTitle': 'Nhận dạng dấu giọng nói', 'voicePrint.pageTitle': 'Nhận dạng dấu giọng nói',
'voicePrint.name': 'Tên', 'voicePrint.name': 'Tên',
+20
View File
@@ -230,6 +230,26 @@ export default {
'voicePrintDialog.requiredName': '请输入姓名', 'voicePrintDialog.requiredName': '请输入姓名',
'voicePrintDialog.requiredAudioVector': '请选择音频向量', 'voicePrintDialog.requiredAudioVector': '请选择音频向量',
// 上下文源对话框相关
'contextProviderDialog.title': '编辑源',
'contextProviderDialog.noContextApi': '暂无上下文API',
'contextProviderDialog.add': '添加',
'contextProviderDialog.apiUrl': '接口地址',
'contextProviderDialog.apiUrlPlaceholder': 'http://api.example.com/data',
'contextProviderDialog.requestHeaders': '请求头',
'contextProviderDialog.headerKeyPlaceholder': 'Key',
'contextProviderDialog.headerValuePlaceholder': 'Value',
'contextProviderDialog.noHeaders': '暂无 Headers',
'contextProviderDialog.addHeader': '添加 Header',
'contextProviderDialog.cancel': '取消',
'contextProviderDialog.confirm': '确定',
// 角色配置页面-上下文源相关
'roleConfig.contextProvider': '上下文源',
'roleConfig.contextProviderSuccess': '已成功添加 {count} 个源。',
'roleConfig.contextProviderDocLink': '如何部署上下文源',
'roleConfig.editContextProvider': '编辑源',
// 声纹页面相关 // 声纹页面相关
'voicePrint.pageTitle': '声纹识别', 'voicePrint.pageTitle': '声纹识别',
'voicePrint.name': '姓名', 'voicePrint.name': '姓名',
+20
View File
@@ -230,6 +230,26 @@ export default {
'voicePrintDialog.requiredName': '請輸入姓名', 'voicePrintDialog.requiredName': '請輸入姓名',
'voicePrintDialog.requiredAudioVector': '請選擇音頻向量', 'voicePrintDialog.requiredAudioVector': '請選擇音頻向量',
// 上下文源對話框相關
'contextProviderDialog.title': '編輯源',
'contextProviderDialog.noContextApi': '暫無上下文API',
'contextProviderDialog.add': '添加',
'contextProviderDialog.apiUrl': '接口地址',
'contextProviderDialog.apiUrlPlaceholder': 'http://api.example.com/data',
'contextProviderDialog.requestHeaders': '請求頭',
'contextProviderDialog.headerKeyPlaceholder': 'Key',
'contextProviderDialog.headerValuePlaceholder': 'Value',
'contextProviderDialog.noHeaders': '暫無 Headers',
'contextProviderDialog.addHeader': '添加 Header',
'contextProviderDialog.cancel': '取消',
'contextProviderDialog.confirm': '確定',
// 角色配置頁面-上下文源相關
'roleConfig.contextProvider': '上下文源',
'roleConfig.contextProviderSuccess': '已成功添加 {count} 個源。',
'roleConfig.contextProviderDocLink': '如何部署上下文源',
'roleConfig.editContextProvider': '編輯源',
// 聲紋頁面相關 // 聲紋頁面相關
'voicePrint.pageTitle': '聲紋識別', 'voicePrint.pageTitle': '聲紋識別',
'voicePrint.name': '姓名', 'voicePrint.name': '姓名',
+3 -3
View File
@@ -55,17 +55,17 @@
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="上下文源:" class="context-provider-item"> <el-form-item :label="$t('roleConfig.contextProvider') + ''" class="context-provider-item">
<div style="display: flex; align-items: center; justify-content: space-between;"> <div style="display: flex; align-items: center; justify-content: space-between;">
<span style="color: #606266; font-size: 13px;"> <span style="color: #606266; font-size: 13px;">
已成功添加 {{ currentContextProviders.length }} 个源<a href="https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/docs/context-provider-integration.md" target="_blank" class="doc-link">如何部署上下文源</a> {{ $t('roleConfig.contextProviderSuccess', { count: currentContextProviders.length }) }}<a href="https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/docs/context-provider-integration.md" target="_blank" class="doc-link">{{ $t('roleConfig.contextProviderDocLink') }}</a>
</span> </span>
<el-button <el-button
class="edit-function-btn" class="edit-function-btn"
size="small" size="small"
@click="openContextProviderDialog" @click="openContextProviderDialog"
> >
编辑源 {{ $t('roleConfig.editContextProvider') }}
</el-button> </el-button>
</div> </div>
</el-form-item> </el-form-item>