2014-05-14 2 views
3

안녕하세요. 내 앱의 모든 사용자가 검색 창을 구축합니다. 다음과 같이 보입니다.간단한 양식 I18n 레이블

= simple_form_for :cars, {url: cars_path, method: :get} do |f| 
    = f.input :handover_location, collection: Location.all.map{|hl| [hl.name, hl.id]} 
    = f.input :return_location, collection: Location.all.map{|rl| [rl.name, rl.id]} 
    = f.input :car_class, collection: CarClass.all.map { |c| [c.name, c.id] }, include_blank: true 
    = f.submit 

이제이 라벨을 I18n으로 번역하는 방법을 모르겠습니다. 어떻게해야합니까?

답변

10

확인 국제화에 대한 간단한 형태의 문서 : 그것은 꽤 잘 설명하고, 좋은 내용이수록되어 https://github.com/plataformatec/simple_form#i18n

.

는 예를 들어 (문서에서) 그래서 :

en: 
    simple_form: 
    labels: 
     defaults: 
     username: 'User name' 
     password: 'Password' 
     new: 
      username: 'Choose a user name' 
    hints: 
     defaults: 
     username: 'User name to sign in.' 
     password: 'No special characters, please.' 
    placeholders: 
     defaults: 
     username: 'Your username' 
     password: '****' 

이 레이블의 기본값을 지정합니다. 더 많은 옵션이 있으므로 설명서를 확인해야합니다.

둘째, 당신은 또한 나는이 때문에 간단한 형태의 보석에 초점에 더 나은 해답이라고 생각 때문에

= f.input :car, label: I18n.t('my_car_label'), prompt: I18n.t('my-car-prompt'), placeholder: I18n.t('my-placeholder') 
+0

처럼 명시 적으로 그것을 할 수 있습니다. – nicohvi

+0

예제에 두 번째 파트 사전 만 포함되어 있고 해당 사전에 대한 양식 예제가 없으므로 단순 양식 문서는 "설명이 잘되어 있지 않습니다". 당신의 대답에서 나는 "simple_form_for"태그가 어떻게 보일 것인가를 이해할 수 없다. 사전에 질문에있는 양식이 어떻게 보이는지에 대해 설명하지 않았던가. –

+0

하지만 그렇게 어렵지는 않습니다. 설명서에 잘 설명되어 있습니다. 왜 반복해야합니까? 어쨌든 간단히 말해서 형식에 어떤 것도 적용하지 않으며 변환시 모델 이름을 사용하고 그 다음에 특성 이름을 더 자세히 써야합니다. 보다 구체적인 예가 필요합니까? – nathanvda

2

먼저, docs, 특히 파트 3을 먼저 살펴 보겠습니다. 활성 레코드 모델을 기반으로하는 양식의 경우 레일스에 사용자 정의 내장 지원이 있습니다 (문서의 4.6 부분 참조). 예를 들어, "자동차"이외로 Car 모델 이름을 번역, 당신이 할 수 있습니다 :

# config/locales/en.yml 
en: 
    activerecord: 
    models: 
     car: 
     one: Automobile 
     other: Automobiles 

(대체를 국제화를 지원하기 위해 선택의 여지가 귀하의 언어.)

을하지만, 국제화를 사용하는 일반적으로 레일즈가 제공하는 translate 메서드를 호출합니다 (축약은 t). 예 :

= simple_form_for :cars, {url: cars_path, method: :get} do |f| 
    .. 
    = f.label t('forms.car_class') 
    = f.input :car_class, collection: CarClass.all.map { |c| [c.name, c.id] }, include_blank: true 
    .. 
    = f.submit 

# config/locales/en.yml 

en: 
    forms: 
    car_class: 'Automobile' 

'Automobile'이라는 텍스트로 라벨을 렌더링합니다.