我反复混淆语言和语言Symfony的文化。 - 我将文化设置为(en_US)我认为是正确的 - 但是为语言创建了翻译文件(en) - 另外,在数据库中使用翻译时,lang = 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时,我什么也得不到。当我检查查询时,我发现总共会触发3个查询。
1) to get refObj
2) to get Option
3) to get Translation
但真正的问题是,对于3,查询中没有语言参数。
我想知道如何获得翻译后的名字? sf_culture的当前值:en_US
是否有其他方法可以根据用户的语言访问“名称”? 或者我是否需要在每个模型上编写自定义查询?
问题是因为自动增量为OFF,还是因为Im使用了包?
非常感谢!
答案 0 :(得分: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');