自定义语言文件
所有错误文本都可以替换为自己的 —— 就像 Laravel 的语言文件:把文件复制到项目中,修改后加载即可。
1. 复制语言文件
bash
npx tinyval lang ru该命令会创建包含全部文本的 lang/tinyval/ru.ts。可用:en、ru、zh。
| 选项 | 作用 |
|---|---|
--out <目录> | 文件存放位置。默认为 lang/tinyval |
--js | 创建 .js 而不是 .ts |
--force | 覆盖已有文件 |
2. 修改文本
ts
// lang/tinyval/ru.ts
import type { Messages } from 'tinyval';
export default {
required: 'Поле «{label}» обязательно',
minLength: '{label}: минимум {min} символов',
email: 'Проверьте адрес почты',
// ...
} satisfies Messages;satisfies Messages 让 TypeScript 检查文件中是否包含所有错误代码,并提示它们的名称。$locale 键('ru'、'en'…)决定 {min|character|characters} 这类复数形式使用的语言。如果只需修改少数文本,不需要整个文件 —— 用这些键调用 setMessages 即可。
3. 加载
ts
import { setMessages } from 'tinyval';
import messages from './lang/tinyval/ru';
setMessages(messages);在应用启动时调用一次。如果有多种语言且语言取决于请求,请把文件传给调用本身:validate(schema, data, { messages })。
特定字段的文本
除了代码之外,语言文件还可以包含“字段.代码”形式的键 —— 类似 Laravel 的 custom。数组元素用 * 代替索引:
ts
export default {
...ru,
'email.required': 'Укажите почту — на неё придёт письмо',
'password.minLength': 'Пароль слишком простой',
'items.*.qty.min': 'Количество — от {min}',
} satisfies Messages;文本优先级:Schema 中的信息 → “字段.代码” → 代码。每一步都先查看调用的 messages 选项,再查看 setMessages。
字段名称
通过 setLabels 为整个应用设置 {label} 的名称 —— 类似 Laravel 的 attributes:
ts
setLabels({ email: 'Почта', 'items.*.qty': 'Количество' });另请参阅
- 错误信息与国际化:全部错误代码
- setMessages、setLabels