Symfony 文档说:
使用真实或关键字消息 此示例说明了创建要翻译的消息时的两种不同理念:
$translated = $translator->trans('Symfony2 is great'); $translated = $translator->trans('symfony2.great');
<剪辑>
选择使用哪种方法完全取决于您,但通常建议使用“关键字”格式。
那么你什么时候会使用“真实”消息?
Symfony 文档说:
使用真实或关键字消息 此示例说明了创建要翻译的消息时的两种不同理念:
$translated = $translator->trans('Symfony2 is great'); $translated = $translator->trans('symfony2.great');
<剪辑>
选择使用哪种方法完全取决于您,但通常建议使用“关键字”格式。
那么你什么时候会使用“真实”消息?
你真的必须自己决定。这有点像品味问题,也有点取决于您的翻译工作流程。
当您不希望维护额外的翻译文件(用于原始语言)的开销时,真正的消息是好的。此外,如果您忘记翻译某些消息,您仍然会看到原始语言的有效消息。从原始消息而不是关键字进行翻译也更容易一些。
当消息经常变化时,关键字会更好,尤其是长文本。您从实际文本中抽象出消息的目的。
编辑:还有另一种情况,您可以争辩说真实消息比键更好-当您的网站仅支持一种语言但具有多种变体时-例如en_GB,en_US。大多数消息将是相同的,只有少数会有所不同。所以大部分信息可以保持原样,只有那些在英国和美国之间实际上不同的信息才会被放入翻译文件中。与使用密钥的方法相比,它需要的工作要少得多(当然,假设您的消息不会经常更改)。
我可以想出的真实格式的一个用例是当用户通过 UI 创建消息时——强迫他们为他们想要翻译的每个短语想出关键字是很愚蠢的。
我还没有这样的需求,所以我总是使用关键字格式。
在大多数情况下,我同意@Jakub Zalas 的回答,但是,最后一行有点偏离。
当消息可能发生变化时,关键字会更好 - 而不仅仅是在经常变化时。文档本身也对此进行了概述:
第二种方法很方便,因为如果您决定消息实际上应该在默认语言环境中阅读“Symfony2 真的很棒”,则不需要在每个翻译文件中更改消息键。
如果消息更改并且您没有使用密钥但消息作为密钥,您必须使用此消息更改任何代码以反映该更改。更改的地方越多,潜在的错误就越多。我们有能力通过使用消息密钥来建立杠杆作用。
真正的消息没有太大的兴趣。如果您确定您的应用程序将始终是单一语言并且您希望在开发中获得几分钟的时间,您可以使用 IMO。
关键字 trans 感兴趣的是,如果您必须翻译您的网站,您会立即看到是否缺少翻译。为了方便翻译,我个人使用JMSTranslationBundle