如何解决 SAP UI5 错误消息 - Could not find any translatable text for key appTitle

问题症状

在 Chrome 开发者工具 console 面板看到如下错误消息:

Assertion failed: Could not find any translatable text for key ‘appTitle’ in bundle file(s)

单击 assert-dbg.js 超链接,就能进入到抛出这行错误消息的代码位置:

设置断点,等断点停下来之后,观察调用栈上下文,注意到 ResourceBundle.getText 和我们应用程序自己编写的 locate-reuse-libs.js 内部,能找到这个 Resource Bundle 对应的文件是 i18n/i18n.properties:

在 Chrome 开发者工具 network 面板里观察到这个文件没有加载成功,返回 404 错误:

关于 i18n.properties 文件的更多介绍,可以参考笔者的教程:

在 SAP UI5 应用中,通常会有一个名为 “i18n” 的文件夹,这个文件夹中包含了一个或多个 “.properties” 文件,这些文件用于存储不同语言环境的文本信息。默认的语言文件通常被命名为 “i18n.properties”,而其他语言环境的文件则会附加相应的语言和国家代码,例如 “i18n_zh_CN.properties”,“i18n_de_DE.properties” 等。

在 “i18n.properties” 文件中,你可以定义一些键值对,每一个键对应一个特定的文本消息。这个键是唯一的,而值则是对应语言环境的文本。例如:

welcomeMessage = Welcome to our application!

在 “i18n_zh_CN.properties” 文件中,你可能会有:

welcomeMessage = 欢迎使用我们的应用程序!

在 SAP UI5 应用中使用这些消息非常简单。首先,你需要在你的视图或控制器中初始化一个 sap.ui.model.resource.ResourceModel 对象,然后设置这个模型为你的视图或应用的模型。例如:

var i18nModel = new sap.ui.model.resource.ResourceModel({
    
    
    bundleName: "my.app.i18n.i18n"
});
this.getView().setModel(i18nModel, "i18n");

一旦你设置了这个模型,你就可以在你的视图或控制器中使用 {i18n>welcomeMessage} 来引用这个消息。这样,无论你的用户使用什么语言环境,他们都会看到对应的欢迎消息。

另外一种常见的使用场景是在 JavaScript 代码中获取这些消息。你可以使用 ResourceModelgetResourceBundle 方法获取到一个资源束(Resource Bundle),然后使用这个资源束的 getText 方法获取到特定的消息。例如:

var i18nModel = this.getView().getModel("i18n");
var resourceBundle = i18nModel.getResourceBundle();
var welcomeMessage = resourceBundle.getText("welcomeMessage");

SAP UI5 将会自动根据用户的语言环境选择正确的 “.properties” 文件。如果找不到对应的文件,或者在对应的文件中找不到特定的键,SAP UI5 将会使用 “i18n.properties” 文件中的消息。

使用 “i18n.properties” 文件的好处是显而易见的。首先,这种方式使得你的应用具有了国际化的能力,可以很容易地支持多种语言。其次,它使你的代码和文本消息分离,使得代码更加易于维护。

猜你喜欢

转载自blog.csdn.net/i042416/article/details/132150364