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

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

阅读 405
1 个回答

需要使用Context.createModuleContext创建context,context不会跟随系统变化,需要重新创建,这个是规格。

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-context-V5\#contextcreatemodulecontext

参考示例如下:

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%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏