2017-01-23 5 views
0

У меня есть два разных языка на английском и немецком языках в моем веб-приложении, и пользователь может изменить язык в приложении через поле выбора. Вначале я получаю предпочтительный язык из внутреннего интерфейса, и я устанавливаю локаль ядра следующим образом.Динамическое изменение языка приложения sap ui5 в приложении

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

Теперь давайте говорить начальный язык английский, если пользователь откроет контроль sap.m.datepicker т.е., календарь отображается на английском языке. Если пользователь меняет язык на немецкий из приложения я снова изменяющемся язык в ядре, как показано ниже:

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

Теперь, если пользователь открывает тот же DatePicker, он отображается на английском языке, а не немецкий, а если пользователь открывает какой-то другой элемент управления или datepicker, который выполняется на немецком языке.

Страница не обновляется при изменении языка в приложении. Пожалуйста, предложите мне решение для динамического изменения языка управления.

ответ

1

Может быть, мой ответ here помогает немного.

Проблема в том, что во многих случаях, даже в большинстве случаев, стандартные элементы управления UI5 определяют язык только один раз, когда они загружаются. Очень часто разработчики управления не применяли «динамическое изменение» языка. Если вы проверите ссылку, о которой я упоминал выше, вы увидите, что есть способы реагировать на изменения языка, но очень часто это не выполняется по какой-либо причине.

Однако, я боюсь сказать, что в вашем случае стандартный элемент управления может не поддерживать динамические изменения языка из коробки (но я не проверял код). Кроме того, похоже, что ребята из UI5 в SAP не считают это ошибкой (см. Этот github issue). Такая жалость ...

0

Я предлагаю вам использовать sap.ui.core.Core.attachLocalizationChanged(fnFunction, oListener) и добавить это в функцию вашего контроллера. onInit.

Оттуда в вашем fnFunction перестройте элементы управления, в которых требуется, чтобы изменения в локали были динамическими.

пример:

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

Это моя интерпретация того, что должно быть сделано на основе информации, содержащейся в api

 Смежные вопросы

  • Нет связанных вопросов^_^