#sapui5
Вопрос:
Я использую визфрейм круговой диаграммы и хочу сделать его переводимым.
—> тексты i18n>
В справочнике API для определения измерений и определения размеров написано
имя : Название меры, отображаемое на диаграмме
Таким образом, имя-это свойство, которое определяет, как называются мои Мера и измерение.
Если я использую жесткую строку, это работает.
Если я использую текст i18n, это не так.
Я думаю, это потому values
, что свойство элемента FeedItem, по-видимому, должно совпадать name
с мерой и измерением свойства. Но это только предположение из того, что я вижу в образцах демонстрационного комплекта…
Кто-нибудь знает, как я могу использовать тексты i18n в VizFrame?
Код:
<viz.data:dimensions>
<viz.data:DimensionDefinition name="{i18n>material}"
value="{odataModel>MaterialText}" />
</viz.data:dimensions>
<viz.data:measures>
<viz.data:MeasureDefinition name="{i18n>sales}"
value="{odataModel>Sales}" />
</viz.data:measures>
Ошибка:
Не пойманный (в обещании) Ошибка: «продажи» имеет тип string, ожидается, что любой[] для свойства «значения» элемента sap.viz.ui5.controls.common.корма.Элемент питания#__элемент4
Ответ №1:
Вы правы насчет FeedItem
этого . Недвижимость values
должна соответствовать вашим размерам/размерам.
Вот как вы можете передать свой переводимый текст в виде массива строк, а не просто простой строки (используя трюк, известный как привязка выражений):
<viz.feeds:FeedItem uid="..."
type="Dimension"
values="{= [${i18n>material}] }" />
После этого сообщение об ошибке должно исчезнуть, и ваша диаграмма будет содержать переведенную метку оси
Вы даже можете вызывать формататоры таким образом
<viz.feeds:FeedItem uid="valueAxis"
type="Measure"
values="{= [${ path: 'viewModel>/propertyOfViewModel', formatter: 'Formatter.formatStuff' }] }" />
Ответ №2:
Ну, одним из способов может быть использование фабрики для соответствующей агрегации. На заводе вы можете клонировать какой-либо элемент шаблона, и вместо текста привязки вы можете динамически назначить «жесткий», например:
myDimensionFactory: function(sId, oContext){
const oBundle = this.getModel('i18n').getResourceBundle();
return this.byId('templateItemId').clone(sId)
.setName(oBundle.getText('sales'));
//or whatever you need translated,
//you can also use oContext if you want to translate something from the model
}
Комментарии:
1. как вы используете заводские функции для агрегирования в xml?
2. Функция фабрики-это функция, которая создает элементы для привязки агрегации. Даже сейчас вы используете один из них — по умолчанию. Вы можете переопределить его в xml. Обратитесь к этому образцу для получения более подробной информации: sapui5.hana.ondemand.com/sdk/#/topic/…