i18next를 올바르게 초기화하고 적절한 변환 문자열을 가져 오는 데 문제가 있습니다. 믹스에 몇 가지 라이브러리가 있습니다i18next 초기화 순서로드
- 폰갭 3.x를
- Backbone.js
- Require.js
- i18next.js
- handlebars.js
내 app.js는 document.ready 함수에 대해 다음을가집니다.
$(document).ready(function() {
var lang = "",
locale = "en-AU"; // default
// get the user's locale - mobile or web
if (typeof navigator.globalization !== 'undefined') {
// on mobile phone
navigator.globalization.getLocaleName(
function (loc) {locale = loc.value; },
function() {console.log('Error getting locale\n'); }
);
} else {
// in web browser
lang = navigator.language.split("-");
locale = lang[0];
}
console.log("locale: %s", locale);
i18n.init({
lng: locale,
debug: true,
fallbackLng: 'en'
}, function() {
// i18next is done asynchronously; this is the callback function
$("body").i18n();
});
아쉽게도 코드는 내가 설정 한 document.ready 중단 점을 치지 않습니다. 대신, router.js 먼저 View 클래스의 초기화 코드를 호출 정의 :
define(function (require) {
"use strict";
var $ = require('jquery'),
Backbone = require('backbone'),
Handlebars = require('handlebars'),
i18next = require('i18next'),
HomeView = require('app/views/HomeView'),
homeView = new HomeView(); // <<-- this line
을 ... Homeview.js : 페이지로드시
define(function (require) {
"use strict";
var $ = require('jquery'),
Handlebars = require('handlebars'),
Backbone = require('backbone'),
i18next = require('i18next'),
tplText = require('text!tpl/Home.html'),
template = Handlebars.compile(tplText);
return Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
this.$el.i18n(); // << causes an error
this.$el.html(template());
return this;
}
});
});
을하는 형식 오류가 발생합니다 :
'Undefined' is not a function (evaluating 'this.$el.i18n()')
내가 뭘 잘못하고있어?
편집 : (심 포함) app.js에 require.config 블록 : 나는 백본 및 require.js와 국제화를 사용하는 방법에 대한 데모 응용 프로그램을 만든
require.config({
baseUrl: 'lib',
paths: {
app: '../js',
'i18next': 'i18next.amd-1.7.2',
tpl: '../tpl'
},
map: {
'*': {
'app/models': 'app/models/memory'
}
},
shim: {
'handlebars': {
exports: 'Handlebars'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'underscore': {
exports: '_'
},
'i18next': ['jquery']
}
});
당신이 알려주세요 수 있습니까? –
몇 가지 순열을 사용했습니다. 현재 i18next.amd.withJQuery.min.js를 사용하고 있습니다. 하지만 아래 링크를 통해 다시 시도해 보겠습니다. 감사! – eb1
또한 jQuery에 shim 구성을 정의 했습니까? –