0

我遇到了无法从 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 }
4

2 回答 2

1
$this->Translation['fr']->getName()

或者:

$translations = $this->getTranslations();
$translations['fr']->getName();
于 2013-02-21T07:47:32.867 回答
0

这与您的其他问题几乎相同,请使用:

$object->Translation['fr']->name;
$object->Translation['en']->name;
$object->Translation['it']->name;
// etc ...

我引用我在另一个问题上发表的评论:

->getName()如果您直接使用对象,则可以使用,例如 $object->getName(). 但是如果你点击 Translation 关系,我从不使用 getter 来检索值。

顺便说一句,我不记得我们可以将它$object->getName('fr');与 sf1.0 一起使用。

于 2013-02-22T16:16:09.337 回答