2015-04-14 3 views
1

У меня есть код, который проверяет ответ от сервера и показывает окно сообщения в соответствии с полученной информацией. У меня эти сообщения на двух языках (пользователь выбирает язык во время входа в систему). Вот пример:Модель i18n не работает должным образом

if(sResponse == 'IDfail'){ 
    sap.m.MessageBox.alert 
    ("{i18nResourceModel>idnotnine}", 
     {icon: sap.m.MessageBox.Icon.ERROR, 
     title: "{i18nResourceModel>error}"} 
    ); 
} 

Здесь i18n модель декларации (она объявлена, прежде чем я использовать модель, конечно):

var oResourceModel = new sap.ui.model.resource.ResourceModel 
    ({bundleUrl: "i18n/i18n.properties", bundleLocale: "en"}); 
sap.ui.getCore().setModel(oResourceModel, "i18nResourceModel"); 

У меня есть 2 .properties файлы: i18n.properties (английский) и i18n_iw.properties (иврит).

Странно, что поле сообщения title переведено правильно, но вместо самого сообщения я вижу текст: «i18nResourceModel> idnotnine».

Он работал хорошо, и я не могу понять, что произошло.

Что может быть причиной этой проблемы и как ее исправить?

спасибо.

+0

У вас есть idnotnine = некоторый текст в файле .properties? –

+0

@jumpifzero уверенный, я. Более того, если я помещаю '' {i18nResourceModel> idnotnine} "' в качестве текста 'title', я правильно вижу сообщение. – keshet

ответ

3

Данные привязки обычно не работают при вызове функции, например sap.m.MessageBox.alert(). Вы должны получить текст вручную нравится:

var resourceModel = sap.ui.getCore().getModel("i18nResourceModel"); 
var alertText = resourceModel.getProperty("idnotnine"); 
var alertTitle = resourceModel.getProperty("error"); 

sap.m.MessageBox.alert(alertText, { 
      icon: sap.m.MessageBox.Icon.ERROR, 
      title: alertTitle 
     } 
); 

Кроме того, вы можете посмотреть на последнюю руководство о том, как использовать ResourceBundle here.

+0

Я пробовал что-то вроде вашего кода, и это действительно работает. Мое разочарование исходит из того факта, что databinding DID работает, и теперь он не работает ТОЛЬКО в теле сообщения. Все контрольные метки и заголовки сообщений прекрасно. – keshet

+0

У меня есть ваше мнение. На самом деле я действительно удивляюсь, почему это сработало для вас раньше. Согласно документации SAPUI5/OpenUI5 синтаксис привязки данных работает только для элементов управления, наследуемых от ManagedObject. –

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