在搜索了一段时间并尝试不同的选项之后,我决定使用i18next 1来国际化基于早午餐和骨干的Web应用程序。但是我在初始化i18next的地方有点挣扎,以便在整个应用程序中提供i18n支持。
目前我将初始化放入主Backbone.Marionette.Application中,如:
@addInitializer (options) ->
Media = require 'models/media'
Router = require 'lib/router'
@media = new Media
# setup routing and html5 history
$.i18n.init
lng: 'en-Us'
fallbackLng: 'en'
debug: true
, (t) =>
console.log 'i18n initialized'
@router = new Router controller: this
Backbone.history.start()
虽然我没有收到任何错误并且翻译文件已正确加载,但我还是无法翻译字符串。
各自的html看起来像这样:
<h5 data-i18n="title-text.unnamedtitle" class="title-text"></h5>
与翻译文件中的标题文本键匹配。
知道怎么处理这个吗?
答案 0 :(得分:1)
App初始化程序内的初始化应该没问题。缺少的是实际使用i18next库并将其应用于渲染视图。
如果您使用Marionette的观点,您可以提供onRender方法:
onRender: function() {
this.$el.i18n();
}
如果直接渲染视图,请尝试将 this。$ el.i18n(); 添加到渲染方法的末尾。