2010-07-15 109 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');