{{ t('pickup.inputPlaceholder', { length: 6 }) }}
{{ t('site.title', '文件中转站') }} ``` ### 切换语言 ```typescript // 切换到英文 setLocale('en-US') // 切换到中文 setLocale('zh-CN') // 当前语言 console.log(locale.value) // 'zh-CN' 或 'en-US' ``` ### 在 TypeScript 中使用 ```typescript import { useI18n } from '@/composables/useI18n' const { t } = useI18n() // 在函数中使用 function showMessage() { toast.success(t('common.saveSuccess')) } ``` ## 待完成的工作 ### 需要国际化的页面 1. **UploadPage.vue** (寄存页面) - 文件上传界面 - 文本输入界面 - 设置表单 - 上传成功提示 2. **AdminLogin.vue** (管理员登录) - 登录表单 - 错误提示 3. **AdminDashboard.vue** (管理概览) - 统计卡片 - 最近批次列表 4. **BatchManagement.vue** (批次管理) - 筛选器 - 批次列表 - 批次详情 - 编辑/删除对话框 5. **TokenManagement.vue** (令牌管理) 6. **ConfigManagement.vue** (系统配置) ### 其他组件 - AdminNavBar.vue - ThemeSwitcher.vue (如果需要语言选择器) ## 语言文件扩展 当需要添加新的翻译时: 1. 在 `src/i18n/locales/zh-CN.ts` 添加中文 2. 在 `src/i18n/locales/en-US.ts` 添加英文 3. 使用 `t('key')` 在组件中调用 ## 最佳实践 1. **命名规范** - 使用点号分隔的层级结构 - 例如: `admin.batches.list.title` 2. **参数化文本** - 对于需要动态内容的文本,使用参数 - 例如: `t('pickup.inputPlaceholder', { length: 6 })` 3. **后备文本** - 对于配置项或可能缺失的翻译,提供后备文本 - 例如: `t('site.title', '默认标题')` 4. **保持一致性** - 相同含义的文本使用相同的 key - 例如: 所有"保存"按钮都使用 `common.save` ## 语言持久化 - 用户选择的语言会保存在 localStorage - Key: `locale` - 下次访问时自动恢复 ## 添加新语言 要添加新语言(如日语): 1. 创建 `src/i18n/locales/ja-JP.ts` 2. 在 `src/i18n/index.ts` 中导入并注册 3. 添加语言切换选项到 UI ```typescript // src/i18n/index.ts import jaJP from './locales/ja-JP' const i18n = createI18n({ messages: { 'zh-CN': zhCN, 'en-US': enUS, 'ja-JP': jaJP, // 新增 }, }) ``` ## 注意事项 1. i18n 已在全局注册,所有组件都可以直接使用 2. 使用 Composition API 模式 (`legacy: false`) 3. 默认语言为中文 (zh-CN) 4. 回退语言也是中文