【问题标题】:Template as a variable in Handlebars.js模板作为 Handlebars.js 中的变量
【发布时间】:2012-11-01 14:32:53
【问题描述】:

我正在创建一个国际化的 Ember.js 应用程序,为此我使用 Ember-I18n。这在大多数情况下都可以正常工作,但现在考虑语言字符串:

'To do some action {{link}}'

其中{{link}} 需要替换为某个链接。翻译字符串不能分解,因为{{link}} 的位置可能因语言而异。因此,我需要找到一种方法来获取链接;这当然是另一个带有翻译的模板,例如:

<a {{action someAction}}>{{t click_here}}</a>

到目前为止,我已经尝试了几件事:使用自定义块助手为链接创建自定义视图;但我还没有得到任何工作。

这样做的最佳方法是什么?换句话说,如何将渲染的模板作为变量插入到 Ember.js 中的另一个模板中?

【问题讨论】:

  • 您是否可以将链接放在固定位置,但有“文本前”和“文本后”,如果语言需要,其中一个可能是空的?跨度>
  • 我目前正在开发一个具有类似场景的应用程序。我已经在单独的文件中创建了所有模板,然后手动将每个模板的把手标记复制到我的资源文件中的一个键(我正在做 .net,所以我为我支持的每种语言都有一个 .resx 文件。我相信 rails 使用.yml 文件,对吗?)。这可能不是最好的方法,因为我每次更改模板时都必须手动将整个模板复制到资源键,并处理空格和所有问题。然后在运行时,我将模板源注入Ember.TEMPLATES。同样,可能不是最好的方法,只是把它扔在那里
  • @Jasper 这可能是可能的,但是我已经想到了一些这还不够的场景(想象有多个链接,顺序 可能甚至不准确)。作为一种解决方法,我可能可以使用它(并希望我永远不会遇到这种异常情况),但我希望有更好的方法。
  • @MilkyWayJoe 问题之一是 Ember.js 实际上有点劫持 Handlebars.js 并且模板的工作方式似乎略有不同。因此,此场景所需的 Ember 助手(例如操作)在语言“模板”中不可用;所以不幸的是我不能只使用整个标记。
  • 不确定我是否理解 Ember.js 实际上有点劫持 Handlebars.js 并且模板的工作方式似乎略有不同

标签: javascript internationalization ember.js handlebars.js


【解决方案1】:

我不使用该库来翻译我的应用程序,但据我从其文档中了解到,这可能有效:

1) 像这样为模板创建一个视图:

var view = Em.View.create({
  templateName: "mytemplate",
  link: "http://emberjs.com",
});

2) 在您的模板中使用 Ember-I18n 提供的绑定:

<a {{action someAction}}>{{t click_here linkBinding="view.link"}}</a>

假设翻译字符串在“click_here”键中。

更多信息:https://github.com/jamesarosen/ember-i18n#bind-interpolated-values

【讨论】:

  • 但在这种情况下,我的意思是存在嵌套翻译;即 click_here 翻译中的模板/翻译。绑定机制无法解决这个问题。
猜你喜欢
  • 2011-11-05
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多