You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证对象translations属性下的英文(en)翻译字段为必填项?

解决方案

你只需要给translations下的en字段链式调用.required()方法,传入你指定的错误提示即可。Yup会自动校验en字段是否存在,缺失时直接返回你定义的报错信息,同时完全不影响原有其他校验规则的运行,可选语言的校验表现也和你之前的预期一致。

如果你的场景里translations属性本身也可能不存在,也可以给translations对应的对象schema也加上.required()。

修正后的完整代码如下:

const categoryTranslationsSchema = object({
    name: string()
        .min(3, 'Must have at least 3 characters.')
        .max(16, 'Cannot be longer than 16 characteres.')
        .required('Must provide a name.')
})

const categorySchema = object({
    slug: string()
        .min(3, 'Must have at least 3 characters.')
        .max(16, 'Cannot be longer than 16 characteres.')
        .lowercase()
        .trim()
        .matches(/^(?![0-9-]+$)(?:[a-z]{2,}-?|[0-9]-?)+(?<!-)$/gm, 'Must start with a letter and can'
            + ' only contain letters, numbers or dashes (no more than one consecutive).')
        .required('The slug is required.'),
    translations: object({
        en: categoryTranslationsSchema
            .required('An English translation is required'),
        es: categoryTranslationsSchema
            .default(undefined),
        de: categoryTranslationsSchema
            .default(undefined)
    })
    // 如果需要保证translations本身必须存在,去掉下一行的注释
    // .required()
})

内容的提问来源于stack exchange,提问作者giorgiline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:10