【问题标题】:Replacing Dojo/Dijit NLS strings替换 Dojo/Dijit NLS 字符串
【发布时间】:2013-06-27 11:50:42
【问题描述】:

我希望用一个新文件覆盖 NLS 文件 (dijit/form/validate.js) 文件,或者替换一些 NLS 字符串映射。我希望这个文件被标准 Dijits 拾取。

我不想删除标准 Dojo 库中的文件。我可以在 djConfig 中指定一个路径来搜索 NLS 文件的目录,以便获取我的新文件而不是原始文件吗?如果是这样,我该怎么做?

另外,我怎样才能混合一个字符串的新定义,即

替换:

missingMessage: "This value is required.",

与:

missingMessage: "My string is here.",

【问题讨论】:

    标签: javascript localization dojo dijit.form


    【解决方案1】:

    如果您想按照您的要求执行并为dijit/form/nls/validate i18n 模块选择备用文件,您可以使用map property 重新映射模块ID (1.8+):

    var dojoConfig = {
        map: { dijit: {
            'dijit/form/nls/validate': 'my/form/nls/validate',
            'dijit/form/nls/en/validate': 'my/form/nls/en/validate',
            // ... etc
        } }
    };
    

    但是,在验证小部件上覆盖消息的标准和推荐方法是使用您自己的值设置消息属性:

    define([
        'dijit/form/ValidationTextBox',
        'dojo/i18n!my/form/validate'
    ], function (ValidationTextBox, myI18n) {
        var instance = new ValidationTextBox({ missingMessage: myI18n.missingMessage });
        // ...
    });
    

    【讨论】:

    • 感谢您的回复 - 我以为我的问题会无人回答!今天晚些时候我会试试你的建议:-)。我想替换小部件所有实例的消息,因此映射文件可能是“最整洁”的答案。
    • 很遗憾,第一种方法似乎不起作用。我可以看到它正在加载文件,但后来 i18n 似乎正在加载原始文件。就好像它在加载页面中途丢失了地图,或者可能是因为解析?
    • 您是否在其他地方加载并使用原始文件作为依赖项?
    • 我刚刚加入公司并接管了这段代码,但 AFAICT validate.js 文件除了作为 Dijits 的一部分外没有被引用。
    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多