Localization 把语言和文化搞混了!:(
在Symfony中,我一再混淆语言和文化。 -我将文化设定为en_US,我想这是正确的 -但是翻译文件是为一种语言创建的 -此外,在数据库中使用翻译时,lang=en 我有一个模型,其定义如下:Localization 把语言和文化搞混了!:(,localization,symfony1,doctrine,internationalization,Localization,Symfony1,Doctrine,Internationalization,在Symfony中,我一再混淆语言和文化。 -我将文化设定为en_US,我想这是正确的 -但是翻译文件是为一种语言创建的 -此外,在数据库中使用翻译时,lang=en 我有一个模型,其定义如下: Option: package: Options tableName: Com_Options actAs: I18n: fields: [name, tooltip] columns: id: type: integer(2) pri
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]
这个类被其他几个类引用。
当我尝试将名称打印为$REOBJ->Option->name时,我什么也得不到。当我检查查询时,我看到总共触发了3个查询
1) to get refObj
2) to get Option
3) to get Translation
但真正的问题是,对于3,查询中没有语言参数
我想知道它将如何得到翻译的名字?sf_文化的当前价值:en_US
是否有其他方式根据用户的语言访问“名称”?
还是需要对每个模型编写自定义查询
问题是因为autoincrement已关闭,还是因为我正在使用软件包
非常感谢!发现这是一种非常乏味且成本高昂的方法,但有效:
$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');
您是否也将sf_默认文化设置为en_US?