将国际化文本用于 VizFrames DimensionDefinition 和 MeasureDefinition
using i18n Texts for VizFrames DimensionDefinition and MeasureDefinition
我正在使用饼图 vizFrame 并希望使其可翻译。
--> i18n 文本
在 API 中,MeasureDefinition 和 DimensionDefinition 的参考被写入
name : Name of the measure as displayed in the chart
所以名称是 属性,它决定了我的度量和维度的命名方式。
如果我使用硬弦,它会起作用。
如果我使用 i18n 文本,它不会。
我想是因为 FeedItem 的 values
属性 貌似需要和 name
属性 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>
错误:
Uncaught (in promise) Error: "sales" is of type string, expected any[] for property "values" of Element sap.viz.ui5.controls.common.feeds.FeedItem#__item4
嗯,一种方法是使用工厂进行相应的聚合。在工厂中,您可以克隆一些模板项,而不是绑定文本,您可以动态分配 'hard' 一个,例如:
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
}
关于 FeedItem
你说得对。 属性 values
必须与您的 dimensions/measures.
匹配
以下是如何将可翻译文本作为字符串数组传递,而不仅仅是一个简单的字符串(使用技巧 ExpressionBinding):
<viz.feeds:FeedItem uid="..."
type="Dimension"
values="{= [${i18n>material}] }" />
此后错误消息应该消失,您的图表将包含一个翻译后的轴标签
您甚至可以通过这种方式调用格式化程序
<viz.feeds:FeedItem uid="valueAxis"
type="Measure"
values="{= [${ path: 'viewModel>/propertyOfViewModel', formatter: 'Formatter.formatStuff' }] }" />
我正在使用饼图 vizFrame 并希望使其可翻译。
--> i18n 文本
在 API 中,MeasureDefinition 和 DimensionDefinition 的参考被写入
name : Name of the measure as displayed in the chart
所以名称是 属性,它决定了我的度量和维度的命名方式。
如果我使用硬弦,它会起作用。
如果我使用 i18n 文本,它不会。
我想是因为 FeedItem 的 values
属性 貌似需要和 name
属性 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>
错误:
Uncaught (in promise) Error: "sales" is of type string, expected any[] for property "values" of Element sap.viz.ui5.controls.common.feeds.FeedItem#__item4
嗯,一种方法是使用工厂进行相应的聚合。在工厂中,您可以克隆一些模板项,而不是绑定文本,您可以动态分配 'hard' 一个,例如:
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
}
关于 FeedItem
你说得对。 属性 values
必须与您的 dimensions/measures.
以下是如何将可翻译文本作为字符串数组传递,而不仅仅是一个简单的字符串(使用技巧 ExpressionBinding):
<viz.feeds:FeedItem uid="..."
type="Dimension"
values="{= [${i18n>material}] }" />
此后错误消息应该消失,您的图表将包含一个翻译后的轴标签
您甚至可以通过这种方式调用格式化程序
<viz.feeds:FeedItem uid="valueAxis"
type="Measure"
values="{= [${ path: 'viewModel>/propertyOfViewModel', formatter: 'Formatter.formatStuff' }] }" />