import { i18n } from './index' /** * 工具注册表(router/tools.ts)的国际化取词助手。 * * 设计取舍:中文名称与描述仍以 tools.ts 为「唯一数据源」保留在注册表里, * 语言包只负责提供其它语言的翻译。取值时先查语言包,查不到就回退注册表原文, * 这样即使某个工具忘了补翻译,页面也不会显示成空的 key。 * * 这些函数直接使用 i18n.global,因此在 setup 之外(如路由守卫、工具函数)也能调用; * 在组件的模板或 computed 中调用同样具备响应式能力(t 内部会读取 locale)。 */ function translateOr(key: string, fallback: string): string { if (i18n.global.te(key)) { const value = i18n.global.t(key) // t() 在 key 存在但值为空字符串时也会返回空串,这里一并用兜底值覆盖 if (value) return value } return fallback } /** 取工具名称(已翻译;缺失时回退注册表中文名) */ export function toolName(path: string, fallback: string): string { return translateOr(`tool.${path}.name`, fallback) } /** 取工具描述(已翻译;缺失时回退注册表中文描述) */ export function toolDesc(path: string, fallback: string): string { return translateOr(`tool.${path}.desc`, fallback) } /** 取分类名称 */ export function categoryLabel(key: string, fallback: string): string { return translateOr(`category.${key}.label`, fallback) } /** 取分类描述 */ export function categoryDesc(key: string, fallback: string): string { return translateOr(`category.${key}.desc`, fallback) } /** 通用取词(带兜底值) */ export function tOr(key: string, fallback: string): string { return translateOr(key, fallback) } /** 通用取词(带命名参数) */ export function tArgs(key: string, args: Record): string { return i18n.global.t(key, args) }