在Rails國際化,用如何獲得某個鍵的所有值以下:Rails i18n如何獲取某個鍵的所有值?
translations = I18n.backend.send(:translations)
得到所有的鑰匙
我需要能夠得到某款例如只有在「家」
en:
home:
test: test
在Rails國際化,用如何獲得某個鍵的所有值以下:Rails i18n如何獲取某個鍵的所有值?
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.backend.send(:translations)[:en][:foo][:bar]
#=> { :some_term=>"a translation", :some_other_term => "another translation"}
默認的I18n後端返回一切都是I18n::Backend::Simple
,不暴露TRAN給你看。 (I18.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.t('home')的作品也是 – Rubytastic
不錯,謝謝!這對我很好,因爲我正在尋找一種方法來獲取實際的密鑰名稱。 – richddr