JS框架-字段标签/文本



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

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

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

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

如果您使用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不是一个必要的概念,它取决于您的偏好。

Viewrender方法中,将视图作为template context:传递

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

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

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

最新更新