refactor(page-table, page-dialog-form): 实现国际化自动响应,移除提前翻译逻辑
1. 为page-table和page-dialog-form添加内部$t翻译逻辑,支持语言切换自动更新 2. 移除data()中提前翻译的k()辅助函数,改为直接传入i18n key 3. 更新文档说明最新的i18n使用规范,新增迁移指南文档 4. 修复工厂区域页面的国际化调用方式,统一使用this.key()传参
This commit is contained in:
@@ -200,16 +200,13 @@ import { i18nMixin } from '@/composables/useI18n'
|
||||
export default {
|
||||
mixins: [i18nMixin('page.production_master_data.factory_model.factory_area')],
|
||||
data () {
|
||||
const t = this.$t.bind(this)
|
||||
const k = (s) => t(this.key(s)) // 当前页面翻译
|
||||
const ck = (s) => t(this.ckey(s)) // 公共翻译
|
||||
|
||||
return {
|
||||
// 传入完整 i18n key,不在此处翻译,由子组件内部 $t() 处理
|
||||
formCols: [
|
||||
[{ label: k('code'), placeholder: k('enter_code') }]
|
||||
[{ label: this.key('code'), placeholder: this.key('enter_code') }]
|
||||
],
|
||||
rules: {
|
||||
code: [{ required: true, message: k('enter_code'), trigger: 'blur' }]
|
||||
code: [{ required: true, message: this.key('enter_code'), trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -236,12 +233,13 @@ export default {
|
||||
</template>
|
||||
```
|
||||
|
||||
### 4.3 data() 中翻译的时机说明
|
||||
### 4.3 data() 中传参的时机说明
|
||||
|
||||
`data()` 在 `created` 之前执行,此时 `this` 已经可用。因此:
|
||||
|
||||
- **column label / formCols / rules.message**:在 `data()` 中或 `created()` 中 `this.key()` 都可以
|
||||
- **推荐在 `data()` 中用 `k()` 提前翻译**,避免子组件 `$t()` 的 webpack HMR 缓存问题
|
||||
- **column label / formCols / rules.message**:在 `data()` 中或 `created()` 中用 `this.key()` 传入完整 i18n key
|
||||
- **翻译由子组件负责**:`page-table` 和 `page-dialog-form` 内部使用 `$t()` 翻译传入的 key,切换语言时自动响应更新
|
||||
- **不要用 `k()` 提前翻译**:`k()` 将 key 翻译成静态字符串,语言切换后不会更新
|
||||
|
||||
---
|
||||
|
||||
@@ -382,7 +380,7 @@ this.$t('please_enter', { name: '所区编码' })
|
||||
- [ ] 5. 验证 JSON 合法性:`node -e "JSON.parse(require('fs').readFileSync('src/locales/zh-chs.json','utf8'))"`
|
||||
- [ ] 6. 页面中使用 `mixins: [i18nMixin('key前缀')]`
|
||||
- [ ] 7. 模板中用 `$t(key('xxx'))` 替代硬编码文字
|
||||
- [ ] 8. data() 中用 `k('xxx')` 提前翻译 formCols / rules
|
||||
- [ ] 8. data() 中用 `this.key('xxx')` 传入完整 i18n key(不用 `k()` 提前翻译)
|
||||
- [ ] 9. 公共文案(帮助、确定、取消等)用 `ckey('xxx')` 引用
|
||||
- [ ] 10. `pnpm lint` 无报错
|
||||
|
||||
|
||||
Reference in New Issue
Block a user