Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 在应用程序中动态更改sap ui5应用程序区域设置_User Interface_Localization_Sapui5 - Fatal编程技术网

User interface 在应用程序中动态更改sap ui5应用程序区域设置

User interface 在应用程序中动态更改sap ui5应用程序区域设置,user-interface,localization,sapui5,User Interface,Localization,Sapui5,我的web应用程序中有两种不同的语言,即英语和德语,用户可以通过选择框更改应用程序中的语言。最初,我从后端获得首选语言,并将核心的语言环境设置如下 sap.ui.getCore().getConfiguration().setLanguage("//according to whatever is coming from back-end") 现在让我们假设初始语言为英语,若用户打开一个控件,即sap.m.datepicker,日历将以英语显示。如果用户从应用程序中将语言更改为德语,我将再次更

我的web应用程序中有两种不同的语言,即英语和德语,用户可以通过选择框更改应用程序中的语言。最初,我从后端获得首选语言,并将核心的语言环境设置如下

sap.ui.getCore().getConfiguration().setLanguage("//according to whatever is coming from back-end")
现在让我们假设初始语言为英语,若用户打开一个控件,即sap.m.datepicker,日历将以英语显示。如果用户从应用程序中将语言更改为德语,我将再次更改core中的语言,如下所示:

sap.ui.getCore().getConfiguration().setLanguage("de-DE")
现在,若用户打开同一个日期选择器,它将以英语而不是德语显示,若用户打开另一个控件或日期选择器,它将以德语呈现

更改应用程序中的语言时,页面未刷新。 请为我提供一个动态更改控件区域设置的解决方案。

也许我的回答有点帮助

问题是,在许多情况下,甚至在大多数情况下,标准UI5控件在加载时只检测一次语言。通常,控件开发人员没有实现语言的动态更改。如果你查看我上面提到的链接,你会发现有一些方法可以对语言的变化做出反应,但是很多时候,无论出于什么原因,都没有实现

但是,我不敢告诉您,在您的情况下,标准控件可能不支持开箱即用的动态语言更改,但我没有检查代码。此外,似乎在SAP的UI5家伙不认为这是一个bug看到这一点。真遗憾

我建议您使用sap.ui.core.core.AttachLocalizationChangedFunction、oListener,并将其添加到控制器的onInit功能中

在此基础上,在函数中重新生成要求区域设置更改为动态的控件

例如:

onInit: function(oEvent) {
    sap.ui.getCore().attachLocalizationChanged(this._handleLocalizationChanged, this);
},
_handleLocalizationChanged: function() {
    // ... Some logic to re-build / set locale for the dynamic controls.
}
这是我对根据报告中的信息应该做什么的解释