【发布时间】:2015-01-30 14:50:27
【问题描述】:
我正在使用 Knockout.js V3 和 RequireJS 开发一个 SPA。
我有 ko 组件是这样写的:
define(['text!settings.html'],
function( htmlString) {
'use strict';
function SettingsViewModel(params) {
...
}
// Return component definition
return {
viewModel: SettingsViewModel,
template: htmlString
};
});
现在我想支持本地化,为此我为每种支持的语言复制了 html,例如:
en/settings.html
de/settings.html
se/settings.html
我想让用户更改语言并用新语言刷新应用程序,是否可以指示要求文本插件将语言前缀添加到所有 html,所以当我写的时候:
text!settings.html
它将实际加载:
text!de/settings.html
【问题讨论】:
-
你看过 i18n 插件吗? requirejs.org/docs/api.html#i18n 但是,这也可能对更改区域设置后如何重新加载您的内容感兴趣:github.com/jrburke/requirejs/issues/213
-
@PabloRomeo - 谢谢,不幸的是,它是一个大应用程序,i18n 和 l10n 已经以某种方式实现(复制每种语言的 html 文件),所以我无法改变它以按照 requireJS 想要的方式工作.
-
哦,我明白了。好吧,也许 require.replace 插件(github.com/SBoudrias/require.replace)可以这样改变路径,但仍然不会破坏 r.js
-
看起来很有希望,我一定会看看
-
不幸的是替换插件只支持 js 而不是 HTML :(
标签: javascript html knockout.js requirejs single-page-application