symfony i18n objects(Doctrine)获得特定的文化

时间:2013-02-20 19:01:51

标签: php internationalization doctrine symfony-1.4

我遇到一个问题,我无法从我的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 }

2 个答案:

答案 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。