2010-07-15 13 views
1

사이에 반복적으로 혼란스러워합니다. 언어 & 심포니의 문화 - 정확하다고 생각되는 (en_US) 문화권을 설정하고 있습니다. - 번역 파일은 언어 용으로 작성되었습니다. -언어와 문화가 혼동 스럽습니다! :

Option: 
    package: Options 
    tableName: Com_Options 
    actAs: 
    I18n: 
     fields: [name, tooltip] 
    columns: 
    id: 
     type: integer(2) 
     primary: true 
     notnull: true 
     unsigned: true 
#  autoincrement: true 
    name: 
     type: string(50) 
     notnull: true 
     notblank: true 
    tooltip: 
     type: string(100) 
    sequence: 
     type: integer(1) 
     unsigned: true 
     range: [0,255] 

이 클래스는 여러 가지 다른 클래스에 의해 언급 을 나는대로 이름을 인쇄하려고 할 때 :.

엉 = 데이터베이스의 LANG에 번역을 사용할 때 누구의 정의 다음과 같다 모델이 $ refObj-> Option-> Name 아무 것도 얻지 않습니다. 쿼리를 검사 할 때, 3 개의 쿼리가 모두 실행됩니다.

1) to get refObj 
2) to get Option 
3) to get Translation 

하지만 실제 문제는 3에 대해 검색어에 언어 매개 변수가 없다는 것입니다.

나는 그것을 번역 된 이름을 얻는 방법을 궁금해? sf_culture의 현재 가치 : en_US

사용자의 언어에 따라 '이름'에 액세스하는 다른 방법이 있습니까? 또는 모든 모델에 사용자 지정 쿼리를 작성해야합니까?

자동 증가가 꺼져 있거나 패키지를 사용하고있어서 문제가 있습니까?

고마워요!

+0

** sf_default_culture **를 en_US로 설정 했습니까? –

+0

예, en_US로 설정 됨 – Prasad

답변

0

찾을 수이 : 매우 지루한 & 비용이 많이 드는 방법,하지만 작동 :

$class->relation->Translation[$lang]->property 

당신이 XLIFF 파일을 사용하는 경우, 당신은 문화를 전달할 필요가 없습니다

$q = Table::getInstance()->createQuery('a') 
     ->select('a.id, t.name') 
     ->leftJoin('a.Translation t') 
     ->where('t.lang = ?', $lang); 
return $q->execute(array(), Doctrine::HYDRATE_NONE); 

데이터베이스에서 직접 읽을하고자하는 경우/언어

__('text which is translated in the XLIFF for user\'s culture');