我正在使用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');
}
}
]
});
现在,我想在语言更改时更改对话框的内容。为此,我正在获取所选语言的项目翻译,并希望替换文本。
对话框中有methods for changing the title and the text,但按钮文本中没有。
所以我试图像这样更改按钮文本: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中也找不到方法。
答案 0 :(得分:0)
更改已打开对话框上的文本是反模式恕我直言。对话框是用户可以与之交互的唯一内容,因此用户在打开对话框时不应更改语言,因此您无需即时更新按钮文本。
如果这是一个多客户端同步的分布式系统,并且您需要反映远程用户对语言设置的更改,那么让客户端在最方便的时间(例如,当没有对话框显示在屏幕上),无论如何您都不需要立即更改它。