如何绕过自动语言检测获取指定英文I18n文本?
获取特定语言(英文)I18n文本的方法
当然可以实现!在SAP UI5中,你完全不需要依赖自动检测的语言,直接创建指定语言的资源包实例就能稳定拿到对应文本。下面是具体的实现方案:
方案一:手动构造英文资源包
你可以用sap.ui.core.resource.ResourceBundle.createBundle()方法,直接生成英文版本的资源包,摆脱自动语言检测的限制。可以修改原有函数,或者新增一个专属函数:
fGetEnglishText: function(sText) { // 手动创建英文资源包,指定语言为"en" var oEnglishBundle = sap.ui.core.resource.ResourceBundle.createBundle({ url: this.getView().getModel("i18n").getProperty("/url"), // 复用原i18n模型的资源文件路径 locale: "en" // 强制指定英文区域设置 }); return oEnglishBundle.getText(sText); }
方案二:复用现有i18n模型配置
如果你的i18n模型已经配置好了正确的资源基础路径,也可以直接通过传入目标语言参数获取对应资源包:
fGetEnglishText: function(sText) { var oI18nModel = this.getView().getModel("i18n"); // 直接传入英文语言代码,获取对应资源包 var oEnglishBundle = oI18nModel.getResourceBundle("en"); return oEnglishBundle.getText(sText); }
小提示
- 确保
i18n_en.properties文件的路径和自动检测时的路径一致,避免找不到资源文件 - 如果之后需要固定获取其他语言的文本,只要把
locale参数改成对应的语言代码(比如阿拉伯语是"ar")就行
这样不管当前页面检测到的是什么语言,都能稳定获取到英文的i18n文本啦!
内容的提问来源于stack exchange,提问作者Abdulelah
相关产品推荐
相关产品推荐

