【发布时间】:2016-03-15 15:13:34
【问题描述】:
我正在开发一个 require.js 应用程序来本地化它。我们的 nls 文件位于特定的文件夹结构中。
nls/
fr/
register.js
...
register.js
当我们将应用程序推送到生产环境时,我们的构建系统会为所有文件添加一个内部版本号,例如 main.54b8801bf2c6e13b.js。 这在我的机器上本地工作,因为我们不添加唯一编号。
Require.js 不会在子文件夹中引入任何 js 文件,例如 nls/fr/register.js 不会被加载到 main.js 包中(预期)。当我们的应用在 staging 中遇到这个问题时,它会从 CND 中提取 nls/fr/register.js,但会查找 nls/fr/register.js 而不是 nls/fr/register.54b8801bf2c6e13b.js(是的文件存在于我们的 CDN 中)
有谁知道动态让 require.js 查找 nls/fr/register.54b8801bf2c6e13b.js 的方法。我认为我们之前没有遇到过这种情况,因为所有 JS 文件都加载到 main.js 文件中(如果更容易,我也不反对在这里这样做)
nls/register.js
define(['text!json/root/register.json', 'settings'], function(json, settings) {
return {
"fr": true
}
});
nls/fr/register.js
define(['text!json/fr/register.json'], function(json) {
return JSON.parse(json);
});
views/register.js
define([
'jquery',
'plugins/ui.1.11.0',
'underscore',
'backbone',
'views/base_view',
'settings',
'utils/gtm',
'utils/storage',
'text!templates/login_registration/registration_modal.html',
'i18n!nls/register'
], function($, jquery_ui_is_jquery_plugin, _,
Backbone,
BaseView,
Settings,
gtm,
Storage,
Template_Registration,
RegisterLocales) {
//code to get locales and set up view
}
【问题讨论】:
-
我会用您不反对的解决方案来回答:预编译您的 require 项目以将所有 i18n 寄存器文件加载到 main.js 中
-
这和backbone.js有什么关系..? .~.
-
HTML 页面中的内部版本号是否可以提取并正确映射?
标签: javascript backbone.js internationalization requirejs