首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把手中的嵌套助手(执行顺序)

把手中的嵌套助手(执行顺序)
EN

Stack Overflow用户
提问于 2013-08-15 22:18:25
回答 2查看 431关注 0票数 0

我有两个注册的助手:"_i“,用于翻译ui字符串和将”复数“转换为复数字符串。我经常把它们嵌套在一起,就像这里:

代码语言:javascript
复制
{{#_i}}{{num_hidden}} hidden {{#pluralize}}comment,comments,{{num_hidden}}{{/pluralize}}{{/_i}}

(这将导致类似于“5个隐藏评论”的情况)。

UI字符串翻译的工作方式是在字典中的_i标记中查找整个字符串,然后替换它,例如西班牙语:

代码语言:javascript
复制
{{num_hidden}} {{#pluralize}}comentario escondido,comentarios escondidos,{{num_hidden}}{{/pluralize}}

然后,我将在这个字符串上运行复数助手。当我们在调用胡子之前动态地扩展视图时,这对胡子很有效。然而,对于工具栏帮助器,它首先执行复数助手(内部最高级),然后我得到一个UI字符串,其中没有翻译。

我想我做错了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-27 00:01:09

最后,我使用了Hogan.js而不是车把,因为它与胡子和胡子有更好的兼容性。

票数 0
EN

Stack Overflow用户

发布于 2013-08-19 08:40:31

相反,您可以使用一个助手和MessageFormat.js库:https://github.com/SlexAxton/messageformat.js -它允许以不同的语言显示“消息”,包括复数和性别规则。

这里是车把帮手:

代码语言:javascript
复制
Handlebars.registerHelper('i18n', function (text) {
    var options,
        compiledText;

    options  = arguments[arguments.length - 1];

    if (compiled[locale].hasOwnProperty(text)) {
        compiledText = compiled[locale][text];
    } else {
        compiledText = mf.compile(dictionary[locale][text]);
        compiled[locale][text] = compiledText;
    }

    return compiledText(options.hash);
});

dictonary对象包含所有的翻译:

代码语言:javascript
复制
dictionary = {
    en: {
        "You have MESSAGES_COUNT messages": "You have {MESSAGE_COUNT, plural, one {1 message} other {# messages}}",
    },
    pl: {
        "You have MESSAGES_COUNT messages": "Masz {MESSAGE_COUNT, plural, one {1 wiadomość} other {# wiadomości}}"
    }
};

compiled对象存储缓存的“消息”版本,而不是每次使用时都编译它。您还可以在构建时编译“消息”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18262826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档