在Rails的i18n中,如何使用以下语句获取某个键的所有值:
translations = I18n.backend.send(:translations)
获取所有键
我需要能够获取特定部分,例如仅返回“home”下的所有内容。
en:
home:
test: test
translations = I18n.backend.send(:translations)
获取所有键
我需要能够获取特定部分,例如仅返回“home”下的所有内容。
en:
home:
test: test
I18n.backend.send(:translations)
的返回值只是一个哈希表,因此您可以通过传递相应的键来访问子集。
例如,如果您有:
en:
foo:
bar:
some_term: "a translation"
some_other_term: "another translation"
然后,您可以使用以下代码获取哈希表 bar
下的子集:
I18n.backend.send(:translations)[:en][:foo][:bar]
#=> { :some_term=>"a translation", :some_other_term => "another translation"}
I18n::Backend::Simple
,它不会将翻译暴露给你。(I18n.backend.translations
是一个受保护的方法。)class I18n::Backend::Simple
def translations_store
translations
end
end
您可以调用I18n.backend.translations_store
来获取解析后的翻译。虽然这可能不是一种长期策略,但它可以让您立即获得所需的信息。
设置I18n.locale
然后执行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.backend.translations(do_init: true)
来检索翻译哈希表。I18n.backend.translations(do_init: true)[:fr][:home]
希望这有所帮助。