在HarmonyOS NEXT开发中Navigation的 .menus()方法中传入的value值(菜单名称)如何实现文字本地化?目前尝试给Navigation的 .menus()方法中传入的value值使用string资源
代码:value: $r(‘app.string.Page_close’)
报错:Type ‘Resource’ is not assignable to type ‘string’. <ArkTSCheck>
示例代码:
build() {
Navigation() {
Web({ src: this.webUrl, controller: this.controller })
.backgroundColor($r('app.color.start_window_background'))// .darkMode(WebDarkMode.Auto)
.darkMode(this.mode)//深色适配3
.forceDarkAccess(this.access)//深色适配4
//Web过滚动模式开启
.overScrollMode(OverScrollMode.ALWAYS)// 否允许加载超文本传输协议(HTTP)和超文本传输安全协议(HTTPS)混合内容,默认不允许加载HTTP和HTTPS混合内容。
.mixedMode(MixedMode.Compatible)
.onPageBegin((event) => {
this.pageEnd = false
})
.onPageEnd(() => {
this.pageEnd = true
if (this.webTitle == '') {
this.webTitle = this.controller.getTitle()
}
})
if (!(this.pageEnd)) {
LodingView() //等待指示器
}
}
.width('100%')
.height('100%')
.title(this.NavigationTitle)
.titleMode(NavigationTitleMode.Mini)
.hideBackButton(true)
.menus([{
value: '上一页', icon: 'resources/base/media/web_back.png', action: () => {
this.controller.backward()
}
},
{
value: '下一页', icon: 'resources/base/media/web_next.png', action: () => {
this.controller.forward()
}
},
{
value: '刷新', icon: 'resources/base/media/web_refresh.png', action: () => {
this.controller.refresh();
}
},
{
value: $r('app.string.Page_close'), icon: 'resources/base/media/web_close.png', action: () => {
router.back();
}
}
])
}
你可以将Resource类型转为资源对应的真实类型比如在string.json中定义了一个{“name”: “module_desc”,“value”: “module description”}的资源
可以通过$r(‘app.string.module_desc’)获取到Resource,也可以使用对应的方法如getStringByName获取到Resource对应的值(也就是"module description"字符串)参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...