web-dev-qa-db-ja.com

Rails i18nおよびフォームラベルのyml構造

ActionViewドキュメント によると。見積もり:

現在のI18nロケールで(views.labels。<modelname>。<attribute>を介して)翻訳が見つからない場合、または明示的に指定しない限り、ラベルのテキストはデフォルトで属性名になります。

「ユーザー」モデルと登録フォームがあります。関連する部分の抜粋は次のとおりです。

<% form_for(@user) do |f| %>
    ...
    <p>
    <%= f.label :username %>
    <%= f.text_field :username, :class => 'full_width' %>
    </p>
    ...
<% end %>

ドットは重要でないコードを隠します。

ドキュメントを理解しているので、ロケールファイル(この場合は:dk)で翻訳を提供すると、dk.ymlは次のようになります。

dk:
    views:
        labels:
            user:
                username:
                    "blahblah"

Railsはラベルテキストを翻訳し、「Username」の代わりに「blahblah」を挿入する必要があります。

これは起こっていないので、私は何かを逃したに違いありません。助けていただければ幸いです。

26
rhardih

ここで別の解決策を見つけたと思います。

私のアプリはバージョン2.3.5でした。これを2.3.8に変更し、<%= f.label :username %>は次の翻訳を使用するようになりました。

dk:
  activerecord:
    attributes:
      user:
        username:

私はこのチケットにヒントを見つけました:

https://Rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n

30
rhardih

Rails 3.1では、少し変更されています。

<% form_for @post do |f| %>
  <%= f.label :title %>
  <%= f.text_field :title %>
  <%= f.submit %>
<% end %>

en:
  helpers:
    label:
      post:
        title: 'Customized title'
42
Voldy