2013-06-28 53 views
1

我使用骨干和jQuery开发一个应用程序,我有什么地方放东西像标签表单域,网页标题,按钮文字的问题,等等。JS框架 - 字段标签/文本

我猜测这些应该被外化到某种属性文件中,特别是为了支持国际化,但我无法找到任何有关这方面最佳实践的良好文档。

在过去的Java应用程序和JSP中,我们将这样的东西存储在.properties文件中。我是否应该使用相同的概念并将这些内容放入JSON文件中,然后发出XHR请求来获取文件并以这种方式插入它们?

基本上,我在使用客户端/ UI框架开发应用程序时,正在寻找此类事物的最佳实践。

回答

1

您可以创建语言文件为对象,如果您使用的需要,例如:

locale/en_gb.js

define({ 
    buttons: { 
     ok: 'Ok', 
     error: 'Error', 
     prompts: { 
      saveChanges: 'You have unsaved changes. Would you like to save them?', 
      quit: 'Are you sure you want to quit?' 
     } 
    }, 

    pages: { 
     home: 'Home' 
     contact: 'Contact' 
    } 
}); 

您有不同的语言,语言文件。

在您的扩展视图,您可以创建这样一些方法:

localeBase: null, 
currentLocale: null, 

loadLocale: function(localeName) { 
    require('locale/'+localeName, function(Locale) { 
     this.currentLocale = Locale; 
    }); 
}, 

l: function(lookupStr) { 
    // Lookup 'lookupStr' in 'this.currentLocale' 
} 

l方法采取.标注的查询字符串,如:

"pages.home"回报"Home"

或者,如果localeBase设为例如:

"buttons"

这时如果字符串启动带.

".prompts.quit"

将相对查找到localeBase(如果它不与点查找从开始AKA绝对查找开始)。

请注意,localeBase不是一个必要的概念,它取决于您的偏好。

在你Viewrender方法,您通过视图作为template context

var html = myTemplateRenderer_Function(this); 
this.el.html(html); 

你的模板文件,然后可以访问l方法,所以你可以做的东西,如:

<button value="<%= l('buttons.ok') %>" />