在 OpenHarmony(ArkUI / eTS) 里,验证码(短信验证码、图形验证码等)做国际化(i18n),本质上和别的 UI 文本国际化一样:不要写死文案,使用资源文件 + 系统语言切换机制。
下面按“短信验证码场景”为例说明(图形验证码逻辑相同)。
OpenHarmony 使用:
resources/ 目录string.jsonResourceManager$r('app.string.xxx')支持:
resources/zh_CN/resources/en_US/resources/zh_CN/element/string.json
{
"string": [
{
"name": "send_code",
"value": "获取验证码"
},
{
"name": "code_sent",
"value": "验证码已发送"
},
{
"name": "countdown",
"value": "%s秒后重发"
}
]
}
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"
}
]
}
Button($r('app.string.send_code'))
.onClick(() => {
sendSmsCode()
})
倒计时示例:
Text($r('app.string.countdown', this.leftSeconds))
promptAction.showToast({
message: $r('app.string.code_sent')
})
// 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 + 短信内容由后端按语言发送
如果你愿意,我可以:
你现在是哪个 OpenHarmony 版本?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。