我创建了我的.properties文件(它,en,fr)并设置了i18n模型
var oI18nModel = new sap.ui.model.resource.ResourceModel({
bundleUrl: "i18n/i18n.properties"
});
sap.ui.getCore().setModel(oI18nModel, "i18n");
this.setModel(oI18nModel, "i18n");
我的应用程序在意大利语中正确启动现在我有一个切换到en语言的按钮。这是代码:
var bundleLocale=sap.ui.getCore().getModel("i18n").getProperty("/bundleLocale/");
bundleLocale="en";
sap.ui.getCore().getModel("i18n").refresh(true);
但视图没有改变......
为什么?
开始时,i18n型号包含:
bundleUrl= "i18n/i18n.properties"
之后我执行此代码:
i18nModel = new sap.ui.model.resource.ResourceModel({
bundleUrl : "i18n/i18n.properties",
bundleLocale : "fr"
});
sap.ui.getCore().setModel(i18nModel, "i18n");
,模型现在包含
bundleUrl= "i18n/i18n.properties"
bundleLocale="fr"
相反,如果我使用此代码:
sap.ui.getCore().getConfiguration().setLanguage("fr")
i18n型号没有改变
在这两种情况下我的观点都没有改变
答案 0 :(得分:2)
在您的代码中,您从资源包中获取属性(即其中一个翻译),而不是实际的区域设置
此外,您正在设置变量bundleLocale
,但您从不使用该变量...
设置应用程序语言的正确方法是使用sap.ui.core.Configuration
setLanguage()
方法(请参阅https://sapui5.netweaver.ondemand.com/sdk/docs/api/symbols/sap.ui.core.Configuration.html#setLanguage)
作为替代方案,请使用您的资源模型提供区域设置:
setLanguage : function(sLanguage) {
i18nModel = new sap.ui.model.resource.ResourceModel({
bundleUrl : "i18n/i18n.properties",
bundleLocale : sLanguage
});
sap.ui.getCore().setModel(i18nModel, "i18n");
}
编辑:请参阅此工作示例http://plnkr.co/edit/pj6Ze1D60lrXQ47peowT?p=preview
使用视图中的开关在德语和英语UI语言之间切换
答案 1 :(得分:0)
我已经解决了我的问题!
在我的Component.js中,我写了init
函数:
var oI18nModel = new sap.ui.model.resource.ResourceModel({
bundleUrl: "i18n/i18n.properties"
});
sap.ui.getCore().setModel(oI18nModel, "i18n");
this.setModel(oI18nModel, "i18n");
并在createContent
函数中写过:
// create root view
var oView = sap.ui.view({
id: "app",
viewName: "stg.view.App",
type: "JS",
viewData: {
component: this
}
});
当我想改变我写的语言时:
var i18nModel = new sap.ui.model.resource.ResourceModel({
bundleUrl : "i18n/i18n.properties",
bundleLocale : sBundleLocale
});
sap.ui.getCore().setModel(i18nModel , "i18n");
但在这种模式下,我没有看到任何变化。 现在我写
var oApp = sap.ui.getCore().byId("app");
oApp.getViewData().component.setModel(i18nModel, "i18n");
它有效!!