语言与文化之间的困惑! :(
Posted
技术标签:
【中文标题】语言与文化之间的困惑! :(【英文标题】:Confused between Language & Culture! :( 【发布时间】:2010-07-15 11:03:05 【问题描述】:我反复对 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
是否有其他方法可以根据用户的语言访问“名称”? 还是我需要为每个模型编写自定义查询?
问题是因为自动增量关闭,还是因为我使用了一个包?
非常感谢!
【问题讨论】:
您是否也将 sf_default_culture 设置为 en_US? 【参考方案1】:发现了这个:一个非常乏味且成本高昂的方法,但有效:
$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');
【讨论】:
以上是关于语言与文化之间的困惑! :(的主要内容,如果未能解决你的问题,请参考以下文章