2

.translation_missing言語が英語の場合、クラスがビューに表示されないようにする方法はありますか?英語のテキストは正しいので、私はそれを翻訳する必要はありません。

今のところspan.translation_missing、ロケールがデフォルトのスパンの場合はマスクにスタイルを追加しましたが、ロケールがデフォルトのスパンの場合はまったく表示されないようにしたいです:en

更新:明確にするために、私は.erbファイルで翻訳を行うので、どちらがやり過ぎに<%= t "Menu item" %>なると言います。ロケール<span class="translation_missing">Menu item<span>のために元の文字列をそのままにしておく必要があります:en

4

1 に答える 1

2

標準的な方法でこれを行う方法はないと思いますが、次のようなパッチを追加するだけで済みます。

module I18n::MissingTranslation::Base

  def html_message_with_en_fix
    (locale == :en) ? key : html_message_without_en_fix
  end
  alias_method_chain :html_message, :en_fix

  def message_with_en_fix
    (locale == :en) ? key : message_without_en_fix
  end
  alias_method_chain :message, :en_fix

end

または、パッチを使用したくない場合は、独自のメソッドを定義して、自分で例外をキャッチすることもできます。

def my_translate(key)
  begin
    I18n.t(key, :raise => I18n::MissingTranslationData)
  rescue I18n::MissingTranslationData
    (I18n.locale == :en) ? key.to_s : I18n.t(key)
  end
end

この回答も参照してください。

(空白/ nilではなく翻訳文字列を返すように両方の回答を更新しました。)

于 2012-09-24T04:43:19.247 に答える