在HarmonyOS中设置应用语言为英文后,resourceManager取到的字符资源还是默认资源,而非对应的英文资源?

在HarmonyOS中设置应用语言为英文后,resourceManager取到的字符资源还是默认资源,而非对应的英文资源?

调用 getContext(this).getApplicationContext().setLanguage(‘en-US’) 设置应用为英文后,再使用getContext(this).resourceManager.getStringSync获取字符资源,获取到的string资源仍为中文的

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 735
1 个回答

需要使用Context.createModuleContext创建context,context不会跟随系统变化,需要重新创建,这个是规格。
参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...
参考示例如下:
index.ets代码如下

@Entry 
@Component 
struct Index { 
  private message: string = '' 
 
  aboutToAppear() { 
    getContext().getApplicationContext().setLanguage('en-US') 
    this.message = getContext(this).resourceManager.getStringSync($r('app.string.hello').id) 
  } 
 
  build() { 
    Column({ space: 20 }) { 
      Text($r('app.string.hello')) 
        .fontSize(30) 
 
      Text(this.message) 
        .fontSize(30) 
    } 
    .justifyContent(FlexAlign.Center) 
    .height('100%') 
    .width('100%') 
  } 
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进