1

我正在开发一个使用Haml作为模板语言的 Merb 应用程序。由于 haml 鼓励将逻辑移出视图并移入帮助程序,因此我很快开始考虑从模板本身中删除副本/文本。在过去,我要么只是将文本内联留在模板中,要么将其移动到由控制器分隔的单独 yaml 文件中。我发现内联文本更方便,但更丑陋,并且需要大量使用Ack来找出特定文本的存储位置。将其存储在 yaml 文件中更容易搜索,但更难找到合理的命名模式来查找给定区域中的特定文本。

我也很好奇解决这个问题的其他方法。

4

1 回答 1

1

如果您想使您的应用程序全球化/国际化,单独存储文本是很好的选择。对于 Rails,有很多很好的插件可以做到这一点(Rails 2.3 甚至为此提供了一个 api),但这些通常也适用于 merb。有多种方法可以解决这个问题,两种主要方法是如何存储密钥:

  • 您正在使用的类似 YAML 的界面存储我认为的符号,并将文本分配给该符号。
  • gettext 风格的方法是文本是符号,如果需要,您可以在单独的文件中重新定义它(但如果您不这样做,那么您将返回与密钥相同的字符串)。

两种方法都有其优点和缺点。除了密钥之外,您还可以使用许多存储工具,例如 YAML,或者您实际上可以构建一个完整的 ActiveRecord/DataMapper/等。基于存储机制。

您可以查看 rails 2.3 如何处理全球化,因为它们的命名模式对您来说可能是一个很好的起点。或者使用命名空间来拆分 YAML 文件,这样它们会更容易搜索。您也可以尝试 gettext-approach,但实际上它不被认为既不 DRY 也不安全(但它有很多工具可以创建包含应用程序所有文本的映射文件)。

于 2009-06-13T12:55:54.153 回答