2

I18n에 문제가 있습니다. 나는이 저장소에서이 예제 파일 중 하나로 번역을 찾을 수 없습니다I18n으로 ActionController 오류 메시지 번역

The action '...' could not be found for ...Controller 

같은 ActionController 오류 메시지를 번역 할 수있는 올바른 방법을 찾을 수 없습니다 : https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml

나는 검증을위한 해결책을 발견 오류 등이 있지만 이런 종류의 오류는 아닙니다.

이러한 종류의 오류 메시지를 I18n 파일로 변환 할 수 있습니까?

업데이트 : 사용자에게 표시되기 때문에 번역하고 싶습니다. http://railscasts.com/episodes/53-handling-exceptions-revised

모든 예외가 대신 구성 middelware 통해 railsapp 자체에 의해 처리됩니다 :이 railscast처럼 그것을했다

config.exceptions_app = self.routes 

그리고 하나의 액션으로 라우팅 모든 예외 :

match '(errors)/:status', to: 'errors#show', constraints: {status: /\d{3}/} # via: :all 

오류 메시지는 변수에 의해 사용됩니다.

def show 
    @exception = env["action_dispatch.exception"] 
    respond_to do |format| 
    format.html { render action: request.path[1..-1] } 
    format.json { render json: {status: request.path[1..-1], error: @exception.message} } 
    end 
end 
,515,

이 변수는 다음 제조 도면에 도시되어

<h1>Forbidden.</h1> 
<% if @exception %> 
    <p><%= @exception.message %></p> 
<% else %> 
    <p>You are not authorized to perform that action.</p> 
<% end %> 

이제 에러 메시지는 동적이다. 사용자가 잘못된 정보와 특정 오류를 피하기 위해 어떻게 행동해야하는지에 대한 정보를 더 많이 얻을 수 있기 때문에 일반적으로 좋은 일이라고 생각합니다. 그러나 그것은 너무 많은 정보입니다. 예를 들어 내가보기를 원하지 않습니다. 어떤 컨트롤러가 그 행동을 처리 했는가. 따라서 나는 오류 메시지를보다 안전한 변종으로 "번역"하고 싶다.

+2

왜이 오류를 번역 하시겠습니까? 그들은 단지 개발 용입니다. 응용 프로그램을 프로덕션 모드로 실행하면이 오류는 505 또는 404 페이지로 대체되고 최종 사용자는이를 볼 수 없습니다. –

+0

사용자에게 표시되기 때문에 번역하고 싶습니다. 나는이 railscast에서 Ryan Bates와 같은 일을했다 : http://railscasts.com/episodes/53-handling-exceptions-revised, 모든 오류는 하나의 행동으로 전달된다. 나는이 정보로 나의 질문을 업데이트 할 것이다. – coderuby

답변

1

I18n 번역의 키로 예외 클래스 이름을 사용할 수 있습니다. 그런 식으로 예외 클래스 이름 (기본적으로 예외가 무엇인지)을 사용하여 키 - 값 쌍을 파일에 포함시킨 다음 해당 예외에 대해 자신의 단어를 사용할 수 있습니다.

I18n.t(@exception.class.name.underscore, default: "Generic Error") 
+0

조치를 취하는 방법을 알고 있습니까? " URL을 찾을 수 없습니다"라고 표시 할 수 있습니까? – coderuby

+1

정규식을 사용하여 예외 메시지를 구문 분석하는 것이 가장 좋습니다. –