Javascript 在余烬中书写把手
我有一个多语言的小应用程序。应用程序的文本来自服务器。文本可以使用不同的语言。现在让我们继续讲瑞典语和英语。用户可以在语言之间切换。我试图做的是当应用程序加载时,获取两种语言的文本并将其存储在Ember中的模型中 然后,我试图写一个车把助手,它将允许我在两种语言之间切换。例如,我从服务器获取的数据就是这种形式的Javascript 在余烬中书写把手,javascript,ember.js,Javascript,Ember.js,我有一个多语言的小应用程序。应用程序的文本来自服务器。文本可以使用不同的语言。现在让我们继续讲瑞典语和英语。用户可以在语言之间切换。我试图做的是当应用程序加载时,获取两种语言的文本并将其存储在Ember中的模型中 然后,我试图写一个车把助手,它将允许我在两种语言之间切换。例如,我从服务器获取的数据就是这种形式的 langData: { sv_SE: { start_page: "..." }, en_US: { start_page: "..." } 我的模型是language
langData: {
sv_SE: {
start_page: "..."
},
en_US: {
start_page: "..."
}
我的模型是language.js,如下所示
App.Language = DS.Model.extend({
language: DS.attr('string'),
start_page: DS.attr('string'),
});
Ember.Handlebars.helper('__', function(key, lang, options) {
// get the text specified for the language. A function which will check the language model and
// fetch data for the particular key from it
});
{{__ start_page en_US}}
在我的手柄栏里,我正试图做这样的事情
App.Language = DS.Model.extend({
language: DS.attr('string'),
start_page: DS.attr('string'),
});
Ember.Handlebars.helper('__', function(key, lang, options) {
// get the text specified for the language. A function which will check the language model and
// fetch data for the particular key from it
});
{{__ start_page en_US}}
我是这样称呼把手吧的
App.Language = DS.Model.extend({
language: DS.attr('string'),
start_page: DS.attr('string'),
});
Ember.Handlebars.helper('__', function(key, lang, options) {
// get the text specified for the language. A function which will check the language model and
// fetch data for the particular key from it
});
{{__ start_page en_US}}
我所想的是,这将返回我的英文起始页文本
这条路对吗?如果不是,正确的方法是什么?此外,我将有不同的文本字符串,将在不同的hbs文件中使用 我成功地使用了一个项目。它为您提供了一个将您的翻译置于模型之外的位置。然后根据cookie或用户模型上的设置加载当前语言。切换到另一种语言确实需要重新加载整个页面,但您可以在不重新加载的情况下使其正常工作。为什么不将语言模型设置为控制器?如果你切换语言模型,模板会自动更新。是的,但我有不同的模板,每个模板都有不同的文本。因此,对于这种方式,我必须为每个模板设置不同的模型。我试图写一个模型,将可访问的每一个模板。这将解决你的需要吗?这里我从基本控制器扩展。如果我有不同的模板,这会起作用吗?假设我有另一个名为foo的模板,在foo中,我需要一个位于lang数组中的foo_消息。这样行吗?那么,我应该从基本控制器继承所有控制器吗?它应该可以工作,因为数据在控制器中,并且所有模板都可以访问控制器中的数据。为此,您应该使用公共控制器(BaseController)。您还可以将与语言相关的内容分离到mixin,并将其与任何控制器一起使用。