は、どのように使用して、特定のキーのすべての値を取得するには、以下: Rails i18n特定のキーのすべての値を取得する方法は? Railsの国際化で
translations = I18n.backend.send(:translations)
は、すべてのキーを取得私は例えば 特定のセクションを取得できるようにする必要があり
唯一の「ホーム」
en:
home:
test: test
は、どのように使用して、特定のキーのすべての値を取得するには、以下: Rails i18n特定のキーのすべての値を取得する方法は? Railsの国際化で
translations = I18n.backend.send(:translations)
は、すべてのキーを取得私は例えば 特定のセクションを取得できるようにする必要があり
唯一の「ホーム」
en:
home:
test: test
戻り値I18n.backend.send(:translations)
はちょうどハッシュなので、適切なキーを渡すだけでサブセットにアクセスできます。
あなたが持っている場合:
en:
foo:
bar:
some_term: "a translation"
some_other_term: "another translation"
次にあなたがbar
下ハッシュのサブセットを取得することができます:
I18n.locale
を設定
I18n.backend.send(:translations)[:en][:foo][:bar]
#=> { :some_term=>"a translation", :some_other_term => "another translation"}
デフォルトの国際化のバックエンドの下にあるすべてのものを返すTRANを公開しない、I18n::Backend::Simple
ですあなたにスレートを送る。 (I18.backend.translations
は保護されたメソッドです)
この情報は本当に必要で、ファイルを解析できない場合は、バックエンドクラスを拡張することができます。
class I18n::Backend::Simple
def translations_store
translations
end
end
次に、I18n.backend.translations_store
を呼び出して、解析された翻訳を取得できます。おそらく長期的な戦略としてこれに頼るべきではありませんが、今必要な情報が得られます。
その後、I18n.t
を行うと、例えば、正常に動作します:
def self.all_t(string)
I18n.locale = :en
en = I18n.t("pages.home.#{string}")
I18n.locale = :fr
fr = I18n.("pages.home.#{string}")
[en, fr]
end
おかげで私その間にI18n.t( 'home')も動作することがわかりました – Rubytastic
ニース、ありがとう!実際のキー名を取得する方法を探していたので、これは素晴らしいものでした。 – richddr