У меня есть установка requireJS с предварительно скомпилированными шаблонами Handlebars и моими переводами i18next в базе данных. Мне нужно сделать несколько вещей, в следующем порядке:Загрузите переводы (i18next) с помощью requireJS и предварительно скомпилированных шаблонов Handlebars
- загружать мои переводы из базы данных
- Регистрация помощник в Рули, так что мои ценности в моих скомпилированных шаблонов могут быть переведены
Мои requireJS конфигурационный файл выглядит следующим образом:
require.config({
deps: ["main"],
paths: {
'handlebars.runtime': "../assets/js/libs/handlebars.runtime.amd.min",
i18n: "../assets/js/libs/i18next-1.7.1",
// Shim Plugin
use: "../assets/js/plugins/use"
},
use: {
i18n: {
attach: "i18n"
}
}
});
Мой main.js
файл выглядит так, что требует namespace.js
:
require([
'namespace',
'modules/Transport'
], function (
namespace,
$,
Transport
) {
var Router = Backbone.Router.extend({
routes: {
'*any': 'any'
},
Мой namespace.js
попытается зарегистрировать помощник Рулей и инициализировать i18next с переводами:
define([
"handlebars.runtime",
"use!i18n"
], function(
Handlebars,
i18n
) {
var defaultLanguage = 'en';
var translations;
$.when(
$.getJSON('/api/translations', function (result) {
translations = result;
})
).then(function() {
i18n.init({ useCookie: false, resStore: translations, lng: defaultLanguage });
Handlebars.default.registerHelper('t', function(i18n_key) {
var result = i18n.t(i18n_key);
return new Handlebars.default.SafeString(result);
});
});
Моего modules/Transport.js
модуль, будет зависеть от namespace.js
и загрузит прекомпилированный шаблон. При загрузке предварительно скомпилированного шаблона он становится доступным в Handlebars.default.templates
. Так что мой модуль выглядит следующим образом:
define([
'namespace',
'templates/compiled/transport_template'
], function(
namespace,
) {
i18n.t('translate something');
var template = Handlebars.default.templates['transport_template'];
У меня есть проблема в том, что я не могу сделать requireJS сначала загрузить переводы и после этого приступить к регистрации помощника и сделать некоторые переводы в моих модулях. Модули и шаблоны загружаются до завершения асинхронного вызова в моей базе данных, поэтому я получаю ошибки все время, когда материал не загружается (или вспомогательный модуль или модуль i18next)
Я действительно смущен здесь, как можно Я устанавливаю requireJS для загрузки Handlebars и i18next, прежде чем загружать модули?