在XML视图中将新的formatMessage用于带有占位符的可翻译文本

时间:2019-04-09 06:56:45

标签: sapui5

在UI5演示工具包Walkthrough step 8中(仍)在注释中

  

为了安全起见,我们将必须使用与控制器中类似的机制来使用资源束中的字符串并替换其中的一部分。可以使用jQuery.sap.formatMessage格式化程序来完成。

它可用于XML视图中带有占位符的可翻译文本,例如:

<Title text="{
  parts: [
    'i18n>overflowToolbarTitle',
    'appView>/listItemCount'
  ],
  formatter: 'jQuery.sap.formatMessage'
}" />

但是,jQuery.sap.formatMessage从1.58开始贬值,如果我改用建议的替代方案sap.base.strings.formatMessage,则会引发以下错误:

  

未找到格式化程序函数sap.base.strings.formatMessage!

如何找到新的formatMessage

1 个答案:

答案 0 :(得分:1)

UI5当前不允许获取模块并将模块分配给formatter。此外,新功能模块永远不会以名称sap.base.strings.formatMessage导出。src

一种替代方法是指向控制器中分配的方法,而该方法指向所需的formatMessage模块。

<Title text="{
  parts: [
    'i18n>overflowToolbarTitle',
    'appView>/listItemCount'
  ],
  formatter: '.formatMessage'
}"/>
sap.ui.define([
  "sap/ui/core/mvc/Controller",
  "sap/base/strings/formatMessage",
  // ...
], function(Controller, formatMessage/*, ...*/) {
  "use strict";

  return Controller.extend("...", {
    formatMessage: formatMessage,
    // ...
  });
})

我可以想象UI5在更高版本中支持在绑定定义中获取和分配模块,但是在撰写本文时是不可能的。