我试图翻译以下错误:
它说:
1错误禁止保存此项目:
这是我从Rails Internationalization (I18n) API得到的en yml文件中的内容:
en:
activerecord:
errors:
[?]:
[?]:
one: "1 error prohibited this %{model} from being saved"
other: "%{count} errors prohibited this %{model} from being saved"
[?]: "There were problems with the following fields:"
messages:
record_invalid: "Validation failed: %{errors}"
restrict_dependent_destroy:
has_one: "Cannot delete record because a dependent %{record} exists"
has_many: "Cannot delete record because dependent %{record} exist"
这是我在表单中显示错误的方式示例
<% if @project.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>
<ul>
<% @project.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
我根本没有用轨道触及本地化,所以如果我做的一切都完全错误,我很抱歉,但我需要在[?]
中添加什么?我有我的yml文件,或者我需要更改什么,以便当我改为西班牙文时
1错误禁止保存此项目:
更改为
Un error prohibido este proyecto de ser salvado
这是我最终使用的:
在我的.yml文件中
en:
activerecord:
form_errors:
one: One error prohibited this %{model} from being saved
other: "%{count} errors prohibited this %{model} from being saved"
以我的形式:
<% if @project.errors.any? %>
<div id="error_explanation">
<h2><%= t('activerecord.form_errors', :count => @project.errors.count,
:model => t('models.project').downcase) %></h2>
<ul>
<% @project.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
答案 0 :(得分:1)
此消息
<h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>
在这里的脚手架中是硬编码的
error_messages_for
您正在查看的指南部分是引用旧版本的 使用{{1}}方法的rails。
4.5.3 Active Record的翻译error_messages_for Helper
如果您正在使用Active Record error_messages_for帮助程序,那么您将会这样做 想为它添加翻译。
要使用此帮助程序,您需要通过将此行添加到Gemfile中来安装DynamicForm gem:gem'vynamic_form'。
我不推荐这个选项,因为没有维护这个宝石。
答案 1 :(得分:1)
您没有使用可以利用该YAML结构的模板Helper(#error_messages_for)。在Rails 3之前提取出那个帮助器,你必须安装dynamic_form gem才能使用它。
你基本上和第二个代码片段的助手一样。要使用它,您可以用<%= error_messages_for @project %>
替换整个事物,但我不知道您是否最终获得了您想要的HTML标记。要直接回答您的问题,您应该在您提供的链接上显示相同的YML结构。当然,这必须是你的西班牙语。
我认为更改第二个代码段来翻译错误标题消息会更容易。
如果您不关心将应用程序翻译成其他语言,或者使用国际化帮助程序(2),在西班牙语I18n文件中添加和输入错误,则可以在地方(1)执行此操作。
1
<%= pluralize(@project.errors.count, "error") %> prohibido este proyecto de ser salvado:</h2>
2
<%= pluralize(@project.errors.count, "error") %> <%= t(:error_header_message) %>:</h2>
对于最后一种方法,请将翻译添加到yml文件中。
es:
error_header_message: prohibido este proyecto de ser salvado