我遇到一个问题,我无法从我的i18n教条对象中检索特定的翻译。如果我拨打$object->getName();
,我会按预期在当前文化中获得该名称。但是,如果我希望在不切换用户文化的情况下检索特定翻译... $object->getName('fr');
在此示例中,我仍然可以获得当前文化而不是法语。这个$object->getTranslation()->fr->name;
确实有效。我究竟做错了什么?不是$object->getName($culture);
正确的方法吗?
以下是我的架构的相关部分,如果它有用:
Object:
actAs:
Timestampable: ~
I18n:
fields: [name, description]
columns:
name: { type: string(255), notnull: true }
description: { type: string(1000) }
user_id: { type: integer }
relations:
User: { class: sfGuardUser, local: user_id, foreign: id, type: one, foreignType: many, foreignAlias: Objects }
答案 0 :(得分:1)
$this->Translation['fr']->getName()
或者:
$translations = $this->getTranslations();
$translations['fr']->getName();
答案 1 :(得分:0)
这与your other question几乎相同,使用:
$object->Translation['fr']->name;
$object->Translation['en']->name;
$object->Translation['it']->name;
// etc ...
我引用我在另一个问题上发表的评论:
如果您在对象direclty上,
->getName()
可以正常工作$object->getName()
。但如果你达到翻译关系,我永远不会 使用getter来检索值。
顺便说一句,我不记得我们可以将这个$object->getName('fr');
用于sf1.0。