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

如何本地化或删除AWS Amplify Vue构建的Cognito登录页必填字段提示

问题原因

你遇到的「Please fill out this field.」是浏览器原生的HTML5表单必填校验提示,不属于Amplify组件的内置文本资源,因此修改Amplify I18n配置不会生效。该提示的默认语言跟随浏览器/操作系统的语言设置,不由前端业务代码的I18n直接控制。

解决方案

方案1:自定义原生校验提示文案

通过Amplify Authenticator的字段插槽自定义输入框,绑定invalid事件手动设置校验提示文本,可配合你现有的I18n配置实现多语言适配:

<template>
  <amplify-authenticator>
    <amplify-sign-in slot="sign-in" hide-sign-up="true">
      <!-- 自定义用户名输入框 -->
      <template v-slot:username-field="{ field, validationErrors }">
        <amplify-input
          v-bind="field"
          required
          @invalid="(e) => e.target.setCustomValidity(I18n.get('请填写此字段'))"
          @input="(e) => e.target.setCustomValidity('')"
        />
        <div v-if="validationErrors.length" class="error-text">{{ validationErrors[0] }}</div>
      </template>
      <!-- 自定义密码输入框 -->
      <template v-slot:password-field="{ field, validationErrors }">
        <amplify-input
          v-bind="field"
          type="password"
          required
          @invalid="(e) => e.target.setCustomValidity(I18n.get('请填写此字段'))"
          @input="(e) => e.target.setCustomValidity('')"
        />
        <div v-if="validationErrors.length" class="error-text">{{ validationErrors[0] }}</div>
      </template>
    </amplify-sign-in>
  </amplify-authenticator>
</template>

同时在你的I18n词汇表中补充对应语言的词条即可:

export const extraVocabularies = {
  'ja-JP': {
    '请填写此字段': 'このフィールドを入力してください',
    // 其他业务词条
  },
};
I18n.putVocabularies(extraVocabularies);
I18n.setLanguage('ja-JP');

方案2:直接禁用原生必填校验

如果不需要原生提示,可给Amplify内部的表单添加novalidate属性彻底关闭该提示,后续可自行基于Amplify返回的校验错误做自定义提示:

// 页面mounted生命周期中添加属性
mounted() {
  const authForm = document.querySelector('amplify-authenticator form');
  authForm?.setAttribute('novalidate', true);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:51:03