如何在Rails的i18n中转义冒号:?

4

这是视图中的一行代码:

<%= f.input :comm_date, :label => "Hello:", :as => :string %>

常规的i18n文件格式如下:
  Hello : 'Aloha'

在 i18n 的 yml 文件中,我们想将 "Hello:" 翻译为 "Aloha:"。我们可以通过以下方式转义冒号 : 吗?
'Hello:' : 'Aloha:'
或者有什么正确的转义冒号的方法?

你能告诉我们为什么要在翻译文件中放置冒号吗?也许我们可以找到一些解决方法来避免这样做... - Raindal
我们在标签中使用冒号“:”,并希望将其应用到其他语言中。此外,冒号也表示它是用于标签的。 - user938363
你可以使用 :label => "#{I18n.t('labels.hello')}:",然后在你的 yml 文件中添加:labels: hello: 'Aloha'(当然,我无法在此处复制正确的缩进)。 - Raindal
通常情况下,我会避免在翻译文件中使用语法,因为您可能需要在不同的上下文中多次使用相同的单词。因此,您最终会得到像 date: date date_with_colon: 'date:' 这样的键。相反,您应该将其与视图中的翻译键连接起来。 - ronan_mac
2个回答

4
你正在使用的gem是simple_form,以及其他类似的如formtastic,它们允许使用翻译文件 (例如en.yml) 来定义标签文本。你可以从simple_form文档中查看翻译文件的期望格式。针对你的示例,假设你的模型名为Communication,你需要两个翻译,如下所示:
en.yml
en:
  simple_form:
    labels:
      communication:
        comm_date: "Hello:"

olelo.yml

olelo:
  simple_form:
    labels:
      communication:
        comm_date: "Aloha:"

你的视图将会很简单。
<%= f.input :comm_date, :as => :string %> 

无需为选项提供值。

刚刚检查了宝石列表,没有找到formatastic。如果没有formtastic宝石,有其他方法可以做吗? - user938363
1
你在构建表单时使用了任何 gem 吗?#input 不是 FormBuilder 类的方法。 - Dan Reedy
请使用simple_form。抱歉忘记提到它了。 - user938363

2
这是我们所做的事情:
'Hello:'  : 'Aloah'

只需要使用单引号,就可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接