HarmonyOS 鸿蒙Next中最近在做多语言适配,有没有占位符的功能
HarmonyOS 鸿蒙Next中最近在做多语言适配,有没有占位符的功能
举个例子
发送验证码 有一个 倒计时功能
发完验证码 会有一个 重新发送(59s)
然后现在翻译成英文的话 中间 那个倒计时是动态的
翻译成英语的 话就是 Resend (59s)
有没有相关的文档啥的,这边需要动态传入 整数,字符串等
更多关于HarmonyOS 鸿蒙Next中最近在做多语言适配,有没有占位符的功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
有的兄弟有的:
$r('app.string.privacy_title', $r('app.string.app_name')) 这样就可以了,自动拼


我试试,
为啥不能把(59s)的内容不翻译,只翻译前面的重新发送/Resend呢?,后面的(58s)用(${this.num}s)来写呢?
$r('sms_cd_prefix') + cd + $r('sms_cd_suffix')
这样应该可以,但不够优雅
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
能用就行,不用那么优雅,
鸿蒙Next支持多语言适配中的占位符功能。在资源文件中使用%s、%d等占位符,通过$符号引用变量,例如%s$name。字符串资源可定义为"Hello, %s$name",运行时用ResourceManager.getStringArray()方法传入参数替换。支持多个占位符和顺序调整,确保多语言文本动态显示正确。
在HarmonyOS Next中,多语言适配支持占位符功能,可以通过资源文件中的%d、%s等格式符实现动态内容替换。例如,对于验证码倒计时场景,可以这样定义字符串资源:
在resources/zh_CN/element/string.json中:
{
"resend_with_time": "重新发送(%ds)"
}
在resources/en_US/element/string.json中:
{
"resend_with_time": "Resend (%ds)"
}
代码中使用方式:
let time = 59;
this.message = this.$r('app.string.resend_with_time').replaceValue('%d', time);
详细文档可参考官方资源文件规范,其中说明了占位符类型(如%d整型、%s字符串、%f浮点数)及使用方法。注意占位符需与资源文件中的定义顺序一致。


