3

私は最初の製油所プロジェクトに取り組んでおり、フッターに次の行があります。

<%= t('.copyright', :year => Time.now.year, :site_name => Refinery::Core.site_name) %>

それは私のサイトにこれを表示しています:

i18n: Copyright

i18n はどこから来て、t 関数は必要ですか?

編集:

私の /config/locales/en.yml には以下のコードが含まれています。これに何かを追加する必要がありますか、それとも t() タグを削除するのが最善でしょうか?

en:
  hello: "Hello world"
4

3 に答える 3

5

2番目の質問について-t('.copyright')フォルダーツリー構造の下に適切なキーがあることを期待しています(.最初にあるため)。たとえば、共有フォルダーの下にフッターがある場合 (フル パスは になりますapp/views/shared/_footer.erb)、YML の次の構造が必要です。

en:
  shared:
    footer:
      copyright: "All rights reserved. (c) %{site_name} at %{year}"

%{site_name}および%{year}次の値の補間のプレースホルダーです。

<%= t('.copyright', :year => Time.now.year, :site_name => Refinery::Core.site_name) %>
于 2012-06-06T11:48:55.223 に答える
3

i18n は、Rails に付属する国際化ライブラリであり、Rails アプリのさまざまな場所の翻訳に役立ちます。

t() は翻訳の呼び出しにすぎません。実際にはエイリアスだと思います。

著作権のある locales フォルダーに yaml ファイルが必要です。年と site_name が必要です。

場所を変更したため、翻訳はありません。refineryCms は英語のみである必要があるためです。

于 2012-06-06T00:44:02.997 に答える
1

メソッドはメソッドのtエイリアスですtranslate。どちらもActionView::Helpers::TranslationHelperにあります。

と仮定しoptions = { :year => Time.now.year, :site_name => Refinery::Core.site_name }ます。

渡されるキーはピリオドで始まるためt('.copyright', options)、ビュー内にあるへの呼び出しrefinery/_footer.html.erbは実際には を呼び出しI18n.translate('refinery.footer.copyright', options)ます。

現在、キーのデフォルトの英語翻訳はここrefinery.footer.copyrightにあります。です。その値をオーバーライドしたい場合は、そのキーをファイルに設定するのが最善の方法だと思います。"Copyright © %{year} %{site_name}"config/locales/en.yml

en:
  refinery:
    footer:
      copyright: "My custom copyright text"
于 2013-04-23T20:24:49.623 に答える