如何更改SAPUI5语言?

时间:2014-11-21 14:03:03

标签: internationalization sapui5

我正在寻找一种方法来“完全”更改SAPUI5中使用的语言。 使用属性文件更改语言似乎不是问题,一个工作示例:

new sap.m.Switch({
    state : false,
    customTextOn : "EN",
    customTextOff : "DE",
    visible : true,
    change : [ function(oEvent) {
        var control = oEvent.getSource();
        var state = control.getState();
        if (state) {
            i18nModel = new sap.ui.model.resource.ResourceModel({bundleUrl:"i18n/i18n.properties", bundleLocale:"en"});
            sap.ui.getCore().setModel(i18nModel, "i18n");
        } else {
            i18nModel = new sap.ui.model.resource.ResourceModel({bundleUrl:"i18n/i18n.properties", bundleLocale:"de"});
            sap.ui.getCore().setModel(i18nModel, "i18n");
        }
    }, this ]
}),

按开关按钮将立即更改绑定到“i18n>”的文本模型。 问题是,我也有来自oData服务的元数据(特别是标签)的文本。

绑定路径可能如下所示:

{modelName>/#Entity/Attribute/@sap:label} 

首次登录时定义了此语言。现在我正在寻找一种在语言更改后重新加载元数据(以及数据)的方法。

有没有办法这样做?或者是退出并再次登录的唯一方法?

3 个答案:

答案 0 :(得分:2)

您可能需要重新启动ODataModel

var oModel = new sap.ui.model.odata.ODataModel("/your_odata_service",
                  {metadataUrlParams:{"sap-language":"de"}}
             );

这样,它会再次通过OData检索德语的$metadata?sap-language=de元数据。

它刚刚脱离我的脑海。你可以尝试一下。

答案 1 :(得分:1)

谢谢!我有一个问题需要更改smartforms / smartfields用于标签的语言,因为我无法控制在metadata.xml文件中声明标签的语言。艾伦解决方案为我工作!我正在使用SAP Web IDE并且我更改了manifest.json文件,添加此行是原则或主要(无名,“”)模型定义:

"models": {
        "i18n": {
            "type": "sap.ui.model.resource.ResourceModel",
            "settings": {
                "bundleName": "mpo.i18n.i18n"
            }
        },
        "": {
            "dataSource": "mainService",
            "settings": {
                "defaultBindingMode": "TwoWay",
                "metadataUrlParams": {
                    "sap-documentation": "heading",
                    "sap-language": "en"
                }
            },

谢谢艾伦!

答案 2 :(得分:0)

艾伦几乎是对的。

为了使用额外的sap-language参数重新加载元数据文件,您需要先破坏模型,然后reinit新模型。重要的是,您没有相同服务的任何其他ODataModel实例。

this.getModel().destroy();
var oModel = new sap.ui.model.odata.v2.ODataModel("/youService", {
    metadataUrlParams: {"sap-language":"de"}
});