首页 > 解决方案 > 为 VizFrames DimensionDefinition 和 MeasureDefinition 使用 i18n 文本

问题描述

我正在使用饼图 vizFrame 并希望使其可翻译。
--> i18n texts
API Reference 中写了 MeasureDefinition 和 DimensionDefinition

name :图表中显示的度量名称

所以 name 是决定如何命名我的 Measure 和 Dimension 的属性。
如果我使用硬字符串,它可以工作。
如果我使用 i18n 文本,它不会。
我认为这是因为valuesFeedItem 的 Property 似乎需要与nameProperty Measure 和 Dimension 相同。但这只是我在演示工具包示例中看到的猜测......

有谁知道我如何在 VizFrame 中使用 i18n 文本?

代码:

<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>

错误:

未捕获(承诺中)错误:“销售”是字符串类型,对于元素 sap.viz.ui5.controls.common.feeds.FeedItem#__item4 的属性“值”应为任何 []

标签: sapui5

解决方案


好吧,一种方法是使用工厂进行相应的聚合。在工厂中,您可以克隆一些模板项,而不是绑定文本,您可以动态分配“硬”项,例如:

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
}

推荐阅读