存储应用程序文本:内联与单独文件

时间:2009-05-18 21:21:23

标签: ruby text haml merb

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

我也对这个问题的其他方法感到好奇。

1 个答案:

答案 0 :(得分:1)

如果要对应用程序进行全球化/国际化,则单独存储文本很有用。对于rails来说,有很多很好的插件可以做到这一点(Rails 2.3甚至有一个api为此),但这些通常也适用于merb。有各种方法,两种主要方法是如何存储密钥:

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

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

您可以查看rails 2.3对全球化的影响,因为它们的命名架构可能是您的良好起点。或者使用命名空间来拆分YAML文件,这样它们就更容易搜索。您也可以尝试使用gettext方法,但实际上并不认为它既不干也不安全(但它有很多工具可以创建包含应用程序所有文本的映射文件)。