2010-08-16 4 views
3

현재 응용 프로그램은 완전한 영어 번역을 가지고 있지만 추가 언어가 완전히 구현되었는지 확인할 수는 없습니다. 레일 i18n 기본값은

에는 (이 예에서) 독일어 일이없는 translation_missing 경고로 또는 오히려 문자열 "드, 설치, 단계, 언어"

가 있는가 경우에 영어 번역을 사용하여 레일을 말할 수있는 방법처럼 결과 ?

답변

2

는 좋은 제안입니다. 내 것은 좀 더 단순하다. 예를 들어, 독일어 리소스 파일을 만들 때 영어 파일에 접근하여 번역자에게 전달하는 것이 한 가지 방법입니다. 그들이 번역하지 않는 것이면 영어로만 존재합니다. 그렇다면이 문제는 전혀 없습니다. 이 방법을 사용할 때의 또 다른 장점은 파일을 완전히 번역 할 때 거대한 검색을 수행 할 필요가없고 누락 된 문자열을 추가 할 때 비교할 필요가 없다는 점입니다.

3

우리는 config/initializers/i18n.rb이 있습니다 : 그것은 디자인에 의해, 다시 개발에 떨어지지 않을

module I18n 
    # For MissingTranslationData, fall back to the default locale and then to the last key. 
    # For other exceptions, use the default_exception_handler. 
    def self.fallback_exception_handler(exception, locale, key, options) 
    options ||= {} 
    if !Rails.env.development? && exception.is_a?(MissingTranslationData) 
     if locale == self.default_locale 
     send(:normalize_translation_keys, locale, key, options[:scope]).last.to_s 
     else 
     self.t(key, options.merge(:locale => self.default_locale)) 
     end 
    else 
     send :default_exception_handler, exception, locale, key, options 
    end 
    end 

end 

I18n.exception_handler = :fallback_exception_handler 

하는 것으로 (그래서 당신은 실종 번역 통지).

또한 레일 2 앱입니다. 나는 fallback exception handling이 Rails 3에서 다소 바뀌 었다고 생각한다.

+0

대단한 의견! 고맙습니다! +1 – Tilo

1

나는 NinjaCat에 동의한다. 그리고 헨릭의 솔루션은 매우 유망 해 보인다 +1!

번역자가 쉽게 찾을 수 있도록 +++와 같은 표식을 사용하여 새로운 '누락 된'번역본 ('de'파일에 영어로 표시됨)을 표시하는 것이 유용하다는 것을 알았습니다. - 효과적으로 할 수있는이 방법을

당신이 레일은 국제화 백엔드에 조회하려고하는 키를 출력하기 위해, 개발 모드에서 I18N 백엔드에서 조회 메소드를 오버라이드 (override) 할 수 있습니다

여기에 추가 팁입니다 당신이 코드에 넣은 I18N 키가 실제로 있어야한다고 생각하는 위치의 백엔드에서 실제로 찾은 개발 모드에서 다시 확인하십시오. (번역 문자열이있는 몇 가지 사례를 꽤 보았습니다. L10N 파일이지만 잘못된 키가있는 경우이 방법이 도움이됩니다.

http://unixgods.org/~tilo/Rails/where_is_Rails_trying_to_lookup_L10N_strings.html

은 참조 :이 작업을 수행하는 비교적 간단한 방법이 있습니다

Rails/I18n: default scope

1

이 이미 : 그냥 폴백 (fallback) 백엔드를 사용하는 국제화 보석을 구성 경우!

레일즈는 개발 중에 "번역 누락"만 출력합니다.

생산 모드에서 레일스는 사용자가 요청한 것과 정확히 일치합니다. config/application.rb에 지정된 기본 로캘에서 변환합니다.

관련 문제