gpt4 book ai didi

internationalization - 使用 Emblem.js 将翻译插入占位符

转载 作者:行者123 更新时间:2023-12-04 08:23:41 26 4
gpt4 key购买 nike

我正在尝试使用 ember.js/emblem.js 编写登录表单。一切正常,除非我像这样尝试 I18ning 占位符:

Em.TextField valueBinding="view.username" placeholder="#{t 'users.attributes.username}"
Em.TextField valueBinding="view.password" placeholder="#{t 'users.attributes.password'}" type="password"

如果我尝试,我会得到相同的响应:

= input value=view.username placeholder="#{t 'users.attributes.username}"
= input value=view.password placeholder="#{t 'users.attributes.password'}" type="password"

在这两种情况下,我都会收到此错误消息:

Pre compilation failed for: form
. . . .
Compiler said: Error: Emblem syntax error, line 2: Expected BeginStatement or DEDENT but "\uEFEF" found. Em.TextField valueBinding="view.username" placeholder="#{t 'users.attributes.username}"

我假设发生这种情况是因为我正试图从一个已经被编译的语句中编译一些东西。证明这一点的是,如果我将代码更改为:

input value=view.username placeholder="#{t 'users.attributes.username}"
input value=view.password placeholder="#{t 'users.attributes.password'}" type="password"

但缺点是值绑定(bind)不再起作用,这仍然使表单无法操作。有没有我没有考虑过的解决这个问题的另一种方法?

最佳答案

正如 Alexander 所指出的,这是 Ember 和 Handlebars 的局限性。我一直在使用的解决方法是让 placeholder 引用 Controller 属性,然后返回翻译后的字符串。例如:

{{input
type="text"
value=controller.filterText
placeholder=controller.filterPlaceholder }}

然后在 Controller 中:

filterPlaceholder: function () {
return i18n.t('players.filter');
}.property('model.name'),

关于internationalization - 使用 Emblem.js 将翻译插入占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17765527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com