gpt4 book ai didi

javascript - 在 Backbone 应用程序中重新加载主干 View 和 i18n 翻译文件?

转载 作者:行者123 更新时间:2023-11-28 00:52:05 25 4
gpt4 key购买 nike

我在 BackboneJS 应用程序中使用 i18n.js 进行文本本地化。但陷入了我需要在应用程序中更改语言时重新加载文本翻译的阶段。我在语言更改时调用设置 view render() 函数,但对我不起作用,但在重新加载 index.html 时它起作用。那么我如何重新加载翻译文件并查看以反射(reflect)更改。以下是我尝试过的--

应用程序引导.js

var locale = {};

locale.language = "en-us";//default

locale.setLanguage = function (language) {
localStorage.setItem('localLanguage', '' + language);
};

locale.getLanguage = function () {
return localStorage.getItem('localLanguage');
};
require.config({
config: {
i18n: {
locale: locale.getLanguage()
}
}
});

settingView.js

define(['compiled/settingTmpl','i18n!nls/setting'
], function (SettingTmpl,setting) {
'use strict';

var SettingView = Backbone.View.extend({

events: {
"change #languageSelect": "changeLocale"
},
initialize: function () {
WellNation.helper.log("Setting view initialize");
this.render();
},
changeLocale: function (e) {
var locale = e.currentTarget.value;
WellNation.locale.setLanguage(locale);
this.render();
},
render: function () {
this.$el.html(SettingTmpl({speak:setting}));
return this;
}
});

return SettingView;
});

设置Tmpl.handlebars

<div class="row">
<label>{{speak.language}}</label>
<select id="languageSelect">
<option value="en-us">English (United States)</option>
<option value="fr-fr">Francais (France)</option>
</select>
</div>

nls/fr-fr/setting.js

  define({
"language" : "langue"
});

nls/setting.js

  define({
"root" : {
"language" : "Language"
},
"fr-fr" : true // The system will accept French
});

最佳答案

根据this所以问题和this github issue无法使用 i18n.js 在运行时更改区域设置。

从官方文档来看,并不清楚我们是否可以在运行时使用它:RequireJS 将使用浏览器的 navigator.language 或 navigator.userLanguage 属性来确定要使用的区域设置值my/nls/colors,因此您的应用程序不必更改。如果您喜欢设置区域设置,您可以使用模块配置将区域设置传递给插件"

因此,经过一些研究并遍历 i18n.js 源代码后,我发现最好的解决方案是保持相同的结构并使用 location.reload()

关于javascript - 在 Backbone 应用程序中重新加载主干 View 和 i18n 翻译文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26650501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com