HarmonyOS 鸿蒙Next中最近在做多语言适配,有没有占位符的功能

HarmonyOS 鸿蒙Next中最近在做多语言适配,有没有占位符的功能 举个例子
发送验证码 有一个 倒计时功能
发完验证码 会有一个 重新发送(59s)
然后现在翻译成英文的话 中间 那个倒计时是动态的
翻译成英语的 话就是 Resend (59s)

有没有相关的文档啥的,这边需要动态传入 整数,字符串等

10 回复

那看看这个:多语言支持

但是要注意,文档好像有点问题,这里要参考一下其他开发者测试出来的这个:多语言占位符顺序

更多关于HarmonyOS 鸿蒙Next中最近在做多语言适配,有没有占位符的功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


有的兄弟有的:

$r('app.string.privacy_title', $r('app.string.app_name')) 这样就可以了,自动拼

cke_2426.png

cke_1546.png

我试试,

为啥不能把(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浮点数)及使用方法。注意占位符需与资源文件中的定义顺序一致。

回到顶部