【发布时间】:2013-01-08 00:42:55
【问题描述】:
我正在开发一个 Grails / Backbone / Handlebars 应用程序,它是一个更大的遗留 Java 系统的前端,其中(出于历史和可定制性的原因)国际化消息位于隐藏在几个 SOAP 服务后面的数据库中反过来又隐藏在各种内部 Java 库后面。从 Grails 层获取这些消息很简单,而且效果很好。
不过,我想知道的是如何将(例如)国际化标签放入我的 Handlebars 模板中。
现在,我正在使用 GSP 片段来生成模板,包括获取我感兴趣的消息的自定义标签,例如:
<li><myTags:message msgKey="title"/> {{title}}</li>
但是,出于性能和代码布局的原因,我想摆脱 GSP 模板并将它们直接转换为 HTML。我已经研究了一些客户端国际化选项,例如i18n.js,但它们似乎取决于我没有得到的消息文件的存在。 (我可能会生成它,但它会非常庞大且昂贵。)
到目前为止,我能想到的最好的办法是将标签也插入到 Backbone 模型中,所以我最终会得到类似
<li>{{titleLabel}} {{title}}</li>
但是,这确实偏离了在干净整洁的 RESTful JSON API 之上构建 Backbone 模型的理想——要么由 RESTful 服务返回的 JSON 中混杂着表示数据(即本地化标签),要么我必须做一些额外的工作才能将标签注入到 Backbone 模型中 - 并且用演示数据混淆 Backbone 模型似乎也是错误的。
我认为,就干净的数据和干净的 API 而言,我想做的是编写另一个 RESTful 服务,该服务采用消息键和类似的列表,并返回包含所有本地化消息的 JSON 数据结构。但是,问题仍然存在:
- 指示(可能在模板中)给定视图需要哪些消息键的最佳方式是什么?
- 数据的正确格式是什么?
- 如何将本地化消息放入主干视图?
- 是否有任何现有的 Javascript 库可以提供帮助,或者我应该开始制作东西吗?
- 是否有更好/更标准的替代方法?
【问题讨论】:
-
+1 非常有趣的问题。不确定是否有干净的解决方案。不过会考虑一下。
标签: grails backbone.js internationalization handlebars.js