2013-02-09 51 views
-1

我有這個哈希和它的第一部分,我需要轉換爲純文本例如en_GB 將是英國。這是我從Facebook API獲得的示例回覆。將哈希語言環境名稱的第一位轉換爲純文本,即en_GB到英國Ruby on Rails

{"en_GB"=>6836, "en_US"=>3414, "it_IT"=>120, "es_LA"=>37, "fr_FR"=>24, "zh_TW"=>18, "pt_BR"=>18, "de_DE"=>16, "hr_HR"=>15, "pl_PL"=>12, "es_ES"=>12, "ru_RU"=>10, "id_ID"=>9, "el_GR"=>8, "ar_AR"=>8, "th_TH"=>8, "tr_TR"=>8, "bg_BG"=>7, "lv_LV"=>6, "zh_CN"=>6, "cs_CZ"=>5, "ro_RO"=>4, "pt_PT"=>4, "en_PI"=>4, "he_IL"=>3, "sk_SK"=>3, "hu_HU"=>3, "mk_MK"=>3, "nl_NL"=>2, "sv_SE"=>2, "zh_HK"=>2, "lt_LT"=>2, "nl_BE"=>2, "fb_LT"=>1, "en_IN"=>1, "sl_SI"=>1, "sq_AL"=>1, "ko_KR"=>1, "da_DK"=>1, "ka_GE"=>1, "cy_GB"=>1, "mr_IN"=>1, "sr_RS"=>1, "nb_NO"=>1} 

有沒有人知道如何將其轉換爲純文本?

回答

2

在Rails應用程序中設置的語言環境數據/config/locales/en.yml作爲

en: 
    en_GB: "Great Britain" 
    en_US: 'United States' 
    ..so on.. 

然後

fb_response = {"en_GB"=>6836, "en_US"=>3414, "it_IT"=>120, "es_LA"=>37, "fr_FR"=>24, "zh_TW"=>18, "pt_BR"=>18, "de_DE"=>16, "hr_HR"=>15, "pl_PL"=>12, "es_ES"=>12, "ru_RU"=>10, "id_ID"=>9, "el_GR"=>8, "ar_AR"=>8, "th_TH"=>8, "tr_TR"=>8, "bg_BG"=>7, "lv_LV"=>6, "zh_CN"=>6, "cs_CZ"=>5, "ro_RO"=>4, "pt_PT"=>4, "en_PI"=>4, "he_IL"=>3, "sk_SK"=>3, "hu_HU"=>3, "mk_MK"=>3, "nl_NL"=>2, "sv_SE"=>2, "zh_HK"=>2, "lt_LT"=>2, "nl_BE"=>2, "fb_LT"=>1, "en_IN"=>1, "sl_SI"=>1, "sq_AL"=>1, "ko_KR"=>1, "da_DK"=>1, "ka_GE"=>1, "cy_GB"=>1, "mr_IN"=>1, "sr_RS"=>1, "nb_NO"=>1} 

fb_response = Hash[fb_response.map {|k, v| [t(k.to_sym), v] }] 

map返回與每個元素和Hash運行一次塊的結果,新的[]數組創建返回數組中每個[k,v]對的新散列。在該塊中,我們將密鑰轉換爲符號並將其傳遞給#translate,別名爲t,這會將其轉換爲當前語言環境。

相關問題