Php symfony i18n对象(原则)获得特定文化

Php symfony i18n对象(原则)获得特定文化,php,internationalization,doctrine,symfony-1.4,Php,Internationalization,Doctrine,Symfony 1.4,我遇到了一个问题,无法从我的i18n条令对象中检索特定的翻译。如果我调用$object->getName()我按预期获取当前区域性中的名称。但是,如果我希望在不切换用户文化的情况下检索特定的翻译$object->getName('fr')在本例中,我仍然使用当前文化而不是法语。这$object->getTranslation()->fr->name确实有效。我做错了什么?不是$object->getName($culture)执行此操作的正确方法 以下是我的模式的相关部分,如果有帮助的话: Ob

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

$translations = $this->getTranslations();
$translations['fr']->getName();

这与上的问题几乎相同,请使用:

我引用我对另一个问题的评论:

->getName()
如果您在对象目录上,则可以工作,如
$object->getName()
。但是如果你碰到了翻译关系,我永远不会 使用getter检索值


顺便说一下,我不记得我们可以使用这个
$object->getName('fr')与sf1.0兼容。

同样是$object->getName('fr');symfony 1.0方式?我的印象是这应该也适用于1.4。好的,我必须有一些设置错误。。。当我尝试您的第一个解决方案时,我得到:未知方法ObjectTranslation::getName。如果我使用->name而不是->getName(),它可以工作。当我尝试您的第二个解决方案时,我得到了:未知记录属性/相关组件“对象”上的“翻译”我以前做这种事情从来没有遇到过任何问题,但我主要在symfony 1.0网站上工作,所以可能我只是错过了一些关键的1.4步骤。
$Object->getName('fr')
是我以前一直使用的方法。。。由于某些原因,在我当前的项目中,它不起作用。引用文档中的话,“因此,基本上,您不必直接处理i18n对象,而是在每次对常规对象进行查询时将区域性传递给模型(或者让它猜测)。”顺便说一句,getter对我来说运行良好,我只是无法指定区域性。嗯,我想我不需要使用这种方法。我只是一直认为这是正确的方法。在我当前的场景中,您的解决方案将起作用,
$object->getTranslation()->fr->name$translations = $this->getTranslations();
$translations['fr']->getName();
$object->Translation['fr']->name;
$object->Translation['en']->name;
$object->Translation['it']->name;
// etc ...