Я использую Framework7 для создания мобильного приложения. Это приложение должно иметь возможность изменить язык. Для этого я использую объект с ключом для языка, который содержит объект с ключами для идентификации текста и текста для вставки. Это выглядит так:
var translations = {
"en": {
"btn-confirm": "Confirm",
"btn-decline": "Decline"
},
"de": {
"btn-confirm": "Bestätigen",
"btn-decline": "Abbrechen"
}
};
Я создал такой диалог:
var dialog_appReset = app.dialog.create({
title: 'Warning!',
text: 'You are resetting the app. Are you sure?',
buttons: [
{
text: 'Confirm',
onClick: function() {
console.log('confirmed');
}
},
{
text: 'Decline',
onClick: function() {
console.log('declined');
}
}
]
});
Теперь я хочу изменить содержимое диалога при смене языка. Для этого я получаю перевод для элемента для выбранного языка и хочу заменить текст.
Существуют методы для изменения заголовка и текста диалога, но не для текстов кнопок.
Поэтому я попытался изменить текст кнопки следующим образом: dialog_appReset.buttons[0].text = 'Bestätigen'
, что изменяет содержимое, но не обновляет диалоговое окно.
После некоторых попыток у меня появилось решение обновить тексты кнопок, но это не очень красиво:
- Получить фактические параметры диалога
var tempDialogParams = dialog_appReset.params;
- Обновить эти параметры
tempDialogParams.buttons[0].text = translations['de'].btn-confirm;
tempDialogParams.buttons[1].text = translations['de'].btn-decline;
- Уничтожить текущий диалог
dialog_appReset.destroy();
- Создать новый диалог
dialog_appReset = app.dialog.create(tempDialogParams);
Это единственный способ обновить текст кнопки для инициализированного диалога? Или есть более привлекательный способ для этого?
Примечание: в настоящее время я использую Framework7 v3 , но я не могу найти путь и в v4.