JS框架 - 字段标签/文本

时间:2013-06-28 16:07:57

标签: jquery json backbone.js properties

我正在使用Backbone和jQuery开发一个应用程序,我有一个关于在哪里放置表单字段,页面标题,按钮文本等标签的问题。

我猜这些应该被外化到某种属性文件中,特别是为了支持i18n,但是我无法找到任何关于什么是最佳实践的好文档。

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

基本上,在使用客户端/ UI框架开发应用程序时,我正在寻找这种方法的最佳实践。

1 个答案:

答案 0 :(得分:1)

如果您使用require,则可以将语言文件创建为对象:

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不是必需的概念,它取决于您的偏好。

View render方法中,您将视图作为template context传递:

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

然后,您的模板文件可以访问l方法,以便您可以执行以下操作:

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