2009-10-27 6 views
1

나는 다음과 같은 도메인이 작은 Grails 애플리케이션이있다. 예를 들어 영어 사용자는 name = "Steak"을 볼 수 있지만 스페인 사용자는 출력에서 ​​name = "Filete"를보아야합니다. 나는 다음과 같은 일을 생각하고 있었는데 :현지화 데이터베이스 문자열

class Language { 
    String isoCode 
    String languageName 
} 

class TranslatedString { 
    Language language 
    String translation 
} 

을하지만 난 그게 3 명에 사용되는 것과 TranslatedStrings과 함께 식사를 연결하는 방법을 잘 모르겠습니다, 또한 내가 다른 클래스 (단지 식사를 위해 그것을 사용하고 싶습니다) (또는 MealNameTranslated, MealDescriptionTranslated, etc 테이블과 같은 분리 된 테이블이 필요합니까?). 나는 이것이 아마 바보 같은 질문입니다 알지만, 초보자 오전 :-(이 알아낼 수 없었다

+0

내 대답에 대한 의견을 말씀해 주셔서 감사합니다. 내가 찾던 것이 아니기 때문에 나는 그것을 삭제했다. 명확하게 설명하기 위해 주석에 포함 된 예를 질문 자체에 넣을 수 있습니다. –

+0

감사합니다. 예제를 추가했습니다 (steak-> filete) – Steve

답변

1

알 수있는 방법이 없기 때문에 귀하의 TranslatedString 클래스는 완료되지 않은 그것이 무엇인지. 당신이 필요로의 번역은 문자열 식별자의 어떤 종류를 제공 여기에 또 하나의 엔티티해야합니다 :.

// object/record identity is used as key 
class StringKey { 
    String keyName // purely descriptive, not actually used at runtime 
} 

class TranslatedString { 
    // the following 2 form a primary key 
    StringKey key 
    Language language 

    String translation 
} 

class Meal { 
    StringKey name 
    StringKey description 
    StringKey allergyNote 
} 

이 그럼 당신은 translation 주어진 keylanguage를 찾아 볼 수 있습니다

+0

감사합니다. 내 문제의 다른 부분에 관해서는 : 식사를 삭제하면 이상적으로 번역 된 문자열도 제거해야합니다. 그러나 내가 식사보다 다른 객체에 대해 StringKey/TranslatedString을 사용하면 sime "static belongsTo"(아마)가 작동하지 않습니다 ... – Steve

1

당신은 또한 article on Graeme Rocher's blog을 확인해야합니다 (그는 머리 이 기사에서는 표준 정적 Grails i18n 변환 특성 파일을 데이터베이스로 이동하는 방법을 설명합니다. 캐싱 지원도 포함됩니다.

관련 문제