2017-01-23 6 views
0

Ich habe zwei verschiedene Sprachen, d. H. Englisch und Deutsch in meiner Webanwendung und Benutzer können die Sprache in der Anwendung durch eine Auswahlbox ändern. Anfangs bekomme ich bevorzugte Sprache vom Backend und setze das Locale des Kerns wie folgt.Ändern von SAPU Application Locale dynamisch in der Anwendung

sap.ui.getCore().getConfiguration().setLanguage("//according to whatever is coming from back-end") 

Nehmen wir an, die Ausgangssprache ist Englisch. Wenn der Benutzer ein Steuerelement öffnet, d. H. Sap.m.datepicker, wird der Kalender in Englisch angezeigt. Wenn der Benutzer ändert sich die Sprache auf Deutsch von der Anwendung i wieder die Sprache im Kern am Wechsel wie folgt:

sap.ui.getCore().getConfiguration().setLanguage("de-DE") 

Nun, wenn Benutzer öffnet das gleiche picker, wird es statt Deutsch in Englisch angezeigt wird und wenn der Benutzer Öffnet ein weiteres Steuerelement oder einen Datumszeiger, der auf Deutsch gerendert wird.

Die Seite wird beim Ändern der Sprache in der App nicht aktualisiert. Bitte schlagen Sie mir eine Lösung vor, um das Gebietsschema der Steuerelemente dynamisch zu ändern.

Antwort

1

Vielleicht hilft meine Antwort here ein wenig.

Das Problem ist, dass in vielen Fällen, sogar in den meisten Fällen, die Standard-UI5-Steuerelemente die Sprache nur einmal erkennen, wenn sie geladen werden. Sehr oft haben die Steuerungsentwickler keine "dynamische Änderung" der Sprache implementiert. Wenn Sie den oben erwähnten Link überprüfen, werden Sie sehen, dass es Möglichkeiten gibt, auf Sprachänderungen zu reagieren, aber sehr oft wird dies aus irgendeinem Grund nicht implementiert.

Allerdings habe ich Angst, Ihnen zu sagen, dass in Ihrem Fall das Standard-Steuerelement dynamische Sprachänderungen nicht standardmäßig unterstützt (aber ich habe den Code nicht überprüft). Es scheint auch, dass die Jungs von UI5 bei SAP dies nicht als Fehler betrachten (siehe github issue). So ein Mitleid ...

0

Ich würde vorschlagen, Sie verwenden sap.ui.core.Core.attachLocalizationChanged(fnFunction, oListener) und fügen Sie dies zu der onInit Funktion Ihres Controllers.

Von diesem, in Ihrem fnFunction erstellen Sie die Steuerelemente, wo Sie die Gebietsschema Änderungen dynamisch sein müssen.

Beispiel:

onInit: function(oEvent) { 
    sap.ui.getCore().attachLocalizationChanged(this._handleLocalizationChanged, this); 
}, 
_handleLocalizationChanged: function() { 
    // ... Some logic to re-build/set locale for the dynamic controls. 
} 

Das ist meine Interpretation ist, was sollte in der api

auf der Basis der Informationen erfolgen
Verwandte Themen