2011-04-07 4 views
4

i18n 및 yml을 사용하는 것이 좋습니다. 비슷한 일을하는 내 자신의 yaml 파일을 원합니다. yaml 파일에서 변수에 액세스하고 있습니다. 변수를 추가하려면이yaml 파일의 변수 전달

name: 
    address: "%{city} %{street}" 

같은 뭔가 우리가 t("message.welcome", :username => 'admin')

가 어떻게 그것을 구현할 수 있습니다 사용할 수 있습니다 우리가

en: 
message: 
    welcome: "Hello %{username}" 

이 전화를 할 수있는 국제화에 some_method('name.address', :city => 'my city', :street => 'my street')

같은 것을 통과 할 수 있을까?

답변

4

통화 후 교체됩니다. 예를 들면.

Yaml.load_file('locale/en.yml')['en']['message']['welcome'].gsub('%{username}', username) 

그래서 방법이 될 수 있습니다

def t(key, changes) 
    result = yaml_locale['en'] 
    key.split('.').each |k| 
     result = result[k] 
    end 
    changes.each_keys do |k| 
     result.gsub!("%{#{k}}%", changes[k]) 
    end 
    result 
    end 

리팩터링 그것은 조금 후하지만 생각은 같다.

원래 방법

가 여기에 있습니다 : https://github.com/svenfuchs/i18n/blob/master/lib/i18n.rb#L143 내가

+0

감사합니다 :)하지 않는 생각을 많이 관리, 정말 날 위해 일했습니다. – kriysna