2010-07-15 108 views
1

我一再混淆語言&文化在Symfony - 我將文化設置爲(en_US),我想這是正確的 - 但翻譯文件是創建一種語言(en) - 也,在數據庫中,郎使用翻譯時= EN語言與文化混淆! (

我有其定義如下模型:

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] 

此類由其他幾類 當我嘗試打印的名字被稱爲。 $ refObj-> Option-> Name我什麼也沒有得到,當我檢查查詢時,我看到了th在3個查詢全部被解僱。

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

但真正的問題是,對於3,查詢中沒有語言參數。

我不知道它是如何讓翻譯叫什麼名字? sf_culture的當前值:en_US

是否有另一種方法根據用戶的語言訪問「名稱」? 或者我需要在每個模型上編寫自定義查詢嗎?

問題是因爲autoincrement爲OFF,還是因爲Im使用包?

非常感謝!

+0

你也有** sf_default_culture **設置爲en_US嗎? – 2010-07-15 15:36:52

+0

是的,它的設置爲en_US – Prasad 2010-07-17 03:46:36

回答

0

發現這一點:一個非常繁瑣&昂貴的方法,但工程:

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

如果您想直接從數據庫中讀取

$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); 

如果使用XLIFF文件,可以不傳遞文化/語言

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