feat(i18n): fix menu auto-translation fallback + expand dictionary with 200+ menu terms
This commit is contained in:
@@ -85,6 +85,93 @@ const translationDict = {
|
|||||||
'在线': 'Online', '离线': 'Offline', '已连接': 'Connected', '未连接': 'Disconnected',
|
'在线': 'Online', '离线': 'Offline', '已连接': 'Connected', '未连接': 'Disconnected',
|
||||||
'元': 'Yuan', '次': 'Times', '天': 'Days', '小时': 'Hours', '分钟': 'Minutes',
|
'元': 'Yuan', '次': 'Times', '天': 'Days', '小时': 'Hours', '分钟': 'Minutes',
|
||||||
'条': 'Items', '个': 'Items', '项': 'Items', '次/分': 'Times/min',
|
'条': 'Items', '个': 'Items', '项': 'Items', '次/分': 'Times/min',
|
||||||
|
// 菜单专用术语
|
||||||
|
'工作站': 'Workstation', '日结': 'Daily Settlement', '换卡': 'Card Replacement',
|
||||||
|
'预交金': 'Prepayment', '收费': 'Charge', '退费': 'Refund', '退号': 'Cancel Reg.',
|
||||||
|
'挂号': 'Registration', '划价': 'Pricing', '发药': 'Dispensing', '退药': 'Drug Return',
|
||||||
|
'领药': 'Drug Collection', '入库': 'Inbound', '出库': 'Outbound', '盘点': 'Stocktaking',
|
||||||
|
'调拨': 'Transfer', '报损': 'Damage Report', '损益': 'Profit/Loss',
|
||||||
|
'审批': 'Approval', '审核': 'Review', '校对': 'Proofreading', '签发': 'Sign & Issue',
|
||||||
|
'闭环': 'Closed Loop', '组套': 'Template', '组合': 'Combination',
|
||||||
|
'增强': 'Enhanced', '质量': 'Quality', '指标': 'Indicator', '统计': 'Statistics',
|
||||||
|
'报表': 'Report', '管理': 'Management', '维护': 'Maintenance', '配置': 'Config',
|
||||||
|
'设置': 'Settings', '参数': 'Parameter', '目录': 'Catalog', '对照': 'Mapping',
|
||||||
|
'清单': 'List', '明细': 'Detail', '汇总': 'Summary', '查询': 'Query',
|
||||||
|
'追溯': 'Traceability', '预警': 'Alert', '监测': 'Monitoring', '筛查': 'Screening',
|
||||||
|
'评估': 'Assessment', '记录': 'Record', '执行': 'Execution', '追踪': 'Tracking',
|
||||||
|
'床位': 'Bed', '病区': 'Ward', '病房': 'Room', '诊室': 'Consulting Room',
|
||||||
|
'叫号': 'Call Number', '排队': 'Queue', '分诊': 'Triage', '留观': 'Observation',
|
||||||
|
'抢救': 'Rescue', '绿色通道': 'Green Channel',
|
||||||
|
'知情同意': 'Informed Consent', '临床路径': 'Clinical Pathway',
|
||||||
|
'随访': 'Follow-up', '会诊': 'Consultation', '转诊': 'Referral',
|
||||||
|
'传染病': 'Infectious Disease', '疫情': 'Epidemic', '院感': 'HAI',
|
||||||
|
'抗菌': 'Antibiotic', '耐药': 'Drug Resistant', '手卫生': 'Hand Hygiene',
|
||||||
|
'消毒': 'Sterilization', '供应': 'Supply',
|
||||||
|
'手术室': 'Operating Room', '手术台': 'Operating Table', '麻醉': 'Anesthesia',
|
||||||
|
'病历': 'Medical Record', '病案': 'Case Record', '病程': 'Progress Notes',
|
||||||
|
'医嘱': 'Order', '处方': 'Prescription', '诊断': 'Diagnosis',
|
||||||
|
'检验': 'Lab Test', '检查': 'Examination', '标本': 'Specimen', '仪器': 'Instrument',
|
||||||
|
'药品': 'Drug', '耗材': 'Consumable', '设备': 'Device', '物资': 'Material',
|
||||||
|
'供应商': 'Supplier', '合同': 'Contract', '货位': 'Location',
|
||||||
|
'财务': 'Finance', '结算': 'Settlement', '对账': 'Reconciliation',
|
||||||
|
'发票': 'Invoice', '收据': 'Receipt', '押金': 'Deposit',
|
||||||
|
'排班': 'Schedule', '考勤': 'Attendance', '排期': 'Scheduling',
|
||||||
|
'权限': 'Permission', '角色': 'Role', '菜单': 'Menu', '字典': 'Dictionary',
|
||||||
|
'部门': 'Department', '岗位': 'Position', '租户': 'Tenant',
|
||||||
|
'日志': 'Log', '审计': 'Audit', '监控': 'Monitor', '缓存': 'Cache',
|
||||||
|
'接口': 'Interface', '服务': 'Service', '流程': 'Process',
|
||||||
|
'模板': 'Template', '签名': 'Signature', '电子': 'Electronic',
|
||||||
|
'知识库': 'Knowledge Base', '合理用药': 'Rational Drug Use',
|
||||||
|
'DRG': 'DRG', 'DIP': 'DIP', 'EMPI': 'EMPI', 'ESB': 'ESB',
|
||||||
|
'FHIR': 'FHIR', 'CDA': 'CDA', 'LIS': 'LIS', 'PACS': 'PACS',
|
||||||
|
'TPR': 'TPR', 'ICD': 'ICD', 'CSSD': 'CSSD',
|
||||||
|
'门诊': 'Outpatient', '住院': 'Inpatient', '急诊': 'Emergency',
|
||||||
|
'外科': 'Surgery', '内科': 'Internal Medicine', '妇产科': 'OB/GYN',
|
||||||
|
'儿科': 'Pediatrics', '骨科': 'Orthopedics', '眼科': 'Ophthalmology',
|
||||||
|
'耳鼻喉': 'ENT', '口腔': 'Dental', '皮肤科': 'Dermatology',
|
||||||
|
'中医': 'TCM', '康复': 'Rehabilitation', '营养': 'Nutrition',
|
||||||
|
'心理': 'Psychology', '放射': 'Radiology', '超声': 'Ultrasound',
|
||||||
|
'病理': 'Pathology', '输血': 'Blood Transfusion', '透析': 'Dialysis',
|
||||||
|
'重症': 'ICU', '新生儿': 'Neonatal', '产科': 'Obstetrics',
|
||||||
|
'体检': 'Physical Exam', '预防': 'Prevention', '保健': 'Health Care',
|
||||||
|
'药品效期': 'Drug Expiry', '药品追溯': 'Drug Traceability',
|
||||||
|
'医嘱执行': 'Order Execution', '医嘱校对': 'Order Proofreading',
|
||||||
|
'发药管理': 'Dispensing Management', '发药统计': 'Dispensing Statistics',
|
||||||
|
'库存预警': 'Stock Alert', '库存明细': 'Stock Detail',
|
||||||
|
'价格调整': 'Price Adjustment', '调价': 'Price Adjustment',
|
||||||
|
'缴费': 'Payment', '退费': 'Refund', '欠费': 'Arrears',
|
||||||
|
'预交': 'Prepayment', '押金': 'Deposit', '补打': 'Reprint',
|
||||||
|
'重打': 'Reprint', '补录': 'Retroactive Entry',
|
||||||
|
'皮试': 'Skin Test', '过敏': 'Allergy', '不良反应': 'Adverse Reaction',
|
||||||
|
'危急值': 'Critical Value', '危急': 'Critical',
|
||||||
|
'床位管理': 'Bed Management', '入院': 'Admission', '出院': 'Discharge',
|
||||||
|
'转科': 'Transfer Dept.', '转院': 'Transfer Hospital',
|
||||||
|
'接诊': 'Consultation', '复诊': 'Follow-up Visit', '初诊': 'First Visit',
|
||||||
|
'叫号': 'Call Number', '候诊': 'Waiting', '就诊': 'Visit',
|
||||||
|
'收费工作站': 'Charge Workstation', '门诊日结': 'OPD Daily Settlement',
|
||||||
|
'门诊换卡': 'OPD Card Replacement', '预交金管理': 'Prepayment Management',
|
||||||
|
'收费记录': 'Charge Records', '出院结算': 'Discharge Settlement',
|
||||||
|
'门诊医生工作站': 'OPD Doctor Workstation', '住院医生工作站': 'IPD Doctor Workstation',
|
||||||
|
'门诊收费工作站': 'OPD Charge Workstation', '住院收费工作站': 'IPD Charge Workstation',
|
||||||
|
'门诊挂号': 'OPD Registration', '门诊收费': 'OPD Charge', '门诊退费': 'OPD Refund',
|
||||||
|
'门诊发药': 'OPD Dispensing', '门诊退药': 'OPD Drug Return',
|
||||||
|
'住院登记': 'IPD Registration', '住院结算': 'IPD Settlement',
|
||||||
|
'住院发药': 'IPD Dispensing', '住院退药': 'IPD Drug Return',
|
||||||
|
'手术安排': 'Surgery Schedule', '手术记录': 'Surgery Record',
|
||||||
|
'护理记录': 'Nursing Record', '护理评估': 'Nursing Assessment',
|
||||||
|
'病历检索': 'EMR Search', '病历时效': 'EMR Timeliness',
|
||||||
|
'病案归档': 'Case Archive', '病案首页': 'Case Homepage',
|
||||||
|
'合理用药': 'Rational Drug Use', '抗菌药物': 'Antibiotics',
|
||||||
|
'传染病报告': 'Infectious Disease Report', '院感管理': 'HAI Management',
|
||||||
|
'危急值处理': 'Critical Value Handling', '危急值管理': 'Critical Value Mgmt',
|
||||||
|
'检验报告': 'Lab Report', '检查报告': 'Inspection Report',
|
||||||
|
'药品目录': 'Drug Catalog', '诊疗目录': 'Treatment Catalog',
|
||||||
|
'医保结算': 'Insurance Settlement', '医保对账': 'Insurance Reconciliation',
|
||||||
|
'库存管理': 'Inventory Management', '采购管理': 'Procurement Management',
|
||||||
|
'知识库': 'Knowledge Base', '临床路径': 'Clinical Pathway',
|
||||||
|
'会诊管理': 'Consultation Management', '随访管理': 'Follow-up Management',
|
||||||
|
'电子签名': 'Electronic Signature', '电子病历': 'Electronic Medical Record',
|
||||||
|
'质量指标': 'Quality Indicator', '质量管理': 'Quality Management',
|
||||||
},
|
},
|
||||||
'vi': {
|
'vi': {
|
||||||
'新增': 'Thêm', '编辑': 'Sửa', '删除': 'Xóa', '查询': 'Tìm kiếm', '重置': 'Đặt lại',
|
'新增': 'Thêm', '编辑': 'Sửa', '删除': 'Xóa', '查询': 'Tìm kiếm', '重置': 'Đặt lại',
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ import {isExternal} from '@/utils/validate'
|
|||||||
import AppLink from './Link'
|
import AppLink from './Link'
|
||||||
import {getNormalPath} from '@/utils/his'
|
import {getNormalPath} from '@/utils/his'
|
||||||
import {useI18n} from 'vue-i18n'
|
import {useI18n} from 'vue-i18n'
|
||||||
|
import {autoTranslate} from '@/i18n/autoTranslate'
|
||||||
import menuTitleMap from './menuTitleMap'
|
import menuTitleMap from './menuTitleMap'
|
||||||
|
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
@@ -66,7 +67,14 @@ const {t} = useI18n()
|
|||||||
function translateTitle(title) {
|
function translateTitle(title) {
|
||||||
if (!title) return ''
|
if (!title) return ''
|
||||||
const key = menuTitleMap[title]
|
const key = menuTitleMap[title]
|
||||||
return key ? t(key) : title
|
if (key) {
|
||||||
|
const result = t(key)
|
||||||
|
// 如果翻译结果还是 key(locale 中没有),用自动翻译
|
||||||
|
if (result === key) return autoTranslate(title)
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
// 没有映射,直接用自动翻译字典
|
||||||
|
return autoTranslate(title)
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ import useTagsViewStore from '@/store/modules/tagsView';
|
|||||||
import useSettingsStore from '@/store/modules/settings';
|
import useSettingsStore from '@/store/modules/settings';
|
||||||
import usePermissionStore from '@/store/modules/permission';
|
import usePermissionStore from '@/store/modules/permission';
|
||||||
import {useI18n} from 'vue-i18n';
|
import {useI18n} from 'vue-i18n';
|
||||||
|
import {autoTranslate} from '@/i18n/autoTranslate';
|
||||||
import menuTitleMap from '../Sidebar/menuTitleMap';
|
import menuTitleMap from '../Sidebar/menuTitleMap';
|
||||||
|
|
||||||
const {t} = useI18n();
|
const {t} = useI18n();
|
||||||
@@ -82,7 +83,12 @@ const {t} = useI18n();
|
|||||||
function translateTitle(title) {
|
function translateTitle(title) {
|
||||||
if (!title) return '';
|
if (!title) return '';
|
||||||
const key = menuTitleMap[title];
|
const key = menuTitleMap[title];
|
||||||
return key ? t(key) : title;
|
if (key) {
|
||||||
|
const result = t(key);
|
||||||
|
if (result === key) return autoTranslate(title);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return autoTranslate(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
const visible = ref(false);
|
const visible = ref(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user