2012-01-18 6 views
1

저는 Globalize3를 사용하여 제가 만들고있는 프로젝트에서 모델을 번역하기를 원했습니다. 그러나, 그것을 밖으로 시도하는 것이 각 모델처럼 보이는 말 Post 같은 :Globalize3에서 동일한 문자열에 대해 중복 번역이 필요합니까?

class Post < ActiveRecord::Base 
    translates :title, :body 
end 

제목이 이미 번역 된 동일한 경우에도 제목이 여러 번 번역해야한다는 점에서 다른 게시물에서 완전히 독립 될 것입니다 하나. 나는. 시스템은 이미 그것이 있어야한다는 것을 알고 있습니다.

대부분의 경우 문자열이 고유하므로이 점이 문제가되지 않지만 색상 속성이있는 자동차 모델을 상상해보십시오. 시스템에 동일한 색상의 자동차가 수백 개있는 경우 색상을 여러 번 번역해야합니까? 한 번만 번역하면 문자열이 동일하면 모두 동일한 번역을 사용할 수 있습니다.

내가 잘못 이해했거나 실제로 이것이 Globalize3의 작동 방식입니까? 그렇다면 블로그와 같이 문자열이 고유 할 때 주로 적합합니다.

내가 원했던 보석이 있습니까?

도움 주셔서 감사합니다.

답변

2

기본적으로 Globalize가 작동하는 방식으로 각 모델 레코드의 속성이 변환되어 번역 레코드에 저장됩니다.

테이블을 정규화하면 문제가 해결 될 수 있으므로 색상 자체가 모델이되며 번역하면됩니다.

나는 그렇게하지 않을 것이고, 나는 당신의 시나리오에 대한 어떤 보석도 모른다. 대신 다음을 수행합니다.

대신 RGB 값을 저장하고 컨트롤러에서 색상 이름으로 변환합니다. 그런 다음 레일스 i18n 모듈을 사용하여 변환 할 수 있습니다.

또는 위의 변형, 당신은 t("color.#{car.color.parameterize}")처럼, 국제화 키로 색 이름을 사용하고 en.yml에, 그것은 당신이 쉽게 피할 수없는 문제입니다

en: 
    color: 
    dark-blue: 'Dark Blue' 
0

이 문자열 경우 번역 할 때 "표준"이라면 lulalala (해당 정보 모델)가 제안한 솔루션을 사용할 수 있습니다.

나는 레일스와 같지 않지만 비슷한 문제가있다. 그리고 우리는 복제 된 내용을 주기적으로 그리고 자동적으로 번역하는 작업으로 "고정"했다.

관련 문제