В демонстрационном наборе UI5 Прохождение шаг 8 (до сих пор) упоминает следующее:
To be on the safe side, we would have to use a similar mechanism as in the controller to use a string from the resource bundle and replace parts of it. This can be done with the
jQuery.sap.formatMessage
formatter.
Его можно использовать для переводимых текстов с заполнителями в представлениях XML, например:
<Title text = "{
parts: [
'i18n>overflowToolbarTitle',
'appView>/listItemCount'
],
formatter: 'jQuery.sap.formatMessage'
}" />
Однако jQuery.sap.formatMessage
обесценивается с 1.58, и если я использую вместо предложенной альтернативы sap.base.strings.formatMessage
, выдается следующая ошибка:
formatter function sap.base.strings.formatMessage not found!
Как новый модуль formatMessage
можно использовать в XML?
С commit:2dab48e
теперь можно декларативно требовать модули в XML-представлениях:
<Title xmlns = "sap.m" xmlns:core = "sap.ui.core"
core:require = "{ formatMessage: 'sap/base/strings/formatMessage' }"
text = "{
parts: [
'i18n>overflowToolbarTitle',
'appView>/listItemCount'
],
formatter: 'formatMessage'
}"
/>
Благодаря этому мы можем избежать зависимости от промежуточного контроллера и использовать новый модуль независимо.
UI5 в настоящее время не позволяет извлекать и назначать модуль formatter
.1 Кроме того, новый функциональный модуль никогда не экспортируется с именем 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 поддерживает извлечение и назначение модулей в определении привязки в более поздних версиях, но на момент написания статьи это было невозможно.
1 Related enhancement request: https://github.com/SAP/openui5/issues/2475