温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

OpenHarmony验证码如何做国际化

发布时间:2026-11-01 14:57:13 来源:亿速云 阅读:97 作者:小樊 栏目:软件技术

在 OpenHarmony(ArkUI / eTS) 里,验证码(短信验证码、图形验证码等)做国际化(i18n),本质上和别的 UI 文本国际化一样:不要写死文案,使用资源文件 + 系统语言切换机制。

下面按“短信验证码场景”为例说明(图形验证码逻辑相同)。


一、OpenHarmony 国际化基本机制

OpenHarmony 使用:

  • resources/ 目录
  • string.json
  • ResourceManager
  • $r('app.string.xxx')

支持:

  • 中文:resources/zh_CN/
  • 英文:resources/en_US/

二、资源文件准备(关键)

1️⃣ 中文资源

resources/zh_CN/element/string.json

{
  "string": [
    {
      "name": "send_code",
      "value": "获取验证码"
    },
    {
      "name": "code_sent",
      "value": "验证码已发送"
    },
    {
      "name": "countdown",
      "value": "%s秒后重发"
    }
  ]
}

2️⃣ 英文资源

resources/en_US/element/string.json

{
  "string": [
    {
      "name": "send_code",
      "value": "Get Code"
    },
    {
      "name": "code_sent",
      "value": "Code sent"
    },
    {
      "name": "countdown",
      "value": "Resend in %s s"
    }
  ]
}

三、UI 中使用国际化文案

Button($r('app.string.send_code'))
  .onClick(() => {
    sendSmsCode()
  })

倒计时示例:

Text($r('app.string.countdown', this.leftSeconds))

四、验证码业务逻辑中的国际化

1️⃣ 提示信息国际化

promptAction.showToast({
  message: $r('app.string.code_sent')
})

2️⃣ 错误提示

// zh_CN
"code_error": "验证码错误"

// en_US
"code_error": "Invalid code"
if (!verifySuccess) {
  promptAction.showToast({
    message: $r('app.string.code_error')
  })
}

五、短信内容本身要不要国际化?⚠️

重点:短信内容由服务端发送,不在 App 内控制显示

正确做法:

  • 前端传 language 参数给后端
  • 后端根据语言发送不同语言短信
sendSmsCode() {
  httpRequest({
    url: 'https://api.xxx.com/sendCode',
    data: {
      phone: this.phone,
      lang: this.getSystemLanguage()
    }
  })
}
getSystemLanguage(): string {
  return i18n.getSystemLanguage() // zh_CN / en_US
}

六、图形验证码国际化

图形验证码通常:

  • 文案:刷新、看不清 → 国际化
  • 图片内容:一般不需要翻译
Button($r('app.string.refresh_code'))

七、动态切换语言(可选)

OpenHarmony 支持:

i18n.setAppLanguage('en_US')

⚠️ 需重启或刷新 UI 才生效(部分版本限制)


八、总结一句话

OpenHarmony 验证码国际化 = UI 文案走 string.json + 短信内容由后端按语言发送

如果你愿意,我可以:

  • 给你一个 完整验证码页面示例
  • 或针对 API 9 / API 10 / ArkTS 版本写代码
  • 或讲 多语言切换不重启方案

你现在是哪个 OpenHarmony 版本?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手