복붙노트

[RUBY-ON-RAILS] 번역이없는 경우 기본 언어로 다시 가을

RUBY-ON-RAILS

번역이없는 경우 기본 언어로 다시 가을

국제화 레일 (2.3.5) 응용 프로그램에서, 내가 대신 "없는 번역"의 기본 로케일에서 번역을 보여주고 싶습니다 - 그것을위한 티켓이있다하지만 여전히 대기중인 것 같다 :

https://rails.lighthouseapp.com/projects/8994/tickets/2637-patch-i18n-look-up-a-translation-with-the-default-locale-when-its-missed-with-another-specific-locale

예를 들어 두 개의 변환 파일 (티켓에서 가져온), en.yml 및 es.yml :

en:

  hello: 'hello'

  hello_world: 'hello world'



es:

  hello_world: 'hola mundo'

이 코드를 실행하면 :

I18n.t :hello, :locale => :es

반환 "안녕하세요"대신 "번역 누락"과 범위를 레일.

티켓이 아직 보류함에 따라, 어떻게이 기능을 구현할 수? 나는 통해 이동 내 I18n.t은이 호출을 모두 변경할 수 있습니다 알고 : 기본 옵션을하지만, 차라리 내가 그것을 피할 수 있다면 모든 뷰를 통해 갈 필요가 없습니다 것입니다! 이 패치의로서, 나는 냉동 보석 레일에 그것을 적용 할 수있는 생각,하지만 난 오히려 그 경우에 내가 할 수있는 피할 것.

해결법

  1. ==============================

    1.당신은 당신이 최신 국제화 보석을 사용하도록 제공 레일 2를 사용하는 경우, 이니셜이 추가 :

    당신은 당신이 최신 국제화 보석을 사용하도록 제공 레일 2를 사용하는 경우, 이니셜이 추가 :

    I18n.backend.class.send(:include, I18n::Backend::Fallbacks)
    

    그럼 당신은이처럼 폴백 (fallback)을 추가 할 수 있습니다 :

    I18n.fallbacks.map('es' => 'en')
    
  2. ==============================

    2.Nowdays가 별도의 국제화 보석을 사용하지 않아도, 일반 레일 3.0.6과 (5.0 포함) 설치 위에 없습니다 값은 다음 중 하나 일 수 있습니다 폴백 (fallback) :

    Nowdays가 별도의 국제화 보석을 사용하지 않아도, 일반 레일 3.0.6과 (5.0 포함) 설치 위에 없습니다 값은 다음 중 하나 일 수 있습니다 폴백 (fallback) :

    # application.rb
    
    # rails will fallback to config.i18n.default_locale translation
    config.i18n.fallbacks = true
    
    # rails will fallback to en, no matter what is set as config.i18n.default_locale
    config.i18n.fallbacks = [:en]
    
    # fallbacks value can also be a hash - a map of fallbacks if you will
    # missing translations of es and fr languages will fallback to english
    # missing translations in german will fallback to french ('de' => 'fr')
    config.i18n.fallbacks = {'es' => 'en', 'fr' => 'en', 'de' => 'fr'}
    
  3. ==============================

    3.(. 예를 들어 application.rb) 내가 가장 쉬운 방법은 당신의 설정 파일에 이것을 추가하는 것입니다 생각 :

    (. 예를 들어 application.rb) 내가 가장 쉬운 방법은 당신의 설정 파일에 이것을 추가하는 것입니다 생각 :

     config.i18n.fallbacks = true
    

    그들은 자동으로 로케일 엔으로 폴백 수 있기 때문에 등 EN-US, EN-CA, 같은 지역 로케일에 매우 유용합니다.

    지미가 지적한 것처럼, 당신도 함께 대체 메커니즘을 변경할 수 있습니다 :

    I18n.fallbacks.map('es' => 'en')
    
  4. from https://stackoverflow.com/questions/2324398/fall-back-to-default-language-if-translation-missing by cc-by-sa and MIT license