i18n 在切换语言时,是不会刷新浏览器的
ueditor 为什么切换不了多语言
f = UE.Editor = function(a) {
var d = this;
d.uid = e++, EventBase.call(d), d.commands = {}, d.options = utils.extend(utils.clone(a || {}), UEDITOR_CONFIG,
!0), d.shortcutkeys = {}, d.inputRules = [], d.outputRules = [], d.setOpt(f.defaultOptions(d)), d.loadServerConfig(),
utils.isEmptyObject(UE.I18N) ? utils.loadFile(document, {
src: d.options.langPath + d.options.lang + "/" + d.options.lang + ".js",
tag: "script",
type: "text/javascript",
defer: "defer"
}, function() {
UE.plugin.load(d), c(d)
}) : (d.options.lang = b(UE.I18N), UE.plugin.load(d), c(d)), UE.instants["ueditorInstant" + d.uid] = d
};
原因在这里:
(d.options.lang = b(UE.I18N)
b方法是在 UE.I18N 中寻找,只要有语言就返回,也就是返回第一个
function b(a) {
for (var b in a) return b
}
而我们改变语言时 还是取的第一个
所以我们只要
import "@public/lib/UEditor/lang/zh-cn/zh-cn.js";
import "@public/lib/UEditor/lang/en/en.js";
if (Object.keys(UE.I18N).length > 1) {
// 浅拷贝 UE.I18N 的属性 到 UE.I18N1
UE.I18N1 = Object.assign({}, UE.I18N);
}
UE.I18N = {};
// 重新赋值语言
UE.I18N[this.config.lang] = UE.I18N1[this.config.lang];
即可
当然最优的方式是使用 ueditor的 utils.loadFile
不过等他加载完毕,又给合到了UE.I18N
里面,到时候切换多语言还有问题