4

나는 Greetious를 Rails 3을 사용하여 실행하려고 시도하고 있지만 크로스가 문제가되었습니다.로케일 파일에서 도우미 메서드를 사용합니까?

이 줄이 보입니다.

<p><%= t("views.commits.message").call(self, tree_path(@commit.id)) %></p> 

해당 로케일 라인은,이 다른 사람에 의해 호출되고있어, 람다 방법은 뷰 #call 사용하여 호출하고 있지 않은지이며 여기 [config/locales/en.rb]

:message => lambda { |this, path| "This is the initial commit in this repository, " + 
     this.link_to("browse the initial tree state", path) + "." } 

문제 같다 이는 thisself이 아닌 것을 의미합니다.

thisviews.commits.messagepath{:rescue_format=>:html}을 포함한다. Gitorious 팀은 응용 프로그램 전체에서이 접근법을 사용했습니다. 즉, 양식 작업을하지 않고도 논리를 도우미 메서드로 옮길 수는 없습니다.

몇 가지 조사를했고 정확한 행에 대해 this 스레드를 발견했습니다.

이것은 문제의 원인입니다.

이것은 시스템에 i18n 보석이 설치되어 있음을 나타냅니다. 이 보석은 Gitorious와 호환되지 않습니다. Rubygems로 제거하면 문제가 해결됩니다.

i18n을 제거하려고 시도했지만 bundle install을 실행하면 다시 설치됩니다.

리팩터없이 700 줄 로케일 파일을 어떻게 해결해야합니까?

+1

의 링크를 보간 할 수 있습니까? link_to를 사용할 수 있도록 번역에 현재 컨텍스트를 전달하는 것은 다소 미친 짓입니다! – tigrish

+0

응용 프로그램의 모든't' 호출을 변경하는 것은 현실적이지 않습니다. – Oleander

+0

** 모든 **'t' 호출은 생각할 수 없습니다. 단지 링크가있는 호출 일뿐입니다. : % = t : 'views.commits.message, : link => link_to (t ('views.commits.link '), : path => tree_path (@ commit.id) 다음과 같이 간단 할 수 있습니다 : <)) %> 다음 로케일 파일 : 는 엉 : 전망 : 커밋 : 메시지 : 링크 "이것은 초기이 저장소에, % {링크} 커밋이다": "초기 트리 상태를 찾아 " – tigrish

답변

1

이것은 복잡한 중첩 된 텍스트 조각을 나누는 일반적인 문제입니다.

를 단순화하기 위해 가격 인하를 사용

This is the initial commit in this repository 
[browse the initial tree state](http://example.com/some/path) 
. 

아마도 중국어 대신 우리는 3 가지를 고려해야합니다

这是第一个提交在这个知识库 
[看初始状态](http://example.com/some/path) 
。 

을 말할 것입니다;

  1. 외부 텍스트
  2. 링크 텍스트

의 순서와 위치 텍스트 그다지 링크의 위치가 @WattsInABox 정확한 그리고, 변경이 필요한 경우 .

views.commits.message: "This is the initial commit in this repository" 
views.commits.browse: "browse the initial tree state" 

이 경우 우리는 더 많은 영리를 시도 할 수 있습니다, 우리는 단지

<p> 
    <%= t "views.commits.message" %> 
    <%= link_to t("views.commits.browse"), tree_path(@commit.id) %> 
    . 
</p> 

을 구성하지만 가끔은 순서와 위치는 중요하지 않습니다.

views.commits.message: "This is the initial commit in this repository %{link}" 
views.commits.browse: "browse the initial tree state" 

그런 다음 우리는 당신이 더 "표준"전화 I18n.t 수 있도록보기를 변경할 수있는 적절한 장소

<p> 
    <%= t "views.commits.message", link: link_to(t("views.commits.browse"), tree_path(@commit.id)) %> 
</p> 
+2

나는이 질문이 1 년 된 것을 알고 있지만 대답 할만한 가치가 있다고 느꼈다. –

관련 문제